【发布时间】:2014-08-22 19:56:11
【问题描述】:
我正在尝试进行 r.js 优化。我有这个示例项目https://github.com/noppanit/requirejs-optimization-example 用knockoutjs 构建,我使用grunt-contrib-requirejs。一切正常。但我认为 grunt-contrib-requirejs 并没有跟踪我所有的依赖项
这是我的 Gruntfile.js
module.exports = function(grunt){
grunt.initConfig({
requirejs: {
compile: {
options: {
baseUrl: "./js",
paths: {
'knockout': 'vendors/knockout/knockout-3.0.0'
},
mainConfigFile: "js/config.js",
name: "application",
out: "js/optimized.js"
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-requirejs');
grunt.registerTask('default', ['requirejs']);
};
这是我包含优化文件的方式
<!DOCTYPE>
<html>
<head>
</head>
<body>
<div>
Name: <input type="text" data-bind="value: name"/>
</div>
<div>
Surname: <input type="text" data-bind="value: surname" />
</div>
<span data-bind="text: fullname"></span>
</body>
<script type="text/javascript" src="js/require.js" data-main="js/optimized">
</script>
</html>
这是我的 config.js
require.config({
baseUrl: './js',
paths: {
'jquery': 'vendors/jquery/jquery-1.11.0',
'knockout': 'vendors/knockout/knockout-3.0.0',
'main-viewmodel': 'viewmodels/main_viewmodel',
'main-call': 'viewmodels/main_call',
}
});
这是我的 application.js
require(['config'], function() {
require(['main-call','knockout']);
});
在我运行grunt之后
这是我从 optimize.js 中得到的结果
require.config({baseUrl:"./js",paths:{jquery:"vendors/jquery/jquery-1.11.0",knockout:"vendors/knockout/knockout-3.0.0","main-viewmodel":"viewmodels/main_viewmodel","main-call":"viewmodels/main_call"}}),define("config",function(){}),require(["config"],function(){require(["main-call","knockout"])}),define("application",function(){});
看起来只是 config.js 和 application.js 的组合,我希望包括 requirejs 和 knockoutjs 在内的所有 javascript 文件也将包括在内。因此,浏览器只需拨打一个电话即可获得优化的 javascript。
【问题讨论】:
-
怎么不行?您是否在控制台上收到错误消息?
-
当我更改为优化版本时,应用程序根本无法运行。
标签: javascript node.js optimization knockout.js requirejs