requirejs:为common.js模块构建设置以及main.js模块,其中结果只有两个.js文件服务

时间:2014-03-12 07:20:08

标签: javascript requirejs amd r.js js-amd

当遵循文档中提供的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。 越来越近。

0 个答案:

没有答案