【问题标题】:AMD Optimizer (r.js) doesn't produce any outputAMD Optimizer (r.js) 不产生任何输出
【发布时间】:2013-03-18 05:32:28
【问题描述】:

免责声明:我完全是 AMD n00b。

我有一个项目正在尝试转换为 AMD。最初,所有代码都在一个文件中。我能够将功能单元拆分为它们自己的模块,但它们都在同一个文件中。我决定将它们拆分为 AMD 模块,然后使用优化器组合所有内容。一位乐于助人的贡献者已经将我的模块转换为 UMD,因此移动所有内容似乎非常简单。

我的主文件(即我正在编写的库)如下所示:

(function (root, factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module.
        define(factory);
    } else {
        // Browser globals
        root.regula = factory();
    }
}(this, function () {
    define(
        [
            "utils/MapUtils",
            "utils/DOMUtils",
            "service/BindingService",
            "service/ExceptionService",
            "service/ConstraintService",
            "service/ValidationService",
            "service/GroupService"
        ],
        function (MapUtils, DOMUtils, BindingService, ExceptionService, ConstraintService, ValidationService, GroupService) {

            ...
            ...

            return {
                configure: configure,
                bind: bind,
                unbind: unbind,
                validate: validate,
                custom: custom,
                compound: compound,
                override: override,
                Constraint: ConstraintService.Constraint,
                Group: GroupService.Group,
                DateFormat: DateFormat,
                Exception: ExceptionService.Exception
            };
        }
    );
}));

而我的目录结构如下:

regula
├── amdtest.html
├── dist
│   └── src
└── src
    ├── build.js
    ├── domain
    │   └── CompositionGraph.js
    ├── jquery.regula.js
    ├── lib
    │   ├── closure
    │   │   └── compiler.jar
    │   ├── require
    │   │   ├── require.js
    │   │   └── r.js
    │   └── rhino
    │       └── js.jar
    ├── parser
    │   └── Parser.js
    ├── regula.js
    ├── service
    │   ├── BindingService.js
    │   ├── ConstraintService.js
    │   ├── ExceptionService.js
    │   ├── GroupService.js
    │   └── ValidationService.js
    └── utils
        ├── ArrayUtils.js
        ├── DOMUtils.js
        └── MapUtils.js

我的build.js 是:

({
    appDir: "../",
    baseUrl: "src",
    dir: "../dist",
    modules: [{
        name: "regula"
    }]
})

我正在使用 Rhino 和 Closure 来运行优化器,如下所示:

java -cp lib/rhino/js.jar:lib/closure/compiler.jar org.mozilla.javascript.tools.shell.Main lib/require/r.js build.js

不幸的是,这不会产生任何类型的输出或错误。 regula.js 中引用的所有 Javascript 模块也是 AMD 模块。知道我做错了什么吗?如果有帮助,我可以发布更多信息。我不想做大量随机信息转储,因为正如我之前提到的,我是 AMD 的新手,所以我不完全确定什么是相关的。

【问题讨论】:

  • 看起来同样的问题在这里解决了:Require.js optimizer - Trouble getting going [简而言之:你缺少 r.js 的“-o”标志]
  • @kryger 太棒了!谢谢;就是这样!如果您将评论添加为答案,我可以接受。
  • 嗯,这当然是优化的。 :-p

标签: closures requirejs rhino amd r.js


【解决方案1】:

您忘记传递-o 标志以在优化器模式下运行r.js!更多详情在official docs

【讨论】:

    猜你喜欢
    • 2017-02-03
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2014-04-10
    相关资源
    最近更新 更多