在RequireJS / r.js构建文件中的模块和包属性之间混淆

时间:2015-09-22 00:13:54

标签: requirejs

我很困惑"捆绑"之间的区别是什么?财产和"模块" r.js构建文件中的属性可能类似于:

({
    "allowSourceOverwrites": false,
    "preserveLicenseComments": false,
    "findNestedDependencies": false,
    "optimizeAllPluginResources": true,
    "dir":"../public/bundles",
    "baseUrl": "../public/static",
    "optimize":"none",
    "mainConfigFile": "../public/static/app/js/main.js",
    "normalizeDirDefines": "all",
    "paths" :{
        requireLib : 'vendor/require',
        jqueryUI: "empty:",
        jqueryUICSS: "empty:"
    },
    "modules": [
        {
            name: "shared",
            include: [
                'jquery',
                'async',
                'backbone'
            ],
            exclude:[]
        }
    ],
    "bundles": {
        'shared': [],
        'secondary': []
    },
    "stubModules":['text']
})

我很难找到有关如何为RequireJS项目创建多个包的好信息。当我只使用modules属性并消除bundle属性时,r.js会寻找一个名为shared.js的文件 - 我不知道为什么。

1 个答案:

答案 0 :(得分:4)

bundles 创建捆绑包,但r.js选项不是r.js识别的选项。如果您查看列出所有bundles选项的file,则您在那里找不到r.js。如果从配置中删除它,您将获得相同的行为。

  

当我只使用modules属性并消除bundles属性时,r.js会寻找一个名为shared.js的文件 - 我不知道为什么。

shared.js查找modules,因为您的"shared"指定了名为r.js的模块。 create: true将执行此操作除非您告诉它您要从头开始创建此模块,并且您通过在此模块的构建中添加"modules": [ { name: "shared", create: true, // <<<--- add this! include: [ 'jquery', 'async', 'backbone' ], exclude:[] } ], 选项来执行此操作配置:

ul div a:nth-child(7) li {
  list-style-type: none;
}