首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我必须再次使用'include‘来优化成一个单独的js文件?

为什么我必须再次使用'include‘来优化成一个单独的js文件?
EN

Stack Overflow用户
提问于 2014-07-08 02:55:49
回答 1查看 106关注 0票数 0

我正在尝试使用grunt-requirejs将我的requirejs项目优化为一个单独的生产js文件。然而,我不确定我的Gruntfile.js是否正确,因为我必须在优化过程中再次指定要包括的模型,这对我来说似乎是错误的,因为我已经指定了mainConfigFile。我以为它会读取我的requirejs文件中的所有内容。我问这个是因为我有很多模块,我不想干。

这是我的Gruntfile.js

代码语言:javascript
复制
requirejs : {

            compile : {
                options: {
                    almond: true,
                    baseUrl : 'src/Web/Scripts',
                    mainConfigFile : 'src/Web/Scripts/main-new.js',
                    out: 'src/Web/Scripts/out.js',
                    optimize: 'uglify2',

                    include: ['main-new', 
                        'app/app.js',
                        'app/viewmodels/home/home.mobile.js',
                        'zepto', 
                        'hammer',
                        'zepto-hammer',
                        'zepto-dragswipe',
                        'knockout',
                        'knockout-validation',
                        'knockout-postbox',
                        'knockout-mapping',
                        'knockout-notification',
                        'q',
                        'underscore'
                    ]
                }
            }
        },

这是我的main-new.js文件

代码语言:javascript
复制
requirejs.config({
        baseUrl: '/m/Scripts',
        paths: {
            'jquery': 'vendors/jquery/jquery-1.10.2',
            'jquery-cookie': 'vendors/jquery/jquery.cookie-1.4.1',
            'zepto': 'vendors/zepto/zepto',
            'hammer': 'vendors/hammer/hammer',
            'zepto-hammer': 'vendors/zepto/zepto.hammer',
            'zepto-dragswipe': 'vendors/zepto/zepto.dragswipe',
            'knockout': 'vendors/knockout/knockout-3.1.0',
            'knockout-validation': 'vendors/knockout/knockout.validation',
            'knockout-postbox': 'vendors/knockout/knockout-postbox',
            'knockout-mapping': 'vendors/knockout/knockout.mapping',
            'knockout-notification': 'vendors/knockout/knockout-notification-1.1.0',
            'viewmodels': 'app/viewmodels',
            'service': 'app/services',
            'config': 'app/config',
            'helpers': 'app/helpers',
            'q': 'vendors/q/q-0.9.6',
            'underscore': 'vendors/underscore/underscore-min'
        },
        shim: {
            'knockout-validation': ['knockout'],
            'knockout-mapping': ['knockout'],
            'knockout-postbox': ['knockout'],
            'knockout-notification': ['knockout'],
            'jquery-cookie': ['jquery'],
            'hammer': ['zepto'],
            'zepto-hammer': ['zepto', 'hammer'],
            'zepto-dragswipe': ['zepto', 'hammer'],
            'zepto': {
                exports: 'Zepto'
            },
            'underscore': {
                exports: '_'
            }
        }
    });
EN

回答 1

Stack Overflow用户

发布于 2014-07-14 16:50:39

include部分,你应该放入动态需要的模块,如下所示:

代码语言:javascript
复制
require(['path/' + moduleName], function() { ... })

因为r.js不能在构建时预测您在运行时需要什么。

其他的一切都应该通过模块中的依赖数组来解决。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24617820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档