想象一下AMD Java脚本应用程序,它包含三个具有这些ID的模块:
当我使用r.js构建优化文件时,这些ID仍在编译文件中。 IMO这是不必要的。例如,当我搜索并替换以下内容时,优化文件仍然有效:
替换的优点是:
有没有理由我错过了为什么没有这样做,或者有一个额外的工具/命令用一些自动生成的id替换这些ID?
答案 0 :(得分:0)
替换的优点是:
- 较小的文件大小
醇>
勉强。我对实际项目表示怀疑,你甚至可以减少1%的尺寸。
- 更好的默默无闻
醇>
默默无闻名义上会更好,但我怀疑那些能够处理缩小代码的人会被这种额外的混淆所困扰。
我有理由错过为什么没有这样做
原因尚未完成:
RequireJS仍然必须像现在一样运行,因为对于许多用途,将模块重命名为任意值是不可接受的。 (在任何地方我都使用RequireJS。)因此,这会向r.js
添加额外的代码路径,这些路径必须进行测试。
有些情况下,RequireJS将无法执行重命名。考虑一下:
define(function (require) {
var deps = ['a', 'b'];
if (some_condition)
deps.push('c');
require(deps, function () { ... });
});
RequireJS无法跟踪require
调用中的依赖项,因为标记deps
不是字符串的文字数组。但是,目前可能可以补偿传递给r.js
的配置:a
,b
,c
可以列为显式包含。问题解决了。但是,如果r.js
重命名模块,则必须自动更改名称a
,b
和c
。为此,r.js
必须使用JavaScript解析器来解析代码并对其进行更改。目前尚不清楚,在一般情况下,它能够找出需要改变的内容。
最终,如果r.js
被改变以便尽可能地做到这一点,那么r.js
会使r.js
复杂得多,以便处理相当专业的需求,其中 可以在r.js
之外处理。
或其他工具/命令,用一些自动生成的ID替换这些ID?
没有工具或配置选项可以为您执行此操作。无论r.js
为你做什么,理论上都可以在调用r.js
之前作为构建阶段完成。在将文件传递给.wrapper .extended
之前,您必须编写自己的工具来执行转换。