当遵循文档中提供的example-multipage的常规设置时,common.js模块似乎会导致依赖关系进行异步XMLHttpRequest调用。
我的目录结构是:
|-static
|-core
|-js
|-myApp.js
|-require.js
|-common.js
|-app.build.js
|-app
|-myApp.js
|-vendor
|-js
|-jquery.js
|-bootstrap.js
|-fancybox.js
common.js的内容:
require.config({
baseUrl: "/static/core/js",
paths: {
'jquery':'../../vendor/jquery/1.7.2/jquery',
'bootstrap':'../../vendor/bootstrap/2.2.2/js/bootstrap',
'fancybox':'../../vendor/fancybox/2.0.6/jquery.fancybox',
},
shim: {
'bootstrap':['jquery'],
'fancybox': ['jquery'],
'app/messages': ["jquery"],
},
waitSeconds: 12
});
myApp.js的内容
require(['common'], function (common) {
require(['app/myApp']);
});
app / myApp.js的内容(是的,我知道我是在污染全球的NAMESPACE):
define(function (require) {
var $ = require('jquery');
require('fancybox');
require('app/messages');
//all my code here
});
我的模块在app.build.js中定义如下:
mainConfigFile: 'common.js',
removeCombined: true,
modules: [
{
name: 'common',
include: ['jquery', 'bootstrap']
},
{
name: 'myApp',
include: ['app/myApp'],
exclude: ['common']
},
],
当我从构建中 删除 公共模块 时,一切正常。我得到一个myApp.js文件,其中所有依赖项合并到一个文件中(完美!)。
当我 ADD 公共模块 重新进入时,会加载生成的js文件:common.js (合并),myApp.js(合并),加上我还得到myApp.js,common.js,bootstrap.js,fancybox.js,messages.js,没什么用。
一个猜测是,因为我在require.config中创建实际.js文件的路径,所以它将它们作为依赖项加载。如果我只定义了目录路径,那么这不会发生?
的更新: 的 由于我的common.js是shimmed,看起来我需要关注example-multipage-shim。 越来越近。