CoffeeScriptコードをNode.jsとjavascriptの両方で実行するには、どうしたらよいですか?明らかな答えは「Node.jsを使用しない」機能ですが、2つのコード間のコードの移植を中断する他のマイナーな「落とし穴」があるかどうかは疑問でした。Node.jsとブラウザJSの違いに対してコンパイルされたCoffeescript
3
A
答えて
5
心配するちょうど2つのものがある、(あなたがsetTimeout
/clearTimeout
とsetInterval
/clearInterval
とMath
に取り付けたもの以外のすべての機能を使用しないなど)あなたは言語自体を越えたのAPIに依存しないと仮定すると、 :
あなたがではなく、ブラウザでは、ノードに周りにいる
Array::forEach
とArray::indexOf
などの新しいJSの機能に依存することができます。 CoffeeScriptは、それぞれfor x in arr
とif x in arr
の構文でこれらの2つの問題を避けるのに役立ちます。ブラウザでは、グローバルオブジェクトは
window
です。ノードでは、グローバルオブジェクトはglobal
ですが、通常は代わりに項目をエクスポートします。したがって、通常の解決策は、Underscore.jsなどで示されているように、モジュールの上部にroot = this
と書いて、すべてをroot
に添付することです。最も外側のスコープでは、this
は、ブラウザではwindow
を指し、ノードではexports
を指します。
ここでは、モジュールを1つのスクリプトで定義しているとします。そうでない場合は、sstephensonのstitchのようなツールを見てください。ノードの中にrequire
というモジュールを作成しておき、それらをブラウザで「つなぎ合わせる」ことができます。
関連する問題
- 1. CoffeeScriptコンパイルexpress.static __dirname + '/ public'が間違っています
- 2. coffeescriptの 'extends'とnode.jsの 'util.inherits'の相違点
- 3. CoffeeScriptのNode.js module.exports
- 4. スウィフトシェルとスウィフトの違いはコンパイルされました
- 5. CoffeeScriptのコンパイル
- 6. CoffeeScriptはPlay 2.1.0でコンパイルされていません
- 7. ブラウザが開かれていないWebpack:正常にコンパイルされました
- 8. ノード - NODE_MODULE_VERSIONを使用して異なるNode.jsバージョンに対してコンパイルされました。51
- 9. node.jsとブラウザの関数コンテキスト(this)との違い
- 10. 先にコンパイルされたコードとネイティブにコンパイルされたコードの違いは何ですか?
- 11. のNode.jsとCoffeeScriptの - モカとゾンビ
- 12. イベントを通知するログインしてログアウトしたバックボーンjsとcoffeescript
- 13. 私は<strong>ノードでのCoffeeScript</strong>とブラウザでの作業とブラウザだけのために意味のファイルをコンパイルしたいんだ
- 14. Node.js + CoffeeScript - modules/class confusion
- 15. 問題私はCoffeeScriptのに次のJSスニペットを変換しようとしていますCoffeeScriptの
- 16. GuardはCoffeescriptを再コンパイルしない
- 17. python "elif"はelse:ifと違ってコンパイルされていますか?
- 18. Coffeescript、Facebook JS APIとスコープ
- 19. contenteditableネストされたブラウザの相違
- 20. ブラウザのHTMLがPythonでスクレイプされたデータに対応していません
- 21. コンパイルされたラムダ式がプロパティゲッタとセッタとして使用されています:間違ったベンチマーク方法または間違ったラムダ式の構築?
- 22. -fopenmpによって指定されたスレッドでコンパイルされたgfortranとの間違い
- 23. Node.jsとtomcatとの違い
- 24. Flash/ActionScript3でコンパイルされたソースサイズ/相違
- 25. CoffeeScript - サブディレクトリのコンパイル順序
- 26. Node.js CoffeeScript非同期スタイルとループ
- 27. SQLサーバー - ネイティブにコンパイルされたストアドプロシージャと通常のストアドプロシージャの違い
- 28. CoffeeScript(およびJS)で関数が呼び出されないことのテスト
- 29. Node.js - 外部のJSとCSSファイル(単にnode.jsを使用していません)
- 30. cssとjsを小さくしてVisual Studioプロジェクトをコンパイルしてください
+1「root = this」のために - カッツ氏の[安心してこの記事の中のトーン](http://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and)にもかかわらず - これは、バーナム氏が言うように、あなたの人生ははるかに単純になります。 – fish2000
受け入れられた回答としてマークする必要があります –