Цитата:
|
Poznakomlus, наркоман, хватит через переводчик разговаривать.
Кстати пасоны, какой самый короткий и красивый способ получить глобальный обьект? пока остановился на этом
eval("this")
но не надежно,
(function(){return this}())
куда надежнее |
Maxmaxmaximus6, опять ты, троллинг не защитан.
<sarcasm>Самый надежный способ, работает 100%
(function(){ "use strict"; return this}());
"use strict" - это что бы быстрей работало, не обращай внимание, оптимизация такая.</sarcasm> |
много миллисекунд сэкономит?
cyber, кстати я переписываю ядро ui =) теперь не будет классов будут только прототипы) будет один обьект главный модуль и у него будут ресурсы. можно создавать модули наследники которые будут наследовать ресурсы. короче крутотень такая что словами не передать. и главное и труъ и логично и можно даже код в функцию не оборачивать. круть |
Гениально) ведь класс нужен когда мы будем несколько однотипных обектов создавать) но млять зачем нам тут это, я там парился с наследованием parent вон в конструкторпередавал, лол ПРОТОТИПЫ!!
ТО ЧТО НУЖНО! ![]() Цитата:
|
Стоп, ты реально воспринял серьезно про "use strict" ?
Ты мне реально настроение поднял :lol: :lol: :lol: при использование "use strict" по умолчанию у функций this === undefined. |
Цитата:
если сократить код всей моей либы то это:
adddEventListener('DOMContentLoaded', function(){
ui.init()
})
var ui = {
/* */
}
ui.directive('name', function(){ /**/ })
ui.directive('trololo', function(){ /**/ })
ui.service('$qqff', function(){ /**/ })
охуенно? я как бы вывернул все на изнанку и там все на столько охуительно что не потребовалось ни чо за собой убирать теперь даже в функцию все оборачивать не обязательно, а все ядро распихано по сервисам и директивам и прочему, при чем к этому доступ имеют и пользователи =) то есть нет больше "под капотом" и "над капотом", теперь ВСЁ над капотом) |
Maxmaxmaximus6, насчет переменных, если перменные только для внутреннего использование то в название добавляют $ и $$, или это только для событий? http://habrahabr.ru/post/201832/
|
Цитата:
void function () {
'use strict';
alert(this === 100500);
}
.call(100500);
|
cyber, $$ это то что пользователю запрещено трогать
$ это то что пользователю можно и нужно трогать но в служебных целях для управления функциями ангуляра. почему они используют баксы а не _? чтобы пользователь мог _ использовать =) очевидно же. Цитата:
monolithed, круто круто я придумал сделать)? описать все как обьект. оцени как батька. |
monolithed, по умолчанию я имел ввиду без вызова call, apply, bind..)
|
Я тут grunt ковыряю, не могу понять про подключение модуля, путь к чему прописывать нужно?
grunt.loadNpmTasks('grunt-contrib-compress');
Везде путь прописан как выше, что не так? Устанавливал так Цитата:
Цитата:
|
ну вот мой рабочий грант.
module.exports = function(grunt) {
grunt.initConfig({
pkg : grunt.file.readJSON('package.json'),
concat: {
options: {
banner : '/* <%=pkg.name%> <%=pkg.version%> ' +
'by Maxmaxmaximus (build <%=grunt.template.today("yyyy.mm.dd")%>) */\n\n',
separator: '\n\n\n'
},
build : {
src : ['src/intro.js', 'src/core/*', 'src/index.js', 'src/ui/*/*.js', 'src/outro.js'],
dest: 'build/<%= pkg.name %>.js'
}
},
uglify: {
options: {
banner: '/* <%=pkg.name%> min <%=pkg.version%> ' +
'by Maxmaxmaximus (build <%=grunt.template.today("yyyy.mm.dd")%>) */\n\n'
},
build : {
src : 'build/<%= pkg.name %>.js',
dest: 'build/<%= pkg.name %>.min.js'
}
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default', ['concat', 'uglify']);
};
|
Кстати, оцените НОВЫЙ стайл ui :thanks:
var ui = window['ui'] = {
name : 'ui',
children : {},
filters : {},
services : {},
directives : {},
animations : {},
controllers: {},
init: function(element) {
var $compile = this.service('$compile');
var $scope = this.service('$scope');
$compile(element)($scope);
},
module: function(name) {
},
directive: function(name, factory) {
},
service: function(name, factory) {
return this.resource('services', name, factory);
},
filter: function(name, factory) {
return this.resource('filters', name, factory);
},
animation: function(name, factory) {
return this.resource('animations', name, factory);
},
controller: function(name, controller) {
var $parseController = this.service('$parseController');
if (controller) {
this.controllers[name] = $parseController(controller);
return this;
}
var controller = this.controllers[name];
if (!controller) {
controller = $parseController(window[name]);
}
return controller;
},
invoke: function(func, context, locals) {
var self = this;
if (!locals) {
locals = {}
}
if (isArray(func)) {
var inject = func.slice();
func = inject.pop();
func['$inject'] = inject;
}
if (!func['$inject']) {
var params = func.toString().match(/\(([\s\S]*?)\)/)[1].match(/[\w$]+/img) || [];
func['$inject'] = params;
}
locals['$module'] = this;
var services = func['$inject'].map(function(injectName) {
return locals[injectName] || self.service(injectName);
});
return func.apply(context, services);
},
instantiate: function(func, locals) {
var instance = Object.create(func.prototype);
var returns = this.invoke(func, instance, locals);
if (isObject(returns)) {
instance = returns;
}
return instance;
},
resource: function(type, name, factory) {
if (factory) {
var resource = {
factory : factory,
instance: null
};
this[type][name] = resource;
return this;
}
var resource = this[type][name];
if (!resource) return null;
var instance = resource.instance;
if (!instance) {
var instance = this.invoke(resource.factory) || null;
resource.instance = instance;
}
return instance;
}
};
|
НЕ НУ ВЫ ПОСМОТРИТЕ КАК ЭТО КРУТО А!! КОГДА ВСЕ РАСПИСЫВАЕШЬ ТАК ПРИЯТНО!111
![]() |
Цитата:
|
Цитата:
|
И что вот на счет этого скажете? то что я тут написал не
if(module) return module а именно вот так ![]() по моему так более логично и очевидно, да? типа если нет модуля, то быстренько создать, если есть то вернуть. |
Цитата:
Но ты большинство своих откровений называешь гениальными и ведешь себя как какой-то гипервозбужденный торчок на волне прихода. Нет, с точки зрения программиста, этого я не понимаю. :D Цитата:
|
как будто что-то плохое)
|
Цитата:
Путь нужно прописывать к node пакету-таска, т.е. как правило нужно написать, только имя таска и поиск будет искаться по node_modules. Создай package.json и опиши там нужные зависисимости, вроде:
{
"name": "myproject",
"dependencies": {
"grunt-cli": ">=0.1",
"grunt": ">=0.4",
"grunt-csso": ">=0.5"
}
}
после в этой папке, где создал файл, сделай npm i, затем создай Gruntfile.js и всё PS: http://habrahabr.ru/post/133363/ |
Вот короче готовое ядро, оцените код? Лучше стало?
var ui = window['ui'] = {
name : 'ui',
children : {},
filters : {},
services : {},
directives : {},
animations : {},
controllers: {},
init: function(element) {
var $compile = this.service('$compile');
var $scope = this.service('$scope');
$compile(element)($scope);
},
module: function(name) {
var children = this.children;
var module = children[name];
if (!module) {
module = Object.create(this);
module.name = name;
module.children = {};
module.filters = Object.create(this.filters);
module.services = Object.create(this.services);
module.animations = Object.create(this.animations);
module.directives = Object.create(this.directives);
module.controllers = Object.create(this.controllers);
children[name] = module;
}
return module;
},
directive: function(name, factory) {
if (factory) {
return this.resource('directives', name, factory);
}
var directives = this['directives'];
var resource = directives[name];
if (!resource) {
return null;
}
var instance = resource.instance;
if (!instance) {
factory = resource.factory;
instance = this.invoke(factory);
if (isFunction(instance)) {
instance = {
link: instance
};
}
if (!instance.name) {
instance.name = name;
}
if (!instance.priority) {
instance.priority = 0;
}
if (!instance.restrict) {
instance.restrict = 'A';
}
resource.instance = instance;
}
return instance;
},
service: function(name, factory) {
return this.resource('services', name, factory);
},
filter: function(name, factory) {
return this.resource('filters', name, factory);
},
animation: function(name, factory) {
return this.resource('animations', name, factory);
},
controller: function(name, controller) {
var controllers = this.controllers;
var $parseController = this.service('$parseController');
if (controller) {
controllers[name] = $parseController(controller);
return this;
}
controller = controllers[name];
if (!controller) {
controller = $parseController(window[name]);
}
return controller;
},
invoke: function(func, context, locals) {
if (!locals) {
locals = {}
}
if (isArray(func)) {
var inject = func.slice();
func = inject.pop();
func['$inject'] = inject;
}
if (!func['$inject']) {
var params = func.toString().match(/\(([\s\S]*?)\)/)[1].match(/[\w$]+/img);
func['$inject'] = params || [];
}
locals['$module'] = this;
var services = func['$inject'].map(function(injectName) {
return locals[injectName] || this.service(injectName);
}.bind(this));
return func.apply(context, services);
},
instantiate: function(func, locals) {
var instance = Object.create(func.prototype);
var returns = this.invoke(func, instance, locals);
if (isObject(returns)) {
instance = returns;
}
return instance;
},
resource: function(type, name, factory) {
if (factory) {
var resource = {
factory : factory,
instance: null
};
this[type][name] = resource;
return this;
}
resource = this[type][name];
if (!resource) {
return null;
}
var instance = resource.instance;
if (!instance) {
factory = resource.factory;
instance = this.invoke(factory);
resource.instance = instance;
}
return instance;
}
};
|
<iframe width="420" height="315" src="//www.youtube.com/embed/l9wOxpiwu7Q" frameborder="0" allowfullscreen></iframe> |
nerv_, ну чо с кодом то? норм стайл?
|
Maxmaxmaximus6,
это ни кому не интересно |
kobezzza, спс работает.
Цитата:
|
Цитата:
Цитата:
|
kobezzza, еще вопрос,
//Эти задания будут выполнятся сразу же когда вы в консоли напечатание grunt, и нажмете Enter
grunt.registerTask('default', ['jshint', 'concat']);
т.е пока я не запущу грант из консоли нечего собиреться (просто в консоли винды не видит grunt)? Я просто не могу понять, я не правильно настройки передал или просто проект не собирается. |
Цитата:
npm i -g grunt ЗЫ: кстати, я в винде в качестве консольки юзаю git bash (http://git-scm.com/) |
Цитата:
Цитата:
Цитата:
|
kobezzza, а для него есть оболочка как в убунте?
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
*** Стоп, а как ты до этого запускал? батник что ли какой то хотел завести? |
Цитата:
|
| Часовой пояс GMT +3, время: 11:09. |