167

私はこれに関するドキュメントを高低で検索しましたが、どこにも何も見つかりません。

私はAlohaを使用しており、サイドバープロトタイプを使用して、他のプラグイン機能に接続された独自の新しいサイドバーを作成したいと考えています。

彼らのsidebar.jsはこれから始まりますが、それが何を意味するのかを説明するドキュメントを一生見つけることができません。

define( [
    'aloha/core',
    'aloha/jquery',
    'aloha/selection'
], function (Aloha, jQuery, Selection, Plugin) {

次に、そのラッパーで一連の関数を定義します。そのためvars、いくつかの関数を定義しproptotypesます。

そのことわざは何ですか、またはどこで説明を見つけることができますか?

4

2 に答える 2

177

スクリプト全体を見ずに確実に言うことはできませんが、それdefineはRequireJSの関数、特にその関数の「依存関係で定義する」形式である可能性があります。「モジュール」を定義するために使用されます。

モジュールは、グローバル名前空間の汚染を回避するスコープの広いオブジェクトを定義するという点で、従来のスクリプトファイルとは異なります。グローバルオブジェクトを参照することなく、依存関係を明示的に一覧表示し、それらの依存関係のハンドルを取得できますが、代わりに、モジュールを定義する関数への引数として依存関係を受け取ります。

そして、の「依存関係で定義する」形式はdefine次のように説明されます。

モジュールに依存関係がある場合、最初の引数は依存関係名の配列であり、2番目の引数は定義関数である必要があります。すべての依存関係が読み込まれると、関数が呼び出されてモジュールが定義されます。関数は、モジュールを定義するオブジェクトを返す必要があります。

于 2012-04-26T10:11:13.983 に答える
10

これは、モジュールを作成するためのAMDパターンです。AMDは、commonJSのようなものではなく、基本的に非同期でモジュールをインポートする必要がある場合のAsynchronousModuleDefinitionの略です。

define(['module1', 'module2'], function(module1, module2) {
  console.log(module1.sayHi());
});

Defineは依存関係の配列を取り、それらすべてが非ブロッキング方式でバックグラウンド(非同期)にロードされると、defineはコールバックを呼び出します。コールバックは引数(この場合は依存関係)を受け入れます。

もう1つの注意点は、これらのモジュールのそれぞれも「define」キーワードを使用して定義する必要があるということです。したがって、たとえばmodule1は次のように定義されます。

define([], function() {

  return {
    sayHi: function() {
      console.log('Hi Hi');
    },
  };
});

このモジュールの記述方法(AMD)を使用すると、ブラウザーの互換性を念頭に置いて記述でき(nodeJSのようにrequire()は不要)、オブジェクトやJSONなどの多くの形式を定義できますが、commonJSではモジュールをオブジェクトにする必要があります。

AMDには独自の欠点があることを忘れないでください。これが誰かを助けることを願っています。

于 2019-02-27T23:02:51.943 に答える