7

最近、JavaScriptの開発にGoogleClosureToolsを使い始めました。これまで、CoffeeScriptでコードを記述してきましたが、 CoffeeScriptによって生成されたJavaScriptは、 GoogleClosureCompilerの詳細モードと互換性がないようです。

Google Closureサポートを追加するCoffeeScriptコンパイラの拡張機能はありますか?

4

1 に答える 1

7

CoffeeScriptをGoogleClosureToolsで使用できるようにすることを目的としたさまざまなツールがあります。それらのうちの3つについて説明します。

BolinfestのCoffeeScriptフォーク

特徴:

  • 関数のバインド、ループ、内包表記、in演算子、その他のさまざまな非互換性を修正しました
  • GoogleClosureのクラス構文を修正しました
  • 注釈@constructorの自動生成@extends
  • goog.provide宣言されたクラスごとにステートメントを自動的に挿入します
  • Pythonのようなinclude namespace as aliasサポートはに翻訳されgoog.requiregoog.scope

欠点:

  • コンストラクターは、クラスの最初のステートメントである必要があります
  • クラス内のクラスに短いエイリアスを使用することはできません(つまり、純粋なCoffeeScriptで許可されているように、クラス定義でクラスを参照My.Long.Named.Carすることはできません)Car
  • ユーザーが書いたJsDocコメントは、コンパイラーが生成したコメントとマージされません
  • provide同等のものがありませんinclude
  • 型キャストはサポートされていません。これは、バッククォート「`」内に純粋なJavaScriptコードを挿入することによってのみ実行できます。
  • 古いCoffeeScript1.0に基づく

詳細については、http://bolinfest.com/coffee/をご覧ください。

私のCoffeeScriptフォーク

免責事項:私はこのソリューションの作成者です

このソリューションは、Bolinfestの作業に触発され、次のように拡張されています。

  • コンストラクターはクラス内のどこにでも配置できます
  • クラスの短いエイリアスは、goog.scope
  • ユーザーが書いたJsDocコメントは、生成されたコンパイラーとマージされ、ユーザーが書いた注釈は@constructor@extends生成されたものに置き換えられます
  • 各名前空間は、ほとんど一度だけ提供または含まれます。提供された名前空間は決して含まれません。キーワードで名前空間を指定できますprovide
  • cast<typeToCastTo>(valueToBeCast)構文を使用した型キャストのサポート
  • CoffeeScript1.6に基づく

https://github.com/hleumas/coffee-script/wikiで詳細を読む

Steida's Coffee2Closure

上記の2つのソリューションとは異なり、SteidaのCoffee2Closureは、アップストリームの調整されていないCoffeeScriptによって生成されたjavascriptコードのポストプロセッサーです。このアプローチには1つの大きな利点があります。それは、CoffeeScriptの継続的な開発により、更新が不要またはわずかなだけであり、それでも実際のものであるということです。ただし、このアプローチの性質上、一部の機能は提供できません。現在、クラスとバインディング、ループ、in演算子、およびその他のいくつかの非互換性のみが修正されています。自動注釈生成、型キャスト、またはカスタムキーワードはサポートされていません。

https://github.com/Steida/coffee2closure

于 2013-03-12T13:58:30.800 に答える