Seajs Githubモジュールの識別は比較的明確です。しかし、特に手書き[モジュールID]と[モジュール依存関係]が必要な場合、または輸送する独自の自動化ツールを作成する場合(PS:SPMはあまり適応性がなく、容易ではないようです。結局のところ、プロジェクトのすべてのディレクトリ構造は大きく異なる場合があり、もちろん、そのポジショニングがパッケージ管理ツールであれば、プロジェクトの自動化された構造ツールであるとは思わないでください。 ID解析ルールを完全に理解する必要があります。
注:
1.トップレベルの識別子は、ベースの基本パスに対して常に解析されます。
2。絶対パスとルートパスは、現在のページに対して常に解析されます。
3.必要と要求の相対パス。アシンは、現在のモジュールパスに対して解析されます。
4. seajs.useの相対パスは、現在のページに対して常に解析されます。
SAIJでは、モジュールIDは、[相対識別子]、[トップレベル識別子]、および[通常のパス]の3つのタイプにほぼ分割できます。
通常のパスには、「絶対パス」、「ルートパス」などが含まれます。
ここでは、[相対ロゴ]と[トップロゴ]に焦点を当てます。
相対識別子は、「./」、「../」、「./OtherModule "、" ../lib/base "などを参照します。
トップレベルの識別子は、ファイルまたはディレクトリを参照します(app/widget/select」などのファイルまたはディレクトリを参照してください(文字、 - 、_)
モジュールIDが必要な3つの場所があります。
コードコピーは次のとおりです。定義( "id(1)"、["../ id2(2)"]、function(require、exports、module){
var modulea = require( './ modulea(3)');
})
注:最初のパラメーター[モジュールID]または2番目のパラメーター[モジュールID]、または[信頼性のあるモジュールID]であろうと、最終比較標準は[解析ファイルURI]です。
したがって、IDを作成する必要があるこれらの3つの場所は、何らかの方法で記述でき、最終的に同じURIに解析される限り、それらは同じモジュールと見なされます。
IDを解析する過程で、Seajs.configで定義されたエイリアスとパスによって事前に処理されます。
ベースパス解像度ルール
(レイヤー1、パス自体は設定に依存しません)
1。[上位レベルの識別]は、ベースの基本パスに対して上位レベルの識別が解析されるため、ベース自体は[相対識別]または[ルートパス]などのみを使用できます。
2。ベースのデフォルトパスは、SEAJSディレクトリの場合は、SEAJSの公式Webサイトを参照してください。
3。[相対識別]:現在のページに対して分析します。
パスのパス解像度ルール
(レイヤー1、パス自体は設定に依存しません)
1。[相対識別]:引用する場所、相対的な分析的位置は引用されている場所に依存し、ローカルルールに従います。
2。パス内のフィールドは、使用されてから解析された変数の形式で置き換えられます。
例えば:
コードを次のようにコピーします://コードブロック(1)
//パス定義:
seajs.config({
ベース: "./ app/src"、
パス:{
"a": "../ lib"、//(1)相対パス
「lib」:「path/to/lib "、//(2)トップレベルのロゴ
"l2": "/lib" //(3)ルートパス
}
});
//モジュールmod/m/m.js:
...
require( "a/jquery");
// =>転換: "../../lib/jquery"
// =>ロード:mod/lib/jquery(特別ノート1)
...
//モジュールmod/f.js:
...
require( "a/jquery");
// =>転換: "../../lib/jquery"
// =>読み込み:lib/jquery(特別ノート2)
...
エイリアスのパス解像度ルール
(レイヤー2では、パス自体がパス設定に依存できます)
1.エイリアスのルールはパスに似ており、エイリアスパスはパスで「変数」も使用できます
2。リマインダー:パスとエイリアスで[トップレベルの識別]、[ルートパス]、[絶対パス]を使用してみてください。異なる深さのモジュールが異なるパスに解析されるため、[相対識別]を使用しません。
3。[相対識別]:引用する場所、相対的な分析的位置は引用されている場所に依存し、ローカルルールに従います。
Seajs.USEパス解決ルール
[相対識別]:現在のページに対して分析します。
定義モジュールID解析ルール(1)を定義する
(レイヤー3では、パスはエイリアスまたはパスに比べて設定できます)
使用できます:[相対識別]、[トップレベル識別]、[ルートパス]
[トップレベルの識別]を使用することをお勧めします。
【相対識別】:現在のページに対する分析
コードを次のようにコピーします://コードブロック(2)
//構成 - [コードブロック(1)]の構成も使用します
//モジュール1、あいまいさなし、ルートパス分析
定義( "/app/src/module/base"、..);
//モジュール2、顕著な、トップレベルの識別、ベースの基本パスに対する比較されます
define( "app/src/module/base"、..);
//曖昧さと相対的な識別を伴うモジュール3、ここで現在のページ(このモジュールのHTMLページを参照)を参照してください)
//しかし、[表面的に同じ「id "]が他の場所で使用されていても、異なるモジュールが解析される場合があります
define( "./ app/src/module/base"、..);
モジュール依存関係ID解決ルール(2)
(レイヤー3では、パスはエイリアスまたはパスに比べて設定できます)
【相対識別】:相対ベースの基本パス分析
コードを次のようにコピーします://コードブロック(3)
//構成 - [コードブロック(1)]の構成も使用します
//ルートパス解像度と比較して、あいまいさはありません
定義( ".."、["/app/src/module/base"]、..)
//ベースの基本パス分析と比較して、あいまいさ、トップレベルの識別はありません
定義( ".."、["app/src/module/base"]、..)
//現在のモジュールと比較して、あいまいさがあります。
//ここの依存関係は[コードブロック(2)]の `モジュール3`に依存しているようです
//しかし、現在のモジュールと現在のページが同じレベルのディレクトリにない場合、 `モジュール3`に解析されません
define( ".."、["./app/src/module/base"]、..)
モジュール内の他のモジュールのID解決ルールが必要です(3)
(レイヤー3では、パスはエイリアスまたはパスに比べて設定できます)
【相対識別】:相対ベースの基本パス分析
コードを次のようにコピーします://コードブロック(4)
//構成 - [コードブロック(1)]の構成も使用します
定義( ".."、[..]、function(require){
//ルートパス解像度と比較して、あいまいさはありません
require( "/app/src/module/base");
});
定義( ".."、[..]、function(require){
//ベースの基本パス分析と比較して、あいまいさ、トップレベルの識別はありません
require( "app/src/module/base");
});
定義( ".."、[..]、function(require){
//現在のモジュールと比較して、あいまいさがあります。
//ここの依存関係は[コードブロック(2)]の `モジュール3`に依存しているようです
//しかし、現在のモジュールと現在のページが同じレベルのディレクトリにない場合、 `モジュール3`に解析されません
require( "./ app/src/module/base");
})
特別なリマインダー:モジュールには、IDを書く必要がある3つの場所があり、同じモジュールに解析されている限り、同じ文字列を使用する必要はありません。
要約:
1.パスとエイリアスの設定は、変数にのみ同等です。
2。[トップレベルのロゴ]を可能な限り使用します。
3. [トップレベル識別子]を使用できない場合、ディレクトリスパンなどの[トップレベル識別子]が比較的大きい場合は、[非関連パス]識別子を介してディレクトリにエイリアスまたはパスを設定し、[下のIDを定義してください。この識別子。