前言
上一篇文章粗略介绍了r.js
的使用和示例。但是,仔细的人就会发现,build.js
配置太尼玛简单了,有没有问题啊?
有问题,哈哈,当我在正式的开发中准备下手使用时,发现了问题。
问题类似于此:r.js打包问题
参数说明
有一点疑问,appDir
究竟是指的哪个根目录呢?我把r.js
和build.js
放在同一级,个人猜测是相对于r.js
的目录而言,和Gruntfile.js
是一个道理。
如果你要在grunt
中使用的话,可以使用grunt-contrib-requirejs
插件。
buld.js配置
问题就在于,js
中的require
配置,r.js
并不管。所以,打包就会失败。
解决办法就是在build.js
中进行重定义。
注意到,build.js
中有个参数mainConfigFile
,这个就是用来进行重新定义模块的配置js文件。
当然,我们照样可以不用它,直接写到build.js
中,参考我项目中的一个配置:
({
appDir: "./",
baseUrl: "js",
dir: "../build",
paths: {
'jquery':'libs/jquery-1.8.2',
'easyDialog':'utils/easyDialog',
'easySwitch':'utils/easySwitch',
'easyValidator':'utils/easyValidator',
'miniNotification':'utils/miniNotification',
'scoreToRank':'utils/scoreToRank',
'score-intro':'app/score-intro',
'convert-center':'app/convert-center'
},
shim:{
'easyDialog': ['jquery'],
'easySwitch':['jquery'],
'easyValidator':['jquery'],
'miniNotification':['jquery']
},
modules: [{
name: 'score-intro'
},{
name: 'convert-center'
}]
})
libs
下面的都是公用js,utils
文件下是插件及其它模块,app
下是启动文件,他们都会依赖于libs
和utils
中的某个文件。
这样呢,打包就成功了。
注意:paths和shim中,文件名称保持和写在js中的require.config中的名称保持一致。
require.config({
baseUrl: 'js/',
paths: {
'jquery': 'libs/jquery-1.8.2',
'scoreToRank': 'utils/scoreToRank'
}
});
这样,运行命令node r.js -o build.js
,app
文件中的js依赖全都拼合了进来。
ps:有疑问及其它问题,请联系本人。
注意事项:
使用grunt的童鞋,可以使用grunt-contrib-requirejs
。
1.css的压缩,不需要再使用grunt-contrib-cssmin
,否则会有打包bug,grunt-contrib-rquirejs
可以压缩css;
2.若要合并rquier.js
和其配置文件,一旦更改了配置文件(目前bug是删除了某个js模块),也要更改合并的文件,否则,打包就会报错。(没道理啊,配置文件更改了,合并模块concat
竟然没有检查更新机制么?)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。