替换的优点是:
- 较小的文件大小
仅仅。我怀疑在实际项目中你甚至可以减少 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
可以将其列为显式包含。问题解决了。但是,如果重命名模块,名称、和必须自动更改。为此,必须使用 JavaScript 解析器来解析代码并对其进行修改。目前尚不清楚在一般情况下它是否能够弄清楚它需要改变什么。b
c
r.js
a
b
c
r.js
最终,如果在可能r.js
的情况下改变它,它会变r.js
得比它复杂得多,以便处理可以在外部处理的相当专业的需求r.js
。
或者一个额外的工具/命令来用一些自动生成的 ID 替换这些 ID?
没有工具或配置选项可以为您执行此操作。理论上,无论r.js
您做什么,都可以在r.js
调用之前作为构建阶段完成。在将文件传递到r.js
.