0

在 grunt-contrib-requirejs 的 Gruntfile.js 中,我只能注册一项任务,并且只能有一个输出文件,即 home_scripts.pack.js。但是,我希望根据不同的“包含”标准拥有尽可能多的输出文件。例如,home_scripts.pack.js、checkout_scripts.pack.js、product_scripts.pack.js 等。这样每个页面将只加载正在使用的 JS:

这是无效的,但是我想做类似的事情:

requirejs: {
    compile1: {
        options: {
            baseUrl: 'C:/project/js',
            mainConfigFile: 'C:/project/js/app.js',
            name: 'app',             
            paths: {
                requireLib: 'C:/project/js/require.min' 
            },
            *include: ['requireLib', 'home_page_internal.js'],*
            *out: 'C:/project/js/home_scripts.pack.js'*
            }
        }
    },
    compile2: {
        options: {
            baseUrl: 'C:/project/js',
            mainConfigFile: 'C:/project/js/app.js',
            name: 'app',             
            paths: {
                requireLib: 'C:/project/js/require.min' 
            },
            *include: ['requireLib', 'checkout_internal.js'],*
            *out: 'C:/project/js/checkout_scripts.pack.js'*
            }
        }
    }
}

上面带星号的代码是我要为每个页面生成不同的输出文件的代码。但是,如果有更有效的方法通过 requireJS 优化器使用 grunt 生成和加载大量 JS 插件文件和模块,我愿意接受建议。

谢谢,

4

1 回答 1

1

你需要看看RequireJS Multipage Example

它描述了如何根据页面的需要使用连接。

所以你的选择看起来像。

requirejs : {
  compile : {
    "baseUrl": "app",
    "dir": "app/built",
    "include": "main.js",
    "paths": {
        "angular": "bower_components/angular/angular.min",
        "css" : "bower_components/require-css/css.min",
        "text" : "bower_components/requirejs-text/text",
        "css-builder" : "bower_components/require-css/css-builder",
        "normalize" : "bower_components/require-css/normalize"
    },
    "modules" : [
        {
            "name" : "app",
            "include" : ["text", "css"]
        },
        {
            "name" : "modules/module1",
            "include" : [],
            "exclude" : ["app"]
        },
        {
            "name" : "modules/module2",
            "include" : [],
            "exclude" : ["app"]
        },
        {
            "name" : "modules/module3",
            "include" : [],
            "exclude" : ["app"]
        }    ]
    }
}

忽略其他配置并检查模块配置。这是一个包含多个 AMD 模块的数组,每个模块都将连接到自己的文件中。

在 SPA 的情况下,如果您需要排除任何您不想包含在后续模块中的常见模块。在这种情况下app,模块包含所有库层,因此它被排除在后续模块之外。

于 2015-01-19T14:15:05.817 回答