Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Сейчас же куда лучше писать в соответствии со стандартом подключая полифилы при необходимости (тем более, что темп развития JS/ES резко, увеличился). Ведь в один прекрасный момент полифилы можно будет убрать, и код без изменений будет работать нативно.
Кстати, RequireJS «реализует» AMD. Какие модули предоставляет ваша библиотека?
TOM.processor.proxy( 'объект', 'имя объекта по которому будут происходить "всплытия" событий' );
TOM.processor.proxy( MyObject, 'MyObject' );Также, как мне кажется, было бы лучше, если бы вы разделили свою библиотеку на три (по функциональности), а не «все в кучу».
Как вообще можно было связать загрузчик и наследование?
newClass = function( )
{
var args = Array.prototype.slice.call( arguments, 1 ),
constructorFullName = ( ( this.__classScopeName__ !== '') ? this.__classScopeName__ + '.' + this.__className__ : this.__className__ ) + '.constructor';
// Дополнительные "костыли" для TOM.processor, которые возволяют определять момент создания класса
----> TOM.processor.signal( 'pre', constructorFullName, this, args );
classConstructor.apply( this, arguments );
----> TOM.processor.signal( 'post', constructorFullName, this, args );
};for-in без hasOwnProperty.Особо порадовал TravisCI, который просто запускает сборку проекта, никаких тесто у либы нет ;]
А их стоило бы написать, даже не вооруженным взглядом в исходниках видно потенциальные баги, просто в банальном for-in без hasOwnProperty.
Ну и главное, посмотрите на реализацию тех же RequireJS или SystemJS, эти ребята про загрузку JS много чего могут поведать: тык, тык и у вас. Загрузка CSS тоже доверия не вызывает.
'{pre или post}-имя функции вызова которой ждём'
pre|post и нормальное имя функции, а лучше ссылка на нее.TOM.processor.bind( 'pre-core.Button.create post-core.TestButton.create', function( ) {} );TOM.processor.bind( 'pre', core.Button.create post-core.TestButton.create, function( ) {} );TOM.processor.bind( {'pre' : core.Button.create, 'post' : core.TestButton.create}, function( ) {} );TOM.processor.bind( {'pre' : [core.Button.create], 'post' : [core.TestButton.create]}, function( ) {} );Примечание: Я знаю что arguments.callee это плохо, и оно не работает в strict mode, но пока удобной замены не придумал.
TOM.js — особая библиотека, для особых случаев
ajaxpect (от AOP) https://github.com/tmp0230/ajaxpect.
TOM.js — особая библиотека, для особых случаев