我已经构建了一个大型 Backbone 应用程序(许多视图、模型、集合)并使用 require.js 进行模块加载。一切都按预期顺利进行。
现在我想将此应用程序发送到网络,但我想通过将所有内容压缩在(单个?)文件中来优化网络请求。我已经阅读了 Require.JS Optimizer,安装了 node.js 并创建了一个构建文件。这些是我的测试:
创建一个构建文件而不在模块部分指定单个模块->我获得了源应用程序的副本,其中所有的 js 文件都被丑化了。应用程序有效,但从网络请求的角度来看似乎没有任何变化。
创建一个带有单个模块的构建文件(即我的 main.js 文件)-> 我获得了源应用程序的副本,其中所有 js 文件都被丑化了,还有一个巨大的新 main.js 文件,我认为它包含了它的所有依赖项(即所有使用的文件)。这将解决网络请求问题,但应用程序根本没有启动,开始给我奇怪的错误。
使用 Require.JS 优化器的正确方法是什么?我想#2,但你的意见是什么?如果这是正确的方法,我应该找出解决这些错误的方法......
谢谢
编辑
这是我的应用程序文件夹结构:
app
|
--- scripts
|
--- libs
--- collections
--- views
--- models
--- main.js
--- styles
--- templates
--- index.htm
在“app”文件夹的同一级别,我创建了一个包含 r.js 和 build.js 的构建文件夹,其内容如下:
({
//Directory relativa a questo file dove si trova l'app
appDir: '../app',
//Directory relativa ad appDir di dove si trovano i moduli
baseUrl: 'scripts',
//Percorso verso il file main
mainConfigFile: '../app/scripts/main.js',
paths:
{
jquery: 'libs/jquery/jquery-min',
jqueryui: 'libs/jqueryui/jquery-ui-1.10.2.min',
underscore: 'libs/underscore/underscore-min',
backbone: 'libs/backbone/backbone-min',
kendo: 'libs/kendo/kendo.web.min',
kendo_it: 'libs/kendo/amd/kendo.culture.it.min',
relational: 'libs/relational/backbone-relational',
nested: 'libs/nested/backbone-nested-v1.1.2.min',
rivets: 'libs/rivets/rivets.min',
i18n: 'libs/i18next/i18next.amd.withJQuery-1.6.3',
jvalid: 'libs/jqueryvalidate/jquery.validate.min',
chartjs: 'libs/chartjs/chart.min',
toastr: 'libs/toastr/toastr.min',
templates: '../templates'
},
//Where to save the output
dir: '../app-build',
modules:
[
{
name: 'main'
}
]
})
我使用以下命令启动构建过程:
node r.js -o build.js
如果我运行“已编译”的 main.js,我会得到这个错误:
Uncaught Error: Mismatched anonymous define() module
有任何想法吗?