许多 JavaScript 库都有一个 Builder 工具,可以让您“塑造”您所依赖的库的哪些功能,无论是在客户端下载带宽成本方面还是在隔离您实际需要的功能方面。
例如,我喜欢 Sugar.js 中的很多东西,但我根本不需要或不想要片假名和平假名字符集处理。作为最简单的例子,我希望能够“塑造”sugar.js 以仅导出 string.isBlank()。
是否有可用的工具为我执行此操作?EcmaScript 委员会是否正在努力在未来版本的 JavaScript 中做类似的事情?有没有像 TypeScript 和 CoffeeScript 这样的高级语言为这种“塑造”提供隐藏的支持?我可以通过monolinker在 C# 中为 .NET DLL 进行这种“整形” 。
基本上,在我看来,AMD 处理现代编译器的加载器方面,但不处理链接器方面。jquery和dojo的构建器仅适用于特定模块,并且不是真正的链接器,只是构建器。
更新: Google Closure Compiler是一个将 JavaScript 作为输入并生成 JavaScript 作为输出的编译器。Advanced Compilation and Externs文档建议有一个 API 调用来执行此操作:
如果将这些导出语句放在一起看起来太乏味,您可以使用一个函数为您进行导出。有关导出函数的示例,请参阅闭包库函数goog.exportSymbol()和goog.exportProperty()。
但是,这看起来很复杂,让我直接依赖 Google Closure Compiler。在这一点上,我正在从 EcmaScript 委员会寻找有关 CommonJS 的未来标准的信息,以及来自那些考虑过这个问题并试图解决它的人的任何智慧。尤其是来自其他 TypeScript 开发人员;我不想在 TypeScript 中为 sugar.js 创建声明文件,然后对我的 TypeScript 编译器输出使用 Google Closure Compiler。这听起来非常复杂且难以调试。