2

私は CoffeeScript に慣れてきたばかりで、クラ​​スに行き詰まっています。このようなクラスを含む JavaScript ファイルを要求できるように、ファイルをノードのように構造化したいです。

Test = require "test.js"

Test.start()

start は Test クラスのメソッドです。

これは可能ですか?

4

3 に答える 3

4

これは可能ですか?

Nodeとまったく同じではありません。requireブラウザ環境には同期はありません。それでも、 AMDを見て、それを行うために多くの非同期ライブラリの1つを試すことができます。最も有名な実装はrequire.jsです。

于 2013-03-06T14:15:50.507 に答える
3

ブラウザー環境で CommonJS モジュール (Node.js が使用するモジュール) を使用する最も簡単な方法は、Browserifyを使用することです。個人的には、AMD のものよりも CommonJS モジュールの定義の方が好きですが、それは単なる個人的な好みです。

require 'test'また、クラスコンストラクターを直接提供するようにクラスをエクスポートするには、クラスを次のように割り当てる必要があることを考慮してくださいmodule.exports

# In test.coffee
module.exports = class Test 
  @start = -> console.log 'start!'

次に、そのファイルをコンパイルするtest.jsと、使用する準備が整います。

Test = require './test'
Test.start()

Node.js では、これはうまく機能します。ブラウザーでは、最初に Browserify (またはその他のツール) を使用してファイルを処理し、それを機能させる必要があります ( CommonJS モジュールが正しく機能するために、適切なrequire関数といくつかexportsの変数が作成されます)。module.exports

于 2013-03-06T14:24:04.190 に答える
2

ステッチヘム(ステッチに触発されたものですが、より優れた機能を備えています) とbrowserifyを見てください。

個人的には裾の方が好きです。あなたはそれで次のようなことができます:

# app/lib/model.coffee

module.exports = class Model
  ...

.

# app/lib/util.coffee

helper1 = -> ...

helper2 = -> ...

module.export = {helper1, helper2}

.

# app/index.coffee

Model = require 'lib/model'
{helper1} = require 'lib/util'

# do whatever you want with required stuff
...

Hem は、CoffeeScript をオンザフライでコンパイルし、必要なすべてのコードを一緒にバンドルします (コードの外部依存関係として npm モジュールと任意の js ライブラリもサポートします。詳細についてはドキュメントを参照してください)。

于 2013-03-06T14:24:21.987 に答える