В прошлой части мы написали небольшую библиотеку, пожожую на require.js и позволяющую загружать AMD-модули. Настало время расширить ее возможности и сделать из нее полноценную замену оригинального require.js. Поэтому сегодня мы реализуем возможность настройки, аналогичную функции require.config()
и поддержку плагинов, чтобы все дополнения к обычному require.js работали и здесь.
Рубрика «велосипеды на javascript»
Переписываем Require.js с использованием Promise. Часть 2
2015-03-13 в 10:30, admin, рубрики: amd, javascript, requirejs, tutorial, Веб-разработка, велосипеды на javascript, модулиПереписываем Require.js с использованием Promise. Часть 1
2015-03-12 в 7:55, admin, рубрики: amd, javascript, requirejs, tutorial, Веб-разработка, велосипеды на javascript, модулиЧтобы не иметь проблем с зависимостями и модулями при большом количестве браузерного javascript, обычно используют require.js. Также многие знают, что это всего лишь один из многих загрузчиков стандарта AMD, и у него есть альтернативы. Но мало кто знает, как они устроены внутри. На самом деле, написать подобный инструмент не сложно, и в этой статье мы шаг за шагом напишем свою версию загрузчика AMD. Заодно разберемся с Promise, который недавно появился в браузерах и поможет нам справиться с асинхронными операциями.
Основой require.js, является функция require(dependencies, callback)
. Первым аргументом передаем список модулей для загрузки, а вторым – функцию, которую вызовут по окончании загрузки, с модулями в аргументах. Используя Promise написать её совсем несложно:
function require(deps, factory) {
return Promise.all(deps.map(function(dependency) {
if(!modules[dependency]) {
modules[dependency] = loadScript(dependency);
}
return modules[dependency];
}).then(function(modules) {
return factory.apply(null, modules);
});
}
Конечно, это еще не всё, но основа есть. Поэтому продолжим.
Читать полностью »