ホームページ >ウェブフロントエンド >jsチュートリアル >seajsのモジュールの解析ルールの詳細説明とモジュールの使い方まとめ_Seajs
Seajs github モジュールの識別は比較的明確に説明されています。しかし、これはすべてを網羅しているわけではありません。特に、[モジュール ID] と [モジュールの依存関係] を手書きする必要がある場合、またはトランスポート用に独自の自動化ツールを作成する場合 (追記: 結局のところ、spm はあまり適応性がなく、使いやすいとは言えません。)もちろん、プロジェクトのディレクトリ構造は大きく異なる可能性があり、変更するのは簡単ではありません。これがパッケージ管理ツールとして位置付けられている場合は、プロジェクトの自動ビルド ツールであることを期待しないでください。を徹底的に理解する必要があります。
注:
1. トップレベルの識別子は常にベースパスを基準にして解決されます。
2. 絶対パスとルート パスは常に現在のページを基準にして解決されます。
3. require および require.async の相対パスは、現在のモジュール パスを基準にして解決されます。
4. seajs.use の相対パスは常に現在のページを基準にして解決されます。
seajsではモジュールIDは[相対識別子]、[トップレベル識別子]、[通常のパス]の3種類に大別できます。
通常のパスには「絶対パス」、「ルートパス」などがあります。 。
ここでは、[相対ロゴ] と [トップレベルのロゴ] に焦点を当てます。
相対識別子は、「./OtherModule」、「../lib/Base」など、「./」、「../」で始まるものを指します。
トップレベルのロゴは、「app/widget/Select」など、ファイルまたはディレクトリ (文字、-、_ を含めることができます) で始まるロゴを指します
モジュール ID を記述する必要がある場所は 3 か所あります:
ベースパス解析ルール
(レベル 1、パス自体は設定に依存しません)
1. [トップレベルのロゴ] は使用できません。ロゴはベースに対して相対的です。パスによって解析されるため、ベース自体は [相対識別子] または [ルート パス] などのみを使用できます。
2. ベースのデフォルトのパスは seajs のディレクトリです。その他の情報については、seajs の公式 Web サイトを参照してください。seajs が推奨するソース コードのディレクトリ構造ではない場合は、ベース パスを手動で設定してみてください。
3. [相対識別子]: 現在のページを基準にして解析されます。
パス内のパス解析ルール
(レベル 1、パス自体は設定に依存しません)
1. [相対識別]: 参照される場所、相対解析位置に応じて引用される場所にはローカルルールが適用されます。
2. パス内のフィールドは、使用されている変数に置き換えられ、解析されます。
例:
(レベル 3、パスはエイリアスまたはパスに対して相対的に設定できます)
使用できるもの: [相対識別子]、[トップレベル識別子]、[ルート パス]
[ を使用することをお勧めします。最上位の識別子]、モジュールの場所がベース パス内にない場合は、[相対識別子] または [ルート パス] を使用します。
[相対識別子]: 現在のページを基準にして解析されます
// モジュール 1、曖昧さなし、ルート パス解決
define("/app/src/module/Base", ..);
// モジュール 2、曖昧さなし、トップレベルの識別、解析するベースのベースパスに相対
define("app/src/module/Base", ..);
// モジュール 3、あいまいさ、相対識別があります。ここでは現在のページを基準にしています (参照) this module html page)
// しかし、[表面上は同じ "ID"] が他の場所で使用されている場合でも、異なるモジュールが解析される可能性があります
define("./app/src/module/Base",.. );
モジュールの依存関係 ID 解析ルール (2)
(レベル 3、パスはエイリアスまたはパスに対して相対的に設定できます)
[相対識別子]: ベースベースのパス分析に相対
//明確な、ルートパスを基準にして解決されます
define("..", ["/app/src/module/Base"], ..)
// 明確なトップレベルの識別子、ベースベースパス解析
define("..", ["app/src/module/Base"], ..)
//あいまいさ、相対識別があります、ここでは相対的に解析されます現在のモジュール
//ここでの依存関係は [コード ブロック (2)]
の `モジュール 3` に依存しているようです//しかし、現在のモジュールが現在のページと同じディレクトリにない場合、 `モジュール 3`
define("..", [..], function(require){
//曖昧さなし、ルートパスを基準に解決されます
require("/app/src/module/Base") ;
});
define("..", [..], function(require){
// ベースベースパス分析に関連した、明確なトップレベルの識別
require("app/src/module/ベース ");
});
define("..", [..], function(require){
//曖昧性があり、相対的な識別が行われます。ここでは現在のモジュールを基準にして解析されます
//ここでの依存関係は次のようになりますlike [コード ブロック (2)] の `Module 3`
に依存します //しかし、現在のモジュールが現在のページと同じディレクトリにない場合、`Module 3`
として解析されませんrequire(" ./app/src/module/Base");
})
概要:
1. パスとエイリアスの設定は、使用される場所に関係なく、設定された値に置き換えられて解析されます。
2. 可能な限り [トップレベルのロゴ] を使用します。
3. [トップレベルの識別子] が使用できない場合 (たとえば、ディレクトリ スパンが比較的大きい場合など)、[非相対パス] 識別子を使用してディレクトリを見つけるためのエイリアスまたはパスを設定してみてください。次に、この識別子の下に ID を定義します。