javascript - AMD 模块整形 : How to load only one JS function?

标签 javascript typescript amd

许多 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 调用可以执行此操作:

If putting together these export statements seems too tedious, you can use a function to do the exporting for you. See the Closure Library functions goog.exportSymbol() and goog.exportProperty() for examples of exporting functions.

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

最佳答案

不幸的是,Javascript 中没有内置任何东西来执行此“整形”,而实际上您真正想要的是一个编译器,因为它所服务的大致 Angular 色之一是在许多级别(不仅仅是方法)自动化“整形” .

Closure Compiler 是成熟且开源的(JQuery 实际上是使用 Closure Compiler 缩小的)。因此,如果您打算开始为编译器注释您的 JS 代码,那么它也可能是这个。

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

关于javascript - AMD 模块整形 : How to load only one JS function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16217335/

相关文章:

javascript - 使用对象扩展运算符构造带字段的函数对象

javascript - 在 ember-cli 中导入依赖项(例如,导入 math.js)

javascript - 当 require.js 存在时,如何成功加载 dimple.js?

javascript - 在ajax加载的页面中运行函数?

javascript - jQuery 如何删除第一个元素之前的逗号?

javascript - 如何将我的方法重写为 async/await?

javascript - typescript :对象可能是 'undefined'

node.js - 导出模块值

requirejs - Intellisense for AMD/Requirejs in Visual Code

javascript - 向 Node Webshot 生成的 PDF 添加标题