CoffeeScriptコードをオンザフライでコンパイルし、結果のJavaScriptコードを送信するHttpHandlerを書きたいのですが。 MS [JScript] [1]とIronJSを試しましたが、成功しませんでした。 Java依存関係により配布が非常に難しくなるため、[Rhino] [2]を使用したくありません。
.NETからCoffeeScriptをコンパイルするにはどうすればよいですか?
CoffeeScriptをコンパイルするためのコマンドラインツール。 CoffeeScriptが変更されたときに自動的に再コンパイルするファイルシステムウォッチャーが含まれています。 linux/mac用のcoffee-scriptノードパッケージとほぼ同じです。
CoffeeScript-dotnetに似たコマンドラインツールと、asp.netサイトから要求されたときにCoffeeScriptをコンパイルするhttpハンドラーが含まれています。
リクエストに応じてsassおよびcoffeescriptファイルをコンパイルするAsp.net mvcのライブラリ。縮小と組み合わせもサポートします。
IronJSは、CoffeeScriptコンパイラーを正常にロードしてCoffeeScriptをコンパイルできる.NET javascriptインタープリターです。
Node.jsで手動でコンパイル
node binaries を取得し、binディレクトリをパスに追加します。 node.jsスクリプトを記述して、CoffeeScriptコンパイラーとCoffeeScriptファイルを読み込み、コンパイルしたjavascriptを保存します 。
CoffeeScriptがChirpyで完全にサポートされるようになりました: http://chirpy.codeplex.com/
ランタイムコンパイラを作成したいと具体的に言ったので、これがあなたが探しているものとは正確に一致しない可能性がありますが、主な目的がJavaScript結果を生成する方法を持っている場合は、 Mindscape Web Workbench は興味深いものです。これはVisual Studio.NET 2010の無料の拡張機能で、Extension Managerで利用できます。それはあなたが書いているように、JSにIntellisense、構文強調表示およびコンパイルを提供します。私はそれを使い始めたばかりですが、有望に見えます。スコット・ハンセルマンがそれについて話します ここ 。 LESSとSassもサポートしています。
IKVM、jcoffeescript、Rhinoを使用して.NETからCoffeeScriptをコンパイルできました。 JCoffeeScriptCompilerコンストラクターオーバーロードがパラメーターなしで機能しないことを除いて、それは簡単でした。 Java.util.Collections.EMPTY_LISTをパラメーターとして使用して、正常に実行されました。
これは私がそれをした方法です:
次のステップは、ビルドタスクやHTTPハンドラを作成することです。
Jurassic JavaScript実装を使用する新しい coffeescript-dotnet プロジェクトを確認してください。
CoffeeScriptコンパイラーはInternet Explorerで実行されるようになったので、最近のいくつかの微調整の後、他のJavaScriptのMSフレーバー内にも移動することをお勧めします。最新バージョンの_extras/coffee-script.js
_を含めてみてください。CoffeeScript.compile(code)
を使用することをお勧めします。
直接的な答えはありませんが(見つけてくれるといいのですが)、次のことを参考にして、どのように行われるかを確認してください。
これは古いことはわかっていますが、非常によく似た質問に答えるためにここに来ました。VisualStudio 2012 Expressを使用してCoffeeScriptをコンパイルするにはどうすればよいですか。無料のExpressバージョンでは拡張機能が許可されていないため、かなり前から役立っていた Mindscape Workbench 拡張機能を引き続き使用できなかったことに注意してください。
それは非常に簡単であることがわかりました。 NuGetを使用して Jurassic-Coffee パッケージをインストールするだけです。
このパッケージをmindscapeワークベンチと比較して使用する利点の1つは、HTMLのスクリプトタグからコーヒーを直接参照できることです。コンパイルされたJSを縮小してキャッシュするため、要求されたコーヒーファイルが変更された場合にのみ作業を行うことができます。
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="home.coffee"></script>
</head>
Mindscapeワークベンチを使用すると、コーヒースクリプトのモジュール化に非常に便利な異なるcoffescriptファイルをバンドルできます。ジュラシックコーヒーを使用して#= require
ステートメントで他のコーヒーモジュールファイルを含めます。次に例を示します。
#= require Classes\GridWrapper.coffee
class UsersGrid
constructor:->
@grid = new GridWrapper()
#= require
coffeeファイルのstamentは、mindscapeワークベンチのアプローチよりも実際にクリーンで明確です。これは、これらすべてをインターフェースの背後に隠して、依存関係を簡単に忘れることができるようにします。
注潜在的な問題が1つあります。 Nugetインストーラーは、IIS Express統合マネージパイプラインモードと互換性がない可能性があるweb.configにhttphandlerエントリを挿入します。
したがって、次のエラーが表示される場合があります。
統合マネージパイプラインモードでは適用されないASP.NET設定が検出されました。
これを修正するには、以下に示すハンドラーを削除してください。
<system.web>
//other stuff
<httpHandlers>
<add type="JurassicCoffee.Web.JurassicCoffeeHttpHandler,JurassicCoffee" validate="false" path="*.coffee" verb="*" />
</httpHandlers>
</system.web>
私のメインエディターはVS 2010で、WorkBench拡張機能が大好きです。 .coffeeファイルで[保存]を押すたびにjsに自動コンパイルされるのはいいことです。また、私が読んだことのないSASSを紹介します。
とにかくyour.coffeeと.scssがソースファイルであるため、jsファイルとcssファイルも自動的に縮小/縮小する有料バージョンを提供しています。
特にVS 2010を実行している場合は、すべてのVSユーザーが先に進み、これをインストールすることをお勧めします。
唯一のノック、そして誰かが私を修正するか私に啓蒙してください、それは.coffee構文ではhtml、js、c#コードのように強調表示されないことです。 http://studiostyl.es/ の配色を使用していて、レコード http://studiostyl.es/schemes/coffee- だけを使用している可能性があります私が知っているcoffeescriptという名前の特別な構文強調表示サポートはありません。しかし、今日ワークベンチアドインを使い始めない理由はありません!
わかりましたワークベンチのウェブサイトの主張:構文の強調表示なので、多分それはおそらく私が選んだstudiostyle.esです。
IronJSはCoffeeScriptをサポートするようになり、一般的に他の.NET JSエンジンよりも高速です。
ここに2つを一緒に接続することについてのブログ投稿があります。
http://otac0n.com/blog/2011/06/29/CoffeeDemo-A-Simple-Demo-Of-IronJS-Using-CoffeeScript.aspx
Visual Studio 2010のCoffeeScript
それはChirpyのフォークです(chirpyは、JavaScript、スタイルシート、ドットレスファイルをマッシュ、ミニファイ、検証するためのツールです)
「大丈夫です。他の人の作業に基づいて、私のフォークで動作していると思います。確認してください: http://chirpy.codeplex.com/SourceControl/network/Forks/Domenic/CoffeeScriptFixes = "
そのポートをC#に書き込むだけです。私はJisonをC#に移植しました(これは、CoffeeScriptを実行する基礎となるプロジェクトです)。少し違うかもしれませんが、両方のJisonパーサーは同じように動作します。
私はまだそれをJisonのメインアーキテクチャにプルリクエストしていませんが、すぐにそうする予定です。
バンドルされているextras/coffee-script.js
をWindowsベースのスクリプトホスト(または単にwscript)で実行してみましたが、問題は報告されませんでした。次に、次の行を追加しました:
WScript.Echo(CoffeeScript.compile('a: 1'));
ファイルの最後でwscript
をもう一度実行すると、結果のJavaScriptが正しく印刷されます。
COMオブジェクトを使用していますか? MScriptオブジェクト参照の初期化を担当するコードをもう少し共有できますか?
私は舞台裏でWindowsスクリプトホストを使用するHttpHandlerを実行しました: https://github.com/duncansmart/LessCoffee そして素晴らしい(それもまた *。less ファイルをコンパイルします)。
それはNuGetにあります: http://nuget.org/List/Packages/LessCoffee
それはこの単純なラッパーに基づいています: https://github.com/duncansmart/coffeescript-windows
私はv8を使用して対話型シェルを作成しました。
https://github.com/mattn/coffee-script-v8
これは単一の実行可能ファイルとして機能します。 (外部ファイルは使用しないでください)require()は使用できません。しかし、コーヒースクリプトを学ぶには十分です。
CScriptにシェルアウトする代わりに、Node.jsにシェルアウトできます( ここに自己完結型のWindowsバイナリがあります )
エクストラをコンパイルしようとしました/ coffee-script.js
ファイル、変更されていないjsc
、. NET用の JScript.NET コンパイラに変更すると、多くのエラーが発生しました。ここに注目すべきものがあります:
その他のエラーは、上記のエラーによって引き起こされました。
また、jurassic-coffeeをチェックアウトすることもできます。これは、jurassicで元のコンパイラーを実行するcoffee-scriptコンパイラーでもあります。
スプロケットスタイル「#= require file.coffee」または「#= require file.js
"を使用すると、.coffeeファイルをモジュール化し、コンパイル直前に結合したり、.jsファイルを埋め込んだりできます。
それは、.jsファイルと.coffeeファイルのファイルウォッチャーを備えたHttpHandlerを備えています。
jurassic-coffeeはNugetパッケージとしても入手可能です