seajsにおけるモジュールの解析規則の詳細解とモジュール使用のまとめ


seajs githubモジュールのロゴはすでに言っています。特に手書きの「モジュールID」と「モジュール依存」が必要な場合、あるいは自分で自動化ツールを書いてトラックを作る場合(ps:spmは適応性が強くなくて使いにくいようです。項目ごとのカタログ構造は大きく違っていて、変えにくいです。もちろん、彼の位置付けが管理ツールであれば、あなたのプロジェクトの自動化構築ツールを作ることを期待してはいけません。注意事項:1.トップマークは常にベースパスに対して解析します。2.絶対パスとルートパスは常に現在のページに対して解析します。3.requireとrequire.asyncの相対パスは現在のモジュールパスに対して解析されます。4.seajs.useの相対パスは常に現在のページに対して解析されます。
seajsでは、モジュールのIDは大きく分けて3つに分けられます。【相対識別】、【トップ識別】、【一般パス】、一般経路は「絶対パス」、「ルートパス」などを含みます。
ここでは【相対標識】と【トップマーク】を重点的に説明します。相対標識とは「./」「./」の冒頭のもので、例えば「./Other Module」「./lib/Base」。トップレベルの表示とは、ファイルまたはディレクトリ(アルファベット、-、_を含むことができます。)冒頭の「app/widget/Select」
モジュールIDを書くべきところは3つあります。すなわち、defineの第一パラメータ【モジュールID】であれ、第二パラメータ【依存モジュールのID】であれ、【requireモジュールID】であれ、最終的なマッチング基準は【解析後のファイルURI】です。したがって、この3箇所はIDを書くところは任意の方法で書くことができ、最終的には同じURIであると解析すれば、同じモジュールと見なされる。IDを解析する過程で、予めseajs.com figで定義されているaliasとpathsの処理を経ます。
baseパス解析規則(1階目は、自分のパスは任意の設定に依存しない)1.トップマークはベースパスに対して解析されるので、base自体は【相対識別】または【ルートルート】などを使用することができません。2.baseのデフォルトパスはseajsのディレクトリで、その他の状況はseajs公式サイトを参照してください。seajsのオススメのソースディレクトリ構造ではないなら、できるだけ手動でベースパスを設定します。3.【相対識別】:現在のページに対して解析します。パス解析規則(1階目の経路は任意の設定に依存しない)1.【相対標識】:どこで参照されていますか?相対的な解析位置は参照されているところによって決まり、現地のルールに従います。2.パスのフィールドは変数として使用されている場所に置き換えられ、解析されます。例えば、
define("id (1)",["../id2 (2)"], function(require, exports, module){
    var moduleA = require('./moduleA (3)');
})
aliasにおける経路解析規則(第2層では、自身の経路はpathsの設定に依存することができる)1.aliasの規則はpathsに類似しており、aliasパスもpathsの変数2を使用することができる。異なる深さのモジュール参照で異なる経路に解析されるからです。3.【相対標識】:どこで引用され、相対的な解析位置は引用されたところによって決まり、現地のルールに従います。seajs.useパス解析規則【相対識別】:現在のページに対して解析します。define定義モジュールID解析規則(1)
(第3層のパスは、aliasまたはpathsに対して設定されてもよい)「相対識別」、「トップ識別」、「ルートパス」は、「トップ識別」を使用することを推奨し、モジュールの位置がベースパス内にない場合は、「相対識別」または「ルートパス」を使用することができる。相対識別情報:現在のページ解析
//   (1)
//path :
seajs.config({
    base:"./app/src",
    path:{
        "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)
...
に対して
モジュール依存ID解析規則(2)
(第3層では、経路はaliasまたはpathsに対して設定可能である)【相対的識別】:相対的baseベースパス解析
//    (2)
//config -- [ (1)]

// 1, ,
define("/app/src/module/Base", ..);
// 2, , , base
define("app/src/module/Base", ..);
// 3, , , ( html )
// 【 “ID”】,
define("./app/src/module/Base",..);

define(「.」、「./app/src/module/Base」)モジュール内のrequire他のモジュールのID解析ルール(3)(第3層では、経路はaliasまたはpathsに対して解析ベースパスを設定することができる)。
//   (3)
//config -- [ (1)]

// ,
define("..", ["/app/src/module/Base"], ..)
// , , base
define("..", ["app/src/module/Base"], ..)
// , ,
// 【 (2)】 ` 3`
// , ` 3`

は特に注意しています。モジュール内の3箇所はIDを書くところが必要です。同じように見える文字列を使用する必要はありません。同じモジュールで解析すればいいです。
まとめ:1.pathsとaliasの設定は一つの変数に相当します。どこで使うかは、そこで設定された値に置き換えて解析します。2.できるだけ「トップマーク」を使う。3.ディレクトリが大きいなどの「トップマーク」を使用できない場合は、できるだけaliasまたはpathsを設定し、「非相対パス」の識別を通してディレクトリに位置し、この識別子の下でIDを定義します。