优化Durandal的构建过程

时间:2016-09-17 23:42:07

标签: javascript requirejs durandal almond

Durandal的HTML starter kit pro包含以下用于优化构建的grunt任务:

durandal: {
    main: {
        src: ['app/**/*.*', 'lib/durandal/**/*.js'],
        options: {
            name: '../lib/require/almond-custom',
            baseUrl: requireConfig.baseUrl,
            mainPath: 'app/main',
            paths: mixIn({}, requireConfig.paths, { 
                'almond': '../lib/require/almond-custom.js' 
            }),
            exclude: [],
            optimize: 'none',
            out: 'build/app/main.js'
        }
    }
}

我有一些担心,我需要你的帮助整理:

  1. 脚本文件冗余。构建过程将lib文件夹与jQuery,bootstrap等脚本保持在一起。为什么?如果查看构建的build/app/main.js,则添加了所有这些脚本。这引出了以下问题:

  2. 如果删除lib文件夹,一切正常,除了我在控制台中获得require is not defined这一事实。代码仍然会查找lib/require/require.js,只需将其添加到那里即可解决。但是,这不是almond的全部内容吗?它包含在构建的build/app/main.js文件中。据我所知,杏仁是需要在优化文件中使用的轻量级替代品。

  3. 要重现这些问题,您只需运行顶部链接中提供的“快速入门”即可。

1 个答案:

答案 0 :(得分:1)

是的,你是对的main.js包含运行应用程序所需的一切。您收到require is not defined的原因是,如果您仔细查看index.html文件,您会看到index.html引用查找/lib/require文件夹中的文件并加载我们的文件main.js通过它提交文件。在index.html注释的下方有另一行,您可以取消注释,即使删除lib目录也应该可以正常工作。

取消注释/lib行并发表评论<script src="app/main.js"></script>后删除<script src="lib/require/require.js" data-main="app/main"></script>目录所能获得的唯一错误。

希望它有所帮助。