最近我开始使用Google Closure Tools进行 javascript 开发。到目前为止,我一直使用 CoffeeScript 编写代码,但是, CoffeeScript生成的 javascript似乎与 Google Closure Compiler 的高级模式不兼容。
CoffeeScript 编译器是否有任何扩展添加 Google Closure 支持?
最近我开始使用Google Closure Tools进行 javascript 开发。到目前为止,我一直使用 CoffeeScript 编写代码,但是, CoffeeScript生成的 javascript似乎与 Google Closure Compiler 的高级模式不兼容。
CoffeeScript 编译器是否有任何扩展添加 Google Closure 支持?
有多种工具旨在使CoffeeScript可与Google Closure Tools一起使用。我将描述其中三个:
特征:
in
运算符和其他各种不兼容问题@constructor
和@extends
注释goog.provide
为每个声明的类自动插入语句include namespace as alias
支持翻译为goog.require
和goog.scope
缺点:
My.Long.Named.Car
,不能Car
像纯 CoffeeScript 允许的那样在类定义中引用类)provide
等效项include
在http://bolinfest.com/coffee/阅读更多信息
免责声明:我是此解决方案的作者
该解决方案受到 Bolinfest 工作的启发,并通过以下方式对其进行了扩展:
goog.scope
@constructor
的@extends
注释被生成的替换provide
cast<typeToCastTo>(valueToBeCast)
语法进行类型转换在https://github.com/hleumas/coffee-script/wiki阅读更多内容
与上述两种解决方案不同,Steida 的 Coffee2Closure 是上游非调整 CoffeeScript 生成的 javascript 代码的后处理器。这种方法有一个主要优势,即随着 CoffeeScript 的持续开发,它不需要或只需要轻微的更新,并且仍然是实际的。但是,由于这种方法的本质,某些功能无法交付。目前它只修复了类和绑定、循环、in
运算符和其他一些不兼容问题。它不支持自动注释生成、类型转换或自定义关键字。