【发布时间】:2015-08-15 10:40:44
【问题描述】:
我正在尝试将我的 Require JS 项目优化为单个文件。 我浏览了多个教程,但似乎没有一个可以正常工作。
我有以下文件结构:
scripts/
build/
r.js
build.js
common/
misc.js
slider.js
library/
jquery.min.js
jquery.colorbox.min.js
jquery.scrollTo.min.js
...
mobile/
app.js
catalogue.js
car-images.js
...
web/
app.js
catalogue.js
car-images.js
...
index.html
我需要创建 2 个文件 web.app.js 和 mobile.app.js。
经过多次尝试,我只设法缩小每个文件夹中的app.js,但没有它的依赖关系。
结果应该是一个文件,包含common、library和web/mobile目录的所有内容,这取决于我尝试编译哪个app.js。
app.js 的外观如下(web 和 mobile 相似):
requirejs.config({
"paths": {
'jquery': [
'//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min',
'../library/jquery.min'
],
'colorbox': [
'//cdnjs.cloudflare.com/ajax/libs/jquery.colorbox/1.4.33/jquery.colorbox-min',
'../library/jquery.colorbox-min'
],
'colorbox-he': [
'//cdnjs.cloudflare.com/ajax/libs/jquery.colorbox/1.4.33/i18n/jquery.colorbox-he.min',
'../library/jquery.colorbox-he.min'
],
'scrollTo': [
'//cdnjs.cloudflare.com/ajax/libs/jquery-scrollTo/2.1.1/jquery.scrollTo.min',
'../library/jquery.scrollTo.min'
],
'misc': '../common/misc',
'slider': '../common/slider'
},
"map": {
'*': {
'colorbox': 'colorbox-he'
},
'colorbox-he': {
'colorbox': 'colorbox'
}
},
"shim": {
'scrollTo': {
'deps': ['jquery'],
'exports': 'jQuery.fn.scrollTo'
},
'colorbox': {
'deps': ['jquery'],
'exports': 'jQuery.fn.colorbox'
},
'colorbox-he': ['colorbox'],
'misc': ['jquery', 'scrollTo'],
'car-images': ['jquery', 'colorbox'],
}
});
if (typeof require_modules == 'object') {
require_modules.push('misc')
} else {
var require_modules = ['misc']
}
require(require_modules);
这里是使用的配置:
({
baseUrl: "../web",
name: "app",
out: "app-built.js"
})
知道如何做到这一点吗?由于多个文件和请求,加载时间很长。
提前致谢!
【问题讨论】:
-
你的问题应该包括你传递给
r.js的配置文件。 -
@Louis 是的,你是对的。我更新了答案。它们非常简单,所以我认为也许没有必要。
标签: javascript node.js requirejs r.js