首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将闭包编译器的类型安全与AMD(要求)结合在一起的最可靠的方法是什么?

将闭包编译器的类型安全与AMD(要求)结合在一起的最可靠的方法是什么?
EN

Stack Overflow用户
提问于 2012-05-28 17:51:32
回答 1查看 3.2K关注 0票数 8

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

谷歌有一个很棒的closure compiler,它允许你用JSDoc annotate你的JavaScript,并让它进行类型检查。在试验了它的富类型系统之后,我希望这将极大地提高一个生命周期更长的JavaScript项目的可维护性。

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

由于最终目标是类型安全,而不是以牺牲RequireJS的好处为代价,我最好的选择是什么?

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

EN

Stack Overflow用户

回答已采纳

发布于 2012-05-29 06:39:44

尽管Closure Compiler可以与各种JavaScript库一起使用,但当与Closure Library一起使用时,会获得最大的好处,它有自己的模块和依赖系统。使用闭合库的Web应用程序通常被编译成一个JavaScript文件,该文件不需要异步加载模块。但是,确实提供了对模块的支持,这些模块可以异步加载。Chad Killingsworth为如何设置模块here提供了一个很好的例子。此外,plovr工具还提供了额外的module support来简化它们的使用。

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

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

票数 10
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10782612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档