Загрузка модулей Node.Js в браузере

7 Ноя
2011

Технологии развиваются, javascript приобретает все большую популярность. Он стал применяться на на серверной стороне, написано множество модулей для Node.Js. Например шаблонизаторы.
Хотелось бы иметь возможность применять их и на клиентской стороне.

Модули пишутся по определенным правилам, в своем пространстве имен. В этом пространстве имеется предопределенный объект — module. Через него во внешний мир передаются функции и другие объекты.

Например так, кусочек из шаблонизатора haml-js:
if (typeof module !== 'undefined') {
module.exports = Haml;
}


Организовать среду исполнения можно посредством конструктора функции:
var f = new Function('имена аргументов функции', 'текст тела функции'); 


Вот полный текст загрузчика, используем jQuery:
function loadModule(url, onLoad){
// загружаем js-файл
$.ajax({
url: url,
success: function(data) {

// подставляем полученный текст вместо тела функции
var f = new Function('module', data);

var module = {exports:{}};

f.call({}, module); // Запускаем от имени обычного объекта

onLoad(module);
}
});
}

var modules = {};

if(!('Haml' in modules))
{
loadModule('/lib/haml/haml.js', function(module){
modules.Haml = module.exports;
});
}



Надеюсь, что мои изыскания кому-то помогут.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх