RequreJS: 加载包括模板和 CSS 的模块

在使用了 AMD/RequreJS 之后,我想知道加载包括模板和 CSS 的 UI 模块是否是一个好主意,这样它们就完全独立于网页了。

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

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

myWidget
|--img
|--main.js
|--styles.css
+--template.tpl

所有的东西都放在一个文件夹里,看起来很不错。

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. RequreJS 优化器是否能够像处理 JS 部分那样处理 CSS 部分,比如 concat/minify 样式表?
  4. 有什么意见吗? 好的还是坏的?
48998 次浏览

您可以使用文本将模板指定为依赖项!就像你展示的那样。我用胡子模板做的。

但是 Requre.js 不明确支持 css 文件。

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

编辑: 2012年2月。

像把手这样的模板也可以像任何其他 JS 模块一样进行预编译和包含 Http://handlebarsjs.com/precompilation.html

编辑: 2015年8月

如果你想要这种模块化,你应该研究一下 网络包,特别是 Css-loader。我用它来配对。的 css 文件。Jsx 文件作为一个统一的“模块”,并在构建时将相关的 CSS 提取到一个样式表中。

有一个第三方的 CSS 插件似乎工作得很好: https://github.com/VIISON/RequireCSS/