Dav*_*ave 8 javascript type-safety google-closure-compiler requirejs
虽然JavaScript及其许多库(jQuery,RequireJS)允许创建许多优秀的网站,但我在考虑构建更大的网站时发现它缺乏类型安全性.
谷歌有一个很棒的闭包编译器,它允许你用JSDoc 注释你的JavaScript并进行类型检查.在尝试了它的丰富类型系统之后,我希望这会大大提高更长寿的JavaScript项目的可维护性.
唯一的问题是它与RequireJS等AMD库不能很好地协同工作.有一个实验性的--transform_amd_modules标志,用于连接JavaScript文件并通过消除它来处理范围.然而,这似乎是一种反模式,消除了RequireJS的大部分好处(但保留了模块化文件结构).还有一个问题是未来将获得多少支持
最终目标是类型安全,而不是昂贵的RequireJS的好处,这将是我最好的赌注?
PS:虽然我使用RequireJS作为AMD库的首选,但我不会反对使用不同AMD库的解决方案.
Chr*_*ert 10
虽然Closure Compiler可以与各种JavaScript库一起使用,但是当与Closure Library一起使用时可以获得最大的好处,Closure Library有自己的模块和依赖系统.使用Closure Library的Web应用程序通常编译为一个JavaScript文件,不需要异步模块加载.但是,Closure确实为模块提供支持,这些模块可以异步加载.Chad Killingsworth提供了一个如何在这里设置模块的好例子.此外,plovr工具还提供了附加模块支持,以简化其使用.
如果您已决定使用Closure Compiler(并且您不依赖于大型AMD代码库),则可以通过在新代码中采用Closure Library及其模块/依赖系统来最大限度地提高工作效率.如果您计划使用AMD代码库,那么正如您所提到的,新的实验性编译器标记--transform_amd_modules并--process_common_js_modules可能有所帮助,但是当使用未注释的库时,您会错过编译器的大部分功能.
展望未来,如果ECMAScript Harmony模块成为官方标准,那么Closure,Dojo和YUI等库很可能最终符合该标准.这最终可以无缝集成来自不同库的JavaScript代码.与此同时,如果你想编写JavaScript应用程序并享受类型检查,死代码消除,缩小,高级内存管理,浏览器不可知论以及非凡的标准库,那么我强烈建议将Closure Compiler与Closure结合使用图书馆.
| 归档时间: |
|
| 查看次数: |
3217 次 |
| 最近记录: |