После экспериментов с AMD/RequireJS мне стало интересно, стоит ли загружать модули пользовательского интерфейса, включая шаблоны и CSS, чтобы они были полностью независимы от веб-страницы.
Звучит неплохо, но я не видел, чтобы это было реализовано в дикой природе, так что могут быть подводные камни.
Подумайте о каком-нибудь модуле пользовательского интерфейса со следующей структурой:
myWidget
|--img
|--main.js
|--styles.css
+--template.tpl
Все материалы в одной папке. Выглядит очень красиво.
Модуль в main.js будет выглядеть примерно так:
define(["TemplateEngine", "text!myWidget/template.tpl"], function(TemplateEngine, template) {
// Load CSS (Pseudo Code)
var cssUrl = "myWidget/styles.css";
appendToHead(cssUrl);
return function() {
return {
render: function(data) {
return TemplateEngine.toHtml(template, data);
}
}
}
});
Вопросы теперь:
- Я что-то пропустил?
- Существуют ли какие-либо плагины/концепции, как добиться этого «стандартным» способом?
- Может ли оптимизатор RequireJS обрабатывать часть CSS здесь, скажем, объединять/минимизировать таблицы стилей, как это делается с частями JS?
- Есть мнения по этому поводу? Хорошо или плохо?