首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将requireJS文件与grunt合并

将requireJS文件与grunt合并
EN

Stack Overflow用户
提问于 2013-12-21 08:23:33
回答 3查看 1.5K关注 0票数 0

我想组合一个简单的requireJS解决方案中使用的js。

这是我的main.js

代码语言:javascript
复制
require.config({
paths: {
    'jquery': 'jquery-2.0.3.min',
    'dataTable': 'jquery.dataTables'    
}
});

define(['jquery','dataTable'], function($) {
'use strict';
$(function () {

    $('.tablesorter').dataTable();
});

});

还有我的gruntFile.js

代码语言:javascript
复制
module.exports = function(grunt) {

grunt.initConfig({
requirejs: {
  production: {
    options: {
      name: "main",
      baseUrl: "",
      mainConfigFile: "main.js",
      out: "optimized.js"
    }
  }
}
});

grunt.loadNpmTasks('grunt-contrib-requirejs');

grunt.registerTask('default', 'requirejs'); 

};

我在WHen中加载optimized.js,如下所示

代码语言:javascript
复制
<script  src="optimized.js"></script>

我得到ReferenceError:没有定义require

EN

回答 3

Stack Overflow用户

发布于 2013-12-21 08:36:23

在包含optimized.js之前,您必须在页面上包含require.js

如下所示:

代码语言:javascript
复制
<script src="/path/to/require.js"></script>
<script src="/path/to/optimized.js"></script>
票数 0
EN

Stack Overflow用户

发布于 2013-12-21 09:39:38

我发现requireJS只接受'main‘作为数据主源

因此,不是

代码语言:javascript
复制
<script data-main="optimized" src="require.js"></script>

我得到了

代码语言:javascript
复制
<script data-main="prod/main" src="require.js"></script>

并将呼叫声配置更改为

代码语言:javascript
复制
  requirejs: {
   production: {
    options: {
     name: "main",
     baseUrl: "",
     mainConfigFile: "main.js",
     out: "prod/main.js"
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2013-12-21 20:41:28

看看问题之外的评论,首先我发现George Raith在你的代码中遇到了一个问题:你需要包含require.js

然后你说$('.tablesorter').dataTable()没有被执行。这是因为您使用的是define而不是require。使用以下命令:

代码语言:javascript
复制
require(['jquery','dataTable'], function($) {
    'use strict';
    $(function () {
        $('.tablesorter').dataTable();
    });
});

define的调用仅向RequireJS注册模块。它不执行模块。因此,$('.tablesorter').dataTable()不执行也就不足为奇了。您必须使用接受回调的require形式来执行您想要执行的操作。

至于将项目中的RequireJS包含在单个文件中,您必须明确要求它。优化器的文档给出了这个示例:

代码语言:javascript
复制
node ../../r.js -o baseUrl=. paths.requireLib=../../require name=main include=requireLib out=main-built.js

您的配置(从问题中的配置更新)将如下所示:

代码语言:javascript
复制
grunt.initConfig({
    requirejs: {
        production: {
            options: {
                name: "main",
                baseUrl: "",
                mainConfigFile: "main.js",
                paths: {
                    requireLib: <path to require js>
                },
                out: "optimized.js",
                include: "requireLib"
            }
       }
    }
});

(我还没有运行过这段代码,所以请注意输入错误。)对于requireLib,您必须将路径放入require.js文件。我们必须使用requireLib作为模块名称,因为require是保留的。使用这种配置,您应该只能加载optimized.js文件。

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

https://stackoverflow.com/questions/20714008

复制
相关文章

相似问题

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