css - RequireJS:加载模块,包括模板和 CSS

标签 css requirejs javascript js-amd

<分区>

在玩过 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. 对此有何看法?好还是坏?

最佳答案

您可以使用文本将模板指定为依赖项!像你展示的模块。我使用 Mustache 模板执行此操作。

但是 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 文件作为统一的“模块”配对,并在构建时将相关的 CSS 提取到单个样式表中。

关于css - RequireJS:加载模块,包括模板和 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917639/

相关文章:

javascript - 使用 grunt 设置等待秒数

javascript - 使用幻灯片制作 Bootstrap 轮播控件动画。

c# - 从模式中的部分获取数据元素,用Javascript设置父级中文本框的值?

html - 当我把它放在一个列中时,图像变得非常小

html - 在 rails 上安装 bootstrap 3 后的文本域高度问题

html - 我正在显示 'next page' 按钮的图像。但它没有显示在屏幕上

javascript - jQuery 不能与 RequireJS 一起使用

javascript - MVC 包与 Javascript 模块

javascript - 根据下拉选择设置附加 div 的颜色

PHP 从现有代码中随机化文件列表数组?