Modul adalah bagian integral dari aplikasi yang kuat dan sering membantu kami dengan jelas memisahkan dan mengatur unit kode dalam proyek.
Metode untuk mengimplementasikan modul di JS:
1. Objek representasi literal
2. Mode Modul
3. Modul AMD
4. Modul CommonJS
5. Modul Harmoni ECMascript
Objek literal
Literal objek tidak perlu dipakai menggunakan operator baru, tetapi tidak dapat digunakan pada awal pernyataan, karena awal dapat ditafsirkan sebagai awal blok. Di luar objek, anggota baru dapat ditambahkan ke objek literal menggunakan pernyataan penugasan berikut, mymodule.property = "somevalue".
var mymodule = {myProperty: "somevalue", myconfig: {usecaching: true, bahasa: "en"}, // metode dasar mymethod: function () {// ...}, // informasi output berdasarkan konfigurasi saat ini myMethod2: function () {konsol ("cacing." "Diaktifkan": "Dinonaktifkan"); }, // Tulis ulang konfigurasi saat ini mymethod3: function (newonfig) {if (typeof newonfig === "objek") {this.myconfig = newonfig; console.log (this.myconfig.ibuage); }},}; mymodule.mymethod3 ({bahasa: "fr", usecaching: false})Menggunakan objek literal membantu merangkum dan mengatur kode.
Dalam JavaScript, pola modul digunakan untuk lebih mensimulasikan konsep kelas, dengan cara mana objek terpisah dapat memiliki metode dan variabel publik/pribadi, sehingga menghalangi bagian -bagian khusus dari ruang lingkup global.
Pola modul menggunakan penutupan untuk merangkum negara dan organisasi "swasta". Ini menyediakan cara untuk membungkus campuran metode dan variabel publik/pribadi untuk mencegah kebocoran pada ruang lingkup global dan konflik dengan antarmuka pengembang lain. Melalui mode ini, Anda hanya perlu mengembalikan API publik, dan yang lainnya dikelola dalam penutupan pribadi.
Dalam mode modul, karena adanya penutupan, variabel dan metode yang dinyatakan hanya tersedia dalam mode, tetapi variabel dan metode yang ditentukan pada objek pengembalian tersedia untuk pengguna eksternal.
Implementasi Mode Modul
var testModule = (function () {var counter = 0; return {incrementCounter: function () {return ++ counter;}, resetCounter: function () {console.log ("counter value sebelum reset" +counter); counter = 0;}} () (); // Tingkatkan counterModule.increment. testModule.resetCounter ();Bagian lain dari kode adalah bahwa IncrementCounter () dan resetCounter () tidak dapat dibaca secara langsung. Variabel penghitung sebenarnya sepenuhnya terisolasi dari ruang lingkup global, sehingga bertindak seperti variabel pribadi yang keberadaannya terbatas pada penutupan modul, karena satu -satunya kode yang dapat mengakses ruang lingkupnya adalah dua fungsi ini. Metode di atas telah secara efektif mengatur namespace, jadi dalam kode uji, semua panggilan harus diawali.
// Mode modul yang berisi variabel namespace, publik, dan pribadi var mynamspace = (function () {// variabel penghitung pribadi var myprivatevar = 0; // fungsi pribadi var myprivateMethod = fungsi (foo) {console.log (foo);}; return {// variabel publik mupublicvar variabel publikvarvar: "foo); MyPublicFunction: function (bar) {myprivatevar ++;Variabel global referensi
JavaScript memiliki fitur yang disebut variabel global implisit. Terlepas dari apakah suatu variabel telah digunakan atau tidak, juru bahasa JavaScript membalikkan rantai lingkup untuk menemukan deklarasi var dari seluruh variabel. Jika VAR tidak ditemukan, penerjemah mengasumsikan bahwa variabel adalah variabel global. Jika variabel digunakan untuk operasi penugasan, jika tidak ada sebelumnya, penerjemah akan secara otomatis membuatnya. Ini berarti bahwa sangat mudah digunakan atau membuat variabel global dalam penutupan anonim, tetapi yang lebih sulit adalah bahwa kode tersebut sulit dikelola, terutama ketika orang yang membaca kode melihat banyak pembeda di antara variabel mana yang global dan mana yang lokal.
Untungnya, dalam fungsi anonim, kami dapat memberikan alternatif yang relatif sederhana. Kita dapat meneruskan variabel global ke dalam fungsi anonim sebagai parameter dan menggunakannya. Dibandingkan dengan variabel global implisit, jelas dan cepat. Mari kita ambil contoh:
// modul global var mymodule = (function (jq, _) {function privateMethod1 () {jq (". Container"). Html (test);} return {publicMethod: function () {privateMethod1 ();}}}) (jQuery, _); mymodule.publicMethod (); // modul global var mymodule = (function () {// modul objek var module = {}; privatevariale = "hello"; function privateMethod () {//...boDule.publicproperty = "foobar"; Module.publicem (foobar "; {foobar"; Module.Menyatakan variabel global tanpa mengimplementasikannya dan juga dapat mendukung konsep pengantar global
Masih ada kekurangan tertentu dalam mode modul:
1. Karena kami mengakses anggota publik dan pribadi secara berbeda, ketika kami ingin mengubah visibilitas, kami benar -benar harus memodifikasi setiap keberadaan yang pernah menggunakan anggota itu.
2. Kami tidak dapat mengakses anggota pribadi yang ditambahkan ke metode nanti.
3. Tidak dapat membuat tes unit otomatis untuk anggota pribadi, dan kompleksitas tambahan ditambahkan ketika bug perlu diperbaiki.
4. Pengembang tidak dapat dengan mudah memperluas metode pribadi
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.