4

1 つのファイルで定義されたクラスは、他のファイルでは使用できないようです。私はそれらを次のように宣言しようとしました

class exports.Todo extends Backbone.Model ...
...
exports = exports ? this

ただし、コンパイルされたJSに表示され、エクスポートはクロージャーで定義されているため、他のファイルでは使用できません。

// Generated by CoffeeScript 1.3.3
(function() {
  var exports, ...

これを行う適切な方法は何ですか?動作しているように見えるものを使用できますclass window.Todo ......しかし、実際にはJSテストドライバーでは使用できません...

4

1 に答える 1

3

2 つのオプションがあります。コンパイルする前にすべてのコーヒー ファイルを連結する「結合」オプションを指定して coffeescript をコンパイルするか、または行っているのと同様のエクスポートを使用することができます。しかし、名前付けが不十分なため、コンパイラは exports 変数がローカルであると想定して巻き上げ/持ち上げているように見えますが、これは間違っています。適切な方法については、「Coffeescript ファイルからクラスをエクスポートする」を参照してください。

エクスポートが実際に何を指すかは、プログラムをブラウザーで実行するか、 node.js などの別の環境で実行するかによって異なることに注意してください。上記のリンクされた回答は、「グローバル環境」ルートを呼び出すだけのより良い方法を示しており、環境が正しいと信じているものに設定するコードを使用します(node.jsの下でエクスポートし、これはブラウザーのウィンドウを意味します)。

于 2012-06-07T10:28:54.977 に答える