【发布时间】:2014-01-15 18:00:45
【问题描述】:
我想使用 Grunt 来构建一个 Durandal 项目,因为 Weyland 仍然完全没有文档记录,并且不像 Grunt 那样标准。
为此,grunt 任务需要在优化期间拉入所有 js 和 html 文件,但我无法让 RequireJS 通过文本模块内联 html 文件。
看起来 weyland 复制了文本文件 manually,但我无法弄清楚它在做什么来获取 requirejs(或杏仁,在这种情况下),以实际使用它们。我见过this question,但它要求在define 调用中引用文本模块,这在Durandal 中没有。
我的 gruntfile for require 使用这个配置
requirejs: {
build: {
options: {
name: '../lib/require/almond-custom', //to deploy with require.js, use the build's name here instead
insertRequire: ['main'], //needed for almond, not require
baseUrl: 'src/client/app',
out: 'build/main-built.js',
mainConfigFile: 'src/client/app/main.js', //needed for almond, not require
wrap: true, //needed for almond, not require
paths: {
'text': '../lib/require/text',
'durandal':'../lib/durandal/js',
'plugins' : '../lib/durandal/js/plugins',
'transitions' : '../lib/durandal/js/transitions',
'knockout': '../lib/knockout-2.3.0',
'bootstrap': '../lib/bootstrap.min',
'jquery': '../lib/jquery-1.9.1',
'Q' : '../lib/q.min'
},
inlineText: true,
optimize: 'none',
stubModules: ['text']
}
}
}
【问题讨论】:
-
为什么需要优化html文件?
-
不是优化它们,而是捆绑它们。 RequireJS 的文本模块对文本进行异步调用,在 Durandal 的情况下,它是 HTML 文件,它用作部分。 R.js 的目的是将您的 JS 捆绑在一个文件中,并且为 Durandal 捆绑“require”-d html 是有意义的。支持此操作,但在 Duranda 的情况下,请求是动态的。我不知道如何进行动态捆绑,或者是否有可能。
标签: requirejs gruntjs durandal requirejs-text grunt-contrib-requirejs