English 中文(简体)
将闭包编译器的类型安全性与AMD(requirejs)结合在一起的最坚固的方法是什么?
原标题:What is the sturdiest way to get the closure compiler s type safety together with AMDs (requirejs)?

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

谷歌有一个很棒的闭包编译器,允许您用JSDoc注释您的JavaScript,并对其进行类型检查。在尝试了其丰富的类型系统后,我希望这将大大提高使用寿命更长的JavaScript项目的可维护性。

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

最终目标是类型安全,而不是以RequireJS的优势为代价,我的最佳选择是什么?

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

最佳回答

尽管闭包编译器可以与各种JavaScript库一起使用,与闭包库,它有自己的模块和依赖系统。使用闭包库的Web应用程序通常被编译成一个JavaScript文件,不需要异步加载模块。但是,闭包确实支持可以异步加载的模块。Chad Killingsworth提供了一个如何设置模块的好例子此处。此外,plovr工具提供了添加模块支持以简化其使用。

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

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

问题回答

暂无回答




相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.