Identifikasi modul GitHub Seajs relatif jelas. Tetapi itu tidak tercakup dalam segala hal, terutama ketika Anda perlu ditulis dengan tangan [ID Modul] dan [ketergantungan modul], atau ketika Anda menulis alat otomatisasi Anda sendiri untuk mengangkut (PS: SPM tampaknya tidak terlalu mudah beradaptasi dan tidak mudah dilakukan Bagaimanapun, penggunaan setiap struktur direktori proyek dapat sangat bervariasi dan tidak mudah diubah. dan aturan penguraian ID perlu dipahami secara menyeluruh.
Catatan:
1. Pengidentifikasi tingkat atas selalu diuraikan relatif terhadap jalur dasar dasar.
2. Jalur absolut dan jalur root selalu diuraikan relatif terhadap halaman saat ini.
3. Jalur relatif dalam membutuhkan dan memerlukan. Async diuraikan relatif terhadap jalur modul saat ini.
4. Jalur relatif di Seajs. Penggunaan selalu diuraikan relatif terhadap halaman saat ini.
Dalam Seajs, ID modul dapat secara kasar dibagi menjadi tiga jenis: [pengidentifikasi relatif], [pengidentifikasi tingkat atas], dan [jalur normal].
Jalur biasa termasuk "jalur absolut", "jalur root", dll.
Di sini kami fokus pada [logo relatif] dan [logo teratas].
Pengidentifikasi relatif merujuk pada "./", "../", seperti: "./othermodule", "../lib/base".
Pengidentifikasi tingkat atas merujuk ke file atau direktori (dapat berisi: huruf, -, _), seperti: "App/Widget/Select"
Ada tiga tempat di mana ID modul diperlukan:
Salinan kode adalah sebagai berikut: define ("id (1)", ["../ id2 (2)"], fungsi (membutuhkan, ekspor, modul) {
var modulea = membutuhkan ('./ modulea (3)');
})
Catatan: Apakah itu adalah parameter pertama [ID Modul] atau parameter kedua [ID Modul] atau [ID modul yang dapat diandalkan], standar perbandingan akhir adalah [file parsed URI].
Oleh karena itu, ketiga tempat di mana ID perlu ditulis dapat ditulis dengan cara apa pun, dan selama mereka akhirnya diuraikan ke URI yang sama, mereka dianggap sebagai modul yang sama.
Selama proses parsing ID, itu akan diproses terlebih dahulu oleh alias dan jalur yang didefinisikan dalam Seajs.config.
Aturan Resolusi Jalur Dasar
(Lapisan 1, jalur itu sendiri tidak bergantung pada pengaturan apa pun)
1. [Identifikasi tingkat atas] tidak dapat digunakan, karena identifikasi tingkat atas diuraikan relatif terhadap jalur dasar dasar, sehingga basis itu sendiri hanya dapat menggunakan [identifikasi relatif] atau [jalur root], dll.
2. Jalur default pangkalan adalah direktori Seajs.
3. [Identifikasi relatif]: Analisis relatif terhadap halaman saat ini.
Aturan resolusi jalur di jalur
(Lapisan 1, jalur itu sendiri tidak bergantung pada pengaturan apa pun)
1. [Identifikasi relatif]: Di mana harus dikutip, lokasi analitik relatif tergantung pada tempat yang dikutip, dan mengikuti aturan lokal.
2. Bidang di jalur akan diganti dalam bentuk variabel di mana mereka digunakan dan kemudian diuraikan.
Misalnya:
Salin kode sebagai berikut: // blok kode (1)
// definisi jalur:
seajs.config ({
Pangkalan: "./ App/SRC",
jalur:{
"A": "../ Lib", // (1) Jalur Relatif
"lib": "path/to/lib", // (2) logo tingkat atas
"l2": "/lib" // (3) jalur root
}
});
// modul mod/m/m.js:
...
membutuhkan ("a/jQuery");
// => Konversi ke: "../../lib/jQuery"
// => memuat: mod/lib/jQuery (catatan khusus 1)
...
// modul mod/f.js:
...
membutuhkan ("a/jQuery");
// => Konversi ke: "../../lib/jQuery"
// => memuat: lib/jQuery (catatan khusus 2)
...
Aturan resolusi jalur di alias
(Di Layer 2, jalur itu sendiri dapat bergantung pada pengaturan jalur)
1. Aturan alias mirip dengan jalur, dan jalur alias juga dapat menggunakan "variabel" di jalur
2. Pengingat: Coba gunakan [identifikasi tingkat atas], [jalur root], dan [jalur absolut] di jalur dan alias, dan jangan gunakan [identifikasi relatif], karena modul yang berbeda akan diuraikan ke jalur yang berbeda.
3. [Identifikasi relatif]: Di mana harus dikutip, lokasi analitik relatif tergantung pada tempat yang dikutip, dan mengikuti aturan lokal.
aturan resolusi jalur seajs.
[Identifikasi relatif]: Analisis relatif terhadap halaman saat ini.
Tentukan aturan parsing Module ID (1)
(Di lapisan 3, jalur dapat diatur relatif ke alias atau jalur)
Anda dapat menggunakan: [identifikasi relatif], [identifikasi tingkat atas], [jalur root]
Dianjurkan untuk menggunakan [identifikasi tingkat atas]. Jika lokasi modul tidak berada dalam jalur dasar, gunakan [identifikasi relatif] atau [jalur root].
【Identifikasi Relatif】: Analisis relatif terhadap halaman saat ini
Salin kode sebagai berikut: // blok kode (2)
// config - juga gunakan konfigurasi di [blok kode (1)]
// Modul 1, tidak ada ambiguitas, analisis jalur root
define ("/app/src/module/base", ..);
// Modul 2, identifikasi tingkat atas, tingkat atas, relatif terhadap jalur dasar dasar
define ("app/src/module/base", ..);
// Modul 3, dengan ambiguitas dan identifikasi relatif, di sini relatif terhadap halaman saat ini (lihat halaman HTML dari modul ini)
// tetapi bahkan jika [dangkal "id" yang sama] digunakan di tempat lain, modul yang berbeda dapat diuraikan
define ("./ app/src/module/base", ..);
Aturan Resolusi ID Ketergantungan Modul (2)
(Di lapisan 3, jalur dapat diatur relatif ke alias atau jalur)
【Identifikasi relatif】: Analisis jalur dasar dasar relatif
Salin kode sebagai berikut: // blok kode (3)
// config - juga gunakan konfigurasi di [blok kode (1)]
// Tidak ada ambiguitas, relatif terhadap resolusi jalur root
define ("..", ["/app/src/module/base"], ..)
// Tidak ada ambiguitas, identifikasi tingkat atas, relatif terhadap analisis jalur dasar dasar
define ("..", ["app/src/module/base"], ..)
// Ada ambiguitas, relatif terhadap modul saat ini.
// Ketergantungan di sini tampaknya tergantung pada `Modul 3` di [Blok Kode (2)]
// Tetapi jika modul saat ini dan halaman saat ini tidak berada di direktori level yang sama, itu tidak akan diuraikan ke `Modul 3`
define ("..", ["./app/src/module/base"], ..)
Membutuhkan aturan resolusi ID untuk modul lain dalam modul (3)
(Di lapisan 3, jalur dapat diatur relatif ke alias atau jalur)
【Identifikasi relatif】: Analisis jalur dasar dasar relatif
Salin kode sebagai berikut: // blok kode (4)
// config - juga gunakan konfigurasi di [blok kode (1)]
define ("..", [..], function (membutuhkan) {
// Tidak ada ambiguitas, relatif terhadap resolusi jalur root
membutuhkan ("/app/src/modul/basis");
});
define ("..", [..], function (membutuhkan) {
// Tidak ada ambiguitas, identifikasi tingkat atas, relatif terhadap analisis jalur dasar dasar
membutuhkan ("App/SRC/Modul/Basis");
});
define ("..", [..], function (membutuhkan) {
// Ada ambiguitas, relatif terhadap modul saat ini.
// Ketergantungan di sini tampaknya tergantung pada `Modul 3` di [Blok Kode (2)]
// Tetapi jika modul saat ini dan halaman saat ini tidak berada di direktori level yang sama, itu tidak akan diuraikan ke `Modul 3`
membutuhkan ("./ App/src/modul/basis");
})
Pengingat Khusus: Ada tiga tempat dalam modul di mana ID perlu ditulis, dan tidak perlu menggunakan string yang sama, asalkan diuraikan ke dalam modul yang sama.
Meringkaskan:
1. Pengaturan jalur dan alias hanya setara dengan variabel.
2. Gunakan [logo tingkat atas] sebanyak mungkin.
3. Jika Anda tidak dapat menggunakan [pengidentifikasi tingkat atas], seperti rentang direktori relatif besar, cobalah untuk mengatur alias atau jalur untuk menemukannya ke direktori melalui pengidentifikasi [jalur non-relatif], dan kemudian tentukan ID di bawah pengidentifikasi ini.