RequireJS:加载包含模板和CSS的模块

玩过AMD / RequireJS之后,我想知道是否加载包括模板和CSS的UI模块是一个好主意,因此它们完全独立于网页。

这听起来很不错,但我还没有看到这在野外实施,所以可能有陷阱。

想想以下结构的一些UI模块:

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); } } } }); 

现在的问题是:

  1. 我错过了什么吗?
  2. 有没有什么插件/概念如何以“标准”的方式来实现?
  3. RequireJS优化器是否能够在这里处理CSS部分,比如像JS部件那样对样式表进行连接/缩小?
  4. 对此有何意见? 是好是坏?

您可以使用文本将模板指定为依赖项! 像你所示的模块。 我用胡须模板做这个。

但是Require.js并没有明确地支持css文件。

这是官方的解释,它的解释很好: http : //requirejs.org/docs/faq-advanced.html#css

编辑:2012年2月。

像handlebars这样的模板也可以被预编译并包含,就像任何其他JS模块一样http://handlebarsjs.com/precompilation.html

编辑:2015年8月

如果你是在这种模块化之后,你应该看看webpack ,特别是css-loader 。 我使用它将.css文件与.jsx文件配对为一个统一的“模块”,并在构build时将相关的CSS提取到单个样式表中。

有一个RequireJS的第三方CSS插件似乎很好用: https : //github.com/VIISON/RequireCSS/ 。