8

我在开发中使用 RequireJS 来管理我的依赖项,但在生产中我想删除对 AMD 加载程序的所有依赖项。看起来 RequireJS 优化器创建了一个在运行时仍然使用 AMD 负载的文件 - 我只是希望拥有一个静态(非 AMD 依赖,但仍然与 AMD 兼容)文件,例如 jquery 生成的文件(通过查看 jquery源,看来他们在他们的 grunt 文件中手动排序了他们的依赖项)。这可能吗?

我也愿意使用 RequireJS 以外的其他库。

注意:这类似于我的另一个问题Javascript requirejs in development but compiled in production,但在这种情况下,我想一起删除 AMD。

4

3 回答 3

3

如果您想通过<script>标签或 AMD 加载您的脚本,那么您可能需要根据我的 EventEmitter 类如何公开其 self来使用某些东西。

// Expose the class either via AMD, CommonJS or the global object
if (typeof define === 'function' && define.amd) {
    define(function () {
        return EventEmitter;
    });
}
else if (typeof module !== 'undefined' && module.exports){
    module.exports = EventEmitter;
}
else {
    this.EventEmitter = EventEmitter;
}

这通过 AMD、CommonJS(节点)和全局对象(即window)公开对象。这有一个主要警告,它适用于只想通过 AMD 公开其类的单文件脚本。

如果你有很多模块,那么你可能想先用r.js编译脚本,用Almond填充 AMD,然后使用类似上面的东西以上面的多种方式公开它。

于 2013-07-17T11:24:57.560 回答
-1

我和你有同样的问题。

最后我解决了这个问题,我创建了一个 requireJS 项目的基本结构和一个执行自动化的 Gruntfile。

  1. 少处理
  2. 优化requireJS。
  3. 去除 AMD
  4. 将 HTML 中的 scripts 标签从 require 语法替换为 script 标签 sintax。

我希望这可以帮助你。

https://github.com/sheldorn/require-base-structure

于 2014-12-21T12:36:18.063 回答
-1

https://github.com/kodmax/grunt-stonejs就是答案。将基于 requirejs 的项目编译为 JS Stone。基本为零开销。

于 2014-09-02T22:01:57.013 回答