选择以输出大小为优先级的编译到 JS 语言
Choosing a Compile-to-JS language with output size as a priority
我目前正在使用一个大型的Javascript代码库(目前大约150k缩小),它包含在一堆网站上。随着更多功能的添加,它的大小一直在增长,所以我现在正在研究减小大小的方法。
目前可用的选项之一是从纯JavaScript切换到编译到JS库。这可能会在开发过程中有所帮助,因为基于类的 OOP 和编译时类型检查等功能将为我们节省一些工作。但是,重要的是,这样的更改不会增加代码库的大小,而不是纯粹使用 JS。我研究过的语言似乎都没有特别关注输出大小。Dart 看起来是最好的,但编译的输出大得离谱。GWT 引入的问题多于它解决的问题,并且输出不是特别令人愉快。我自己没有尝试过Haxe,但一位同事尝试过,他告诉我它的输出非常臃肿。到目前为止,CoffeeScript 似乎是最有前途的,因为输出是相当标准的 Javascript,但它仍然生成比我们目前手动编写的更大的 JS 文件(尽管我只尝试移植代码库的小片段)。
有没有一种编译到JS的语言可以产生简洁的JavaScript并很好地缩小(特别是使用Google Closure),同时使开发过程更容易?还是我们最好坚持手写JS?
如果手写JS是要走的路,是否有任何工具或技术可以在输出大小上产生特别大的差异?Google的闭包库看起来很有趣,因为它们与我们自己的代码在功能上有很多重叠,但好处必须是显着的,因为切换到这个需要做很多工作。
如果您正在寻找非JS语言选项,则应考虑以与Closure Compiler的高级优化兼容的样式简单地使用带注释的JS。 这可能会为您提供最小的代码大小,同时仍然能够利用纯JS库。
对于更疯狂的选择,我听说过JSX和UberScript(类型增强型CoffeeScript)的好东西,它们都产生了合理的闭包编译风格的javascript。
通过源映射进行源代码级调试应该使底层JS源代码的"漂亮"不那么相关。 我不知道这两个项目的源映射状态。 Dart,GWT和Closure Compiler都产生它们。
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- Bootstrap CSS和JS我必须将它们包含在单独的文件中,或者可以编译它们
- 在客户端上编译和渲染复杂的Dust.js模板
- 预编译的JSX React,js不起作用
- Angular JS$编译服务导致$watch内存泄漏
- 从Babel 5.8.35升级到6.0.0将不会编译带有SyntaxError和意外标记的app.js
- 通过运行条件编译防止JS泄露IE浏览器
- 在 Windows 中预编译车把.js模板
- 如何将从GWT编译的JS添加/访问到另一个外部HTML / JS项目中
- 选择以输出大小为优先级的编译到 JS 语言
- 如何让 React Native 在编译发布时将 JS 包放入共享扩展中
- 与为生产站点编译多个 js 文件的相关性
- JS-如果是语句运算符,这是怎么编译的
- 在单个文件中需要js和多个已编译的Handlebar.js模板
- 如何使用Gulp在子目录中编译JS
- 何时在Node.js V8中分配和编译闭包
- 加载HTML后编译JS指令
- 用coffee文件编译js文件
- 为什么不预编译js和css文件
- Asp.net在类库中编译js作为嵌入资源,其中包含c#代码