11

これはCoffeeScriptの質問だと思います。ファイルでBackboneのクラスを使用できるようにしたいと考えていfoo.coffeeます。コマンドの実行時にバックボーン-rを要求するオプションを使用してみました:coffee

coffee -r "../backbone" -c foo.coffee

コンパイラは、Backboneが未定義であると不平を言いました。私はこれがかなり単純でなければならないと確信しています。CoffeeScriptBackboneを一緒に使用している人々の例を見つけるのは簡単です。また、次のようにファイルの先頭にクラスを要求しようとしました:

Backbone.model = require('../../backbone').Model

class foo extends Backbone.model

メソッドに書き込むことができましconsole.loginitialize。に書き込もうとしたとき、空のオブジェクトを取得しましthisた。console.log{}

誰かがこれを行う方法を教えてもらえますか?

4

2 に答える 2

13

CoffeeScriptBackbone.jsを使用している場合は、 Brunchをチェックすることをお勧めします。それはあなたの困難を乗り越えるだけかもしれません。

于 2011-05-19T16:40:36.940 に答える
10

コードをもっと提供してもらえますか?で発生した問題を再現できませんでしたinitialize。これが私のコードで、ファイルbackbone.jsと同じディレクトリにあります。coffee

Backbone = require './backbone'

class foo extends Backbone.Model
  initialize: ->
    console.log this

new foo

new fooで、が呼び出さinitializeれ、出力は

{ attributes: {},
  _escapedAttributes: {},
  cid: 'c0',
  _previousAttributes: {} }

の問題に関しては-r、それが機能しない2つの理由があり-rます。

require '../backbone'

何にも割り当てずに。バックボーンはグローバルを作成しない(エクスポートのみ)ため、モジュールはrequiredのときに割り当てる必要があります。

次に、-rと組み合わせて使用​​しても、コンパイルされた出力にdライブラリ-cは追加されません。代わりに、コンパイルrequireに必要になります。実際には、wikiに記載されているように、コンパイラ自体を拡張できるようにするためにのみ存在します。たとえば、プリプロセッサまたはポストプロセッサをコンパイルパイプラインに追加します。-r

于 2011-03-05T17:35:20.183 に答える