ホームページ > ウェブフロントエンド > jsチュートリアル > seajsのモジュールの解析ルールの詳細説明とモジュールの使い方まとめ_Seajs

seajsのモジュールの解析ルールの詳細説明とモジュールの使い方まとめ_Seajs

WBOY
リリース: 2016-05-16 16:55:47
オリジナル
1097 人が閲覧しました

Seajs github モジュールの識別は比較的明確に説明されています。しかし、これはすべてを網羅しているわけではありません。特に、[モジュール ID] と [モジュールの依存関係] を手書きする必要がある場合、またはトランスポート用に独自の自動化ツールを作成する場合 (追記: 結局のところ、spm はあまり適応性がなく、使いやすいとは言えません。)もちろん、プロジェクトのディレクトリ構造は大きく異なる可能性があり、変更するのは簡単ではありません。これがパッケージ管理ツールとして位置付けられている場合は、プロジェクトの自動ビルド ツールであることを期待しないでください。を徹底的に理解する必要があります。
注:
1. トップレベルの識別子は常にベースパスを基準にして解決されます。
2. 絶対パスとルート パスは常に現在のページを基準にして解決されます。
3. require および require.async の相対パスは、現在のモジュール パスを基準にして解決されます。
4. seajs.use の相対パスは常に現在のページを基準にして解決されます。

seajsではモジュールIDは[相対識別子]、[トップレベル識別子]、[通常のパス]の3種類に大別できます。
通常のパスには「絶対パス」、「ルートパス」などがあります。 。

ここでは、[相対ロゴ] と [トップレベルのロゴ] に焦点を当てます。
相対識別子は、「./OtherModule」、「../lib/Base」など、「./」、「../」で始まるものを指します。
トップレベルのロゴは、「app/widget/Select」など、ファイルまたはディレクトリ (文字、-、_ を含めることができます) で始まるロゴを指します

モジュール ID を記述する必要がある場所は 3 か所あります:

コードをコピーします コードは次のとおりです:
define(" id (1)",["../id2 (2)"], function(require, exports, module){
var moduleA = require('./moduleA (3) ');
})

注: 最初のパラメータ [モジュール ID] を定義するか、2 番目のパラメータ [依存モジュール ID] または [必須モジュール ID] を定義するかにかかわらず、最終的な比較基準は [解析されたファイル] です。 URI] 。
したがって、これら 3 つの ID を記述する必要がある箇所は、最終的に同じ URI に解決される限り、どのように記述しても構いません。
ID を解析するプロセスでは、seajs.config で定義されたエイリアスとパスが事前に処理されます。

ベースパス解析ルール
(レベル 1、パス自体は設定に依存しません)
1. [トップレベルのロゴ] は使用できません。ロゴはベースに対して相対的です。パスによって解析されるため、ベース自体は [相対識別子] または [ルート パス] などのみを使用できます。
2. ベースのデフォルトのパスは seajs のディレクトリです。その他の情報については、seajs の公式 Web サイトを参照してください。seajs が推奨するソース コードのディレクトリ構造ではない場合は、ベース パスを手動で設定してみてください。
3. [相対識別子]: 現在のページを基準にして解析されます。
パス内のパス解析ルール
(レベル 1、パス自体は設定に依存しません)
1. [相対識別]: 参照される場所、相対解析位置に応じて引用される場所にはローカルルールが適用されます。
2. パス内のフィールドは、使用されている変数に置き換えられ、解析されます。
例:

コードをコピー コードは次のとおりです:
//コード ブロック (1 )
//パス定義:
seajs.config({
Base:"./app/src",
path:{
"a":"../lib", //(1) 相対パス
"lib":"path/to/lib", //(2) 最上位識別子
"l2":"/lib" //(3) ルートパス
}
});
//モジュール mod/m/m.js:
...
require("a/jquery");
//=> to: "../ ../lib/jquery"
//=> 読み込み中: mod/lib/jquery (特記事項 1)
...
//モジュール mod/f.js :
.. .
require("a/jquery");
//=> に変換: "../../lib/jquery"
//=> : lib/jquery (特記事項2)
...

エイリアスのパス解析ルール
(レイヤー 2、パス自体はパスの設定に依存する可能性があります)
1. エイリアスのルールはパスと似ており、エイリアス パスは次のことができます。パス
の「変数」も使用できます。 2. 注意: パスとエイリアスでは [トップレベルの識別子]、[ルート パス]、[絶対パス] を使用するようにしてください。[相対識別子] は使用しないでください。異なる深さのモジュールが参照されると影響を受けます。
3. [相対識別]: 参照される場合、相対的な解析位置は参照される場所に依存し、ローカル ルールに従います。
seajs.use パス解決ルール
[相対識別子]: 現在のページを基準にして解析されます。
define モジュール ID 解析ルールを定義します (1)

(レベル 3、パスはエイリアスまたはパスに対して相対的に設定できます)
使用できるもの: [相対識別子]、[トップレベル識別子]、[ルート パス]
[ を使用することをお勧めします。最上位の識別子]、モジュールの場所がベース パス内にない場合は、[相対識別子] または [ルート パス] を使用します。
[相対識別子]: 現在のページを基準にして解析されます

コードをコピー コードは次のとおりです:
// コード ブロック (2)
//config -- [コード ブロック (1)] の構成 も使用します

// モジュール 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、パスはエイリアスまたはパスに対して相対的に設定できます)
[相対識別子]: ベースベースのパス分析に相対

コードをコピー コードは次のとおりです:
//コード ブロック (3)
//config -- [コード ブロック (1)] の設定も使用します。

//明確な、ルートパスを基準にして解決されます
define("..", ["/app/src/module/Base"], ..)
// 明確なトップレベルの識別子、ベースベースパス解析
define("..", ["app/src/module/Base"], ..)
//あいまいさ、相対識別があります、ここでは相対的に解析されます現在のモジュール
//ここでの依存関係は [コード ブロック (2)]
の `​​モジュール 3` に依存しているようです//しかし、現在のモジュールが現在のページと同じディレクトリにない場合、 `モジュール 3`


define("..", ["./app/src/module/Base"],..)
の場合、他の ID 解析ルールが必要ですモジュール内のモジュール (3)
(レベル 3、パスはエイリアスまたはパスに対して相対的に設定できます)
[相対識別子]: 基本の基本パス分析に対する相対

コードをコピー コードは次のとおりです:
//コード ブロック (4)
// config -- [コード ブロック (1)] の構成 も使用します

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");
})


特別な注意: ID を書き込む必要があるモジュール内の 3 つの場所では、次のような文字列を使用する必要はありません。同じモジュールとして解析される限り、同じです。

概要:
1. パスとエイリアスの設定は、使用される場所に関係なく、設定された値に置き換えられて解析されます。
2. 可能な限り [トップレベルのロゴ] を使用します。
3. [トップレベルの識別子] が使用できない場合 (たとえば、ディレクトリ スパンが比較的大きい場合など)、[非相対パス] 識別子を使用してディレクトリを見つけるためのエイリアスまたはパスを設定してみてください。次に、この識別子の下に ID を定義します。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート