PENDAHULUAN PENDAHULUAN
Persyaratan didirikan oleh James Burke, yang juga merupakan pendiri spesifikasi AMD.
Persyaratan akan memungkinkan Anda menulis JavaScript dengan cara yang berbeda dari biasanya. Anda tidak akan lagi menggunakan tag skrip untuk memperkenalkan file JS ke dalam HTML, dan Anda tidak perlu lagi mengelola dependensi melalui tag skrip.
Persyaratan adalah kerangka pemuatan modul JavaScript yang sangat kecil dan merupakan salah satu pelaksana terbaik dari spesifikasi AMD. Versi terbaru dari NeedJS hanya 14k setelah kompresi, yang sangat ringan. Ini juga dapat bekerja bersama dengan kerangka kerja lain, dan menggunakan NepseJS pasti akan meningkatkan kualitas kode front-end Anda.
Ada beberapa poin yang patut dicatat saat menggunakan Persetujuan untuk pemuatan modul asinkron:
1. Dua Cara Menulis Definisi Modul
1. Definisi fungsional yang ada dalam dependensi
Jika modul memiliki dependensi: parameter pertama adalah array nama dependensi; Parameter kedua adalah fungsi. Setelah semua dependensi modul dimuat, fungsi akan dipanggil untuk menentukan modul, sehingga modul harus mengembalikan objek yang menentukan modul. Hubungan ketergantungan disuntikkan ke dalam fungsi sebagai parameter, dan daftar parameter sesuai dengan daftar nama ketergantungan satu per satu.
define (['a'], function (aj) {var hello = function () {aj.hello ('i am c.js');} return {hello: hello}});PS: Jenis nilai pengembalian modul tidak dipaksa menjadi objek, dan nilai pengembalian dari fungsi apa pun diizinkan.
2. Definisi Format Modul CommonJS
Membutuhkan: Digunakan untuk memperkenalkan metode yang bergantung pada modul lain.
Ekspor: Ekspor objek yang mengekspor variabel atau metode modul.
Modul: Berisi informasi tentang modul ini.
membutuhkan.config ({baseurl: "", config: {'b': {size: 'besar'}}, paths: {a: 'base/a', b: 'base/b', c: 'base/c'}}); Define (function (membutuhkan, ekspor, modul) {var aj = membutuhkan ("a"); var hello = fungsi () {aj.hello ('i am b.js');} var hello2 = function () {aj.hello ('i am b.js22');} exportss.hello = hello; console. ekspor); console.log ("b.js: module", module); console.log ("b.js: config", module.config ()); // tidak dapat digunakan bersama, pengembalian akan menimpa ekspor sebelumnya/*return {hello: hello2}*/});PS: Objek pengembalian dan ekspor tidak dapat digunakan bersama, pengembalian akan menimpa ekspor sebelumnya.
Berikut ini adalah informasi yang dicetak setelah panggilan:
Ekspor: Dapat dilihat bahwa ekspor adalah atribut modul.
Modul: Ini termasuk Alias, URI, Objek Ekspor, dan Metode Informasi Konfigurasi Modul.
Config: Kita sering perlu meneruskan informasi konfigurasi ke modul. Konfigurasi ini seringkali merupakan informasi tingkat aplikasi dan membutuhkan sarana untuk mewariskannya ke modul.
Di NeedJS, itu diimplementasikan berdasarkan item konfigurasi konfigurasi dari equipsjs.config ().
2. Waspadalah terhadap variabel singleton
Waspadalah terhadap variabel dalam singleton, karena setelah persyaratan membutuhkan satu kali, kebutuhan berikutnya menggunakan cache sebelumnya. Jadi ketika suatu variabel didefinisikan dalam modul, selama persyaratan ini diubah, persyaratan lain akan tetap konsisten.
define (function () {var index = 0; var hello = function (msg) {console.log (msg);} var addIndex = function () {index ++;} var getIndex = function () {return index;} return {hello: hello, hello, hello, addIndex: addIndex, getIndex: getIndex});Ditelepon:
membutuhkan (['a',], function (a) {membutuhkan (['a'], function (a) {console.log (a.getIndex ()); a.addindex (); a.addindex ();}); membutuhkan (['A'], fungsi (a) {konsol.Cetak di atas adalah:
0
2
3. Bersihkan cache
Karena Persyaratan memiliki fungsi caching, tetapi selama pengembangan, kami tidak ingin cache, sehingga kami dapat mengatur Urlargs di membutuhkan.config.
URLARGS: Persyaratan menambahkan parameter kueri tambahan setelah URL saat mendapatkan sumber daya.
Contoh:
Urlargs: "Bust =" + (Tanggal Baru ()). GetTime ()
Ini berguna dalam pengembangan, tetapi ingatlah untuk menghapusnya sebelum digunakan ke lingkungan pembangunan.
4. Muat modul dari paket lain
Persyaratan mendukung modul pemuatan dari struktur paket CommonJS, tetapi memerlukan beberapa konfigurasi tambahan.
Konfigurasi Paket dapat menentukan properti berikut untuk paket tertentu:
1. Nama: Nama Paket (untuk Modul Nama/Pemetaan Pejabat).
2. Lokasi: Lokasi di disk. Posisi relatif terhadap nilai BaseUrl dalam konfigurasi kecuali mereka berisi protokol atau mulai dengan "/".
3. Utama: Setelah panggilan yang diperlukan dimulai dengan "nama paket", modul dalam paket yang akan diterapkan.
Standarnya adalah "utama", kecuali diatur di sini.
Nilai ini relatif terhadap direktori paket.
contoh:
Main.js
membutuhkan.config ({baseUrl: "", paket: [{name: "student", location: "package-stu"}, {name: "teacher", location: "package-tea"}], urlargs: "bust =" + () () (function) (function) (function {); function ("teh"). Teh.hello ();Tea.js:
define (function (membutuhkan, ekspor, modul) {exports.hello = function () {console.log ('Saya seorang guru.');}});Stu.js:
define (function (membutuhkan, ekspor, modul) {exports.name = 'cape';});Store.js:
define (function (membutuhkan, ekspor, modul) {var stu = membutuhkan ("student/stu"); exports.hello = function () {console.log ('i am' + stu.name);}});Saya merasa ada dua hal aneh tentang cara memuat modul dari paket lain (saya tidak mengerti dengan baik):
1. Jika modul dalam paket lain mengacu pada metode penulisan modul lain, akankah pengguna mempengaruhi metode penulisan modul?
2. Main.js dalam paket lain tampaknya tidak berguna, dan tidak ada masalah tanpa konten.
Konten di atas adalah rincian kebutuhan yang digunakan oleh editor, dan saya harap ini akan membantu semua orang!