AMD模块整形:如何只加载一个JS函数?

Joh*_*ski 11 javascript amd typescript

许多JavaScript库都有一个Builder工具,它允许您"塑造"您所依赖的库的哪些功能,包括客户端的下载带宽成本和隔离实际需要的功能.

例如,我喜欢sugar.js中的很多东西,但我根本不需要或想要片假名和平假名字符集处理.作为最简单的例子,我希望能够"塑造"sugar.js以仅导出string.isBlank().

有没有可以为我这样做的工具?在未来的JavaScript版本中,EcmaScript委员会是否正在继续努力做这样的事情?像TypeScript和CoffeeScript这样的高级语言是否为这种"整形"提供了隐藏的支持?我可以通过monolinker在C#for .NET DLL中进行这样的"整形" .

基本上,它看起来像AMD处理现代编译器的Loader方面,但不处理链接器方面.jquerydojo的构建器只适用于特定的模块,并不是真正的连接器,只是构建器.

更新: Google Closure Compiler是一个编译器,它将JavaScript作为输入并生成JavaScript作为输出.的高级编译和实习医生文档建议有一个API调用来做到这一点:

如果将这些导出语句放在一起看起来太单调乏味,您可以使用函数为您进行导出.有关导出函数的示例,请参阅Closure Library函数goog.exportSymbol()goog.exportProperty().

但是,这看起来很复杂,让我直接依赖于Google Closure Compiler.在这一点上,我正在寻找关于EcmaScript委员会关于CommonJS的未来标准的信息,以及那些思考这个问题并试图解决它的人的任何智慧.特别是来自TypeScript开发人员; 我不想在TypeScript中为sugar.js创建声明文件,然后对我的TypeScript编译器输出使用Google Closure Compiler.它听起来很复杂,难以调试.

Eri*_*yen 2

不幸的是,Javascript 中没有内置任何东西来执行这种“整形”,无论如何,您真正需要的是一个编译器,因为它的大致作用之一是在多个级别(不仅仅是使用方法)自动进行“整形”。

Closure Compiler 是成熟且开源的(JQuery 实际上是使用 Closure Compiler 缩小的)。因此,如果您要开始为编译器注释 JS 代码,那么最好选择这个。

顺便说一句,使用编译器有很多好处。它们将大大减少您的文件大小(从而减少解释/运行时间),而不仅仅是塑造您包含的库。当您开发时,它会产生许多有用的消息,以便及早发现错误。