Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 9631|Jawab: 0

[JavaScript] require() pernyataan Spesifikasi AMD

[Salin tautan]
Diposting pada 13/02/2019 14.01.09 | | |
Posting ini terakhir diedit oleh Summer pada 2019-2-13 14:04

Pada tahun 2009, programmer Amerika Ryan Dahl membuat proyek node.js menggunakan bahasa JavaScript untuk pemrograman sisi server.

Ini menandai kelahiran "pemrograman modular Javascript". Kompleksitas front-end terbatas, dan tidak apa-apa untuk tidak memiliki modul, tetapi di sisi server, harus ada modul untuk berinteraksi dengan sistem operasi dan aplikasi lain, jika tidak, tidak dapat diprogram sama sekali.

Salah satu ide terpenting dalam pemrograman node adalah modul, dan ide inilah yang memungkinkan rekayasa JavaScript skala besar. Pemrograman modular populer di dunia JS, dan didasarkan pada ini, dan kemudian di sisi browser, toolkit seperti requirejs dan seajs juga muncul, bisa dikatakan, di bawah spesifikasi yang sesuai, mengharuskan semua pemrograman modular sebelum ES6, bahkan sekarang, sebelum modul ES6 diimplementasikan sepenuhnya.

Di CommonJS, modul eksposur menggunakan module.exports dan ekspor, dan banyak orang tidak mengerti mengapa ada dua objek yang terbuka, yang akan diperkenalkan nanti

Di CommonJS, ada metode global require() yang digunakan untuk memuat modul. Dengan asumsi ada math.js modul matematika, itu bisa dimuat seperti ini.



Anda kemudian dapat memanggil metode yang disediakan oleh modul:

Justru karena metode require yang digunakan oleh CommonJS, metode require yang digunakan oleh AMD dan CMD juga digunakan nantinya untuk merujuk pada gaya modul

Spesifikasi AMD

Dengan modul sisi server, wajar bagi semua orang untuk menginginkan modul sisi klien. Dan yang terbaik adalah keduanya kompatibel, dan modul dapat berjalan di server dan browser tanpa modifikasi.

Namun, ada batasan utama yang membuat spesifikasi CommonJS tidak dapat diterapkan pada lingkungan browser. Masih kode dari bagian sebelumnya, jika berjalan di browser, akan ada masalah besar



Baris kedua math.add(2, 3) berjalan setelah baris pertama require('math'), jadi harus menunggu beban math.js selesai. Artinya, jika waktu pemuatan lama, seluruh aplikasi akan berhenti di sana dan menunggu.

Ini tidak menjadi masalah di sisi server, karena semua modul disimpan di hard disk lokal dan dapat dimuat secara sinkron, dan waktu tunggu adalah waktu baca hard disk. Namun, untuk browser, ini adalah masalah besar, karena modul ditempatkan di sisi server, dan waktu tunggu tergantung pada kecepatan kecepatan Internet, yang mungkin memakan waktu lama, dan browser dalam keadaan "kematian yang ditangguhkan".


Oleh karena itu, modul sisi browser tidak dapat menggunakan "sinkron", tetapi hanya dapat menggunakan "asinkron". Ini adalah latar belakang lahirnya spesifikasi AMD.

AMD adalah singkatan dari "Asynchronous Module Definition", yang berarti "Asynchronous Module Definition". Ini memuat modul secara asinkron, dan pemuatan modul tidak memengaruhi pengoperasian pernyataan berikutnya. Semua pernyataan yang bergantung pada modul ini ditentukan dalam fungsi callback yang tidak akan berjalan sampai pemuatan selesai.

Modul harus didefinisikan dengan fungsi define() tertentu.


•ID: string, nama modul (opsional)
•dependensi: adalah modul dependen yang ingin kita muat (opsional), menggunakan jalur relatif. , perhatikan bahwa ini adalah format array
• pabrik: metode pabrik, mengembalikan fungsi modul
Jika modul tidak bergantung pada modul lain, modul tersebut dapat didefinisikan langsung dalam fungsi define().


Jika modul juga bergantung pada modul lain, maka argumen pertama dari fungsi define() harus berupa array yang menunjukkan dependensi modul.



Ketika fungsi require() memuat modul di atas, itu akan memuat file Lib.js terlebih dahulu.

AMD juga menggunakan pernyataan require() untuk memuat modul, tetapi tidak seperti CommonJS, ini membutuhkan dua parameter:

Parameter pertama [modul] adalah array, dan anggota di dalamnya adalah modul yang akan dimuat; Callback parameter kedua adalah fungsi callback setelah pemuatan berhasil. Jika Anda menulis ulang kode sebelumnya ke dalam bentuk AMD, tampilannya seperti ini:


math.add() tidak disinkronkan dengan pemuatan modul matematika, dan browser tidak menangguhkan animasi. Jadi jelas, AMD lebih cocok untuk lingkungan browser.

Saat ini, ada dua pustaka Javascript utama yang mengimplementasikan :require.js dan curl.js spesifikasi AMD.







Mantan:init: function (){}方法的写法原因
Depan:【Pertempuran Praktis】Kibana 6.5.2 Tutorial Bahasa Mandarin
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com