Javascript 获取闭包编译器&x27;s型安全与AMDs(requirejs)一起使用?

Javascript 获取闭包编译器&x27;s型安全与AMDs(requirejs)一起使用?,javascript,requirejs,google-closure-compiler,type-safety,Javascript,Requirejs,Google Closure Compiler,Type Safety,尽管JavaScript和它的许多库(jQuery)允许创建许多伟大的网站,但在考虑构建一个更大的网站时,我发现它缺乏类型安全性令人望而生畏 谷歌有一个很好的工具,可以让你用JSDoc来检查你的JavaScript,并进行类型检查。在对其富类型系统进行了实验之后,我希望这将大大提高长寿命JavaScript项目的可维护性 唯一的问题是它不能很好地处理像RequireJS这样的库。有一个实验性的标志连接JavaScript文件,并通过消除它来处理作用域。然而,这似乎有点反模式,去掉了Require

尽管JavaScript和它的许多库(jQuery)允许创建许多伟大的网站,但在考虑构建一个更大的网站时,我发现它缺乏类型安全性令人望而生畏

谷歌有一个很好的工具,可以让你用JSDoc来检查你的JavaScript,并进行类型检查。在对其富类型系统进行了实验之后,我希望这将大大提高长寿命JavaScript项目的可维护性

唯一的问题是它不能很好地处理像RequireJS这样的库。有一个实验性的标志连接JavaScript文件,并通过消除它来处理作用域。然而,这似乎有点反模式,去掉了RequireJS的大部分优点(但保留了模块化文件结构)。还有一个问题,那就是未来会得到多少支持

最终目标是类型安全,而不是以牺牲RequireJS的利益为代价,我的最佳选择是什么

PS:虽然我选择使用RequireJS作为AMD库,但我不会反对使用其他AMD库的解决方案。

虽然可以与各种JavaScript库一起使用,但与具有自己的模块和依赖系统的一起使用可以获得最大的好处使用Closure库的Web应用程序通常被编译成一个JavaScript文件,不需要异步加载模块。但是,Closure确实支持异步加载的模块。提供了一个关于如何设置模块的好例子。此外,该工具还提供了附加功能以简化其使用

如果您已经决定使用闭包编译器(并且您没有绑定到大型代码库),那么您可能会通过在新代码中采用闭包库及其模块/依赖系统来最大限度地提高生产率。如果您确实计划使用AMD代码库,那么正如您所提到的,新的实验性编译器标志
--transform\u AMD\u modules
--process\u common\u js\u modules
可能会有所帮助,但是当使用未注释的库时,您会错过编译器的大部分功能

展望未来,如果成为一个官方标准,那么Closure、Dojo和YUI等库可能最终将符合该标准。这最终可能使无缝集成来自不同库的JavaScript代码成为可能。同时,如果您想编写JavaScript应用程序并享受类型检查、死代码消除、缩小、高级内存管理、浏览器不可知论和非凡的标准库,那么我强烈建议将闭包编译器与闭包库结合使用