‫Jonas: Dalam kuliah ini saya
‫ingin menunjukkan kepada Anda beberapa hal berbeda yang melibatkan modul.
‫Dan saya ingin memulai dengan membuktikan kepada Anda
‫bahwa Node sebenarnya membungkus kode dalam modul kita menjadi fungsi
‫pembungkus, seperti yang
‫saya tunjukkan pada kuliah terakhir.
‫Jadi mari kita buat file baru lagi, module. js, dan
‫itu modul, seperti ini.
‫Oke, dan yang
‫akan saya lakukan di sini adalah memasukkan argumen ke konsol, oke?
‫Jadi argumen adalah larik dalam JavaScript, dan larik
‫ini berisi semua nilai
‫yang diteruskan ke suatu fungsi.
‫Jadi ketika saya mencatat array argumen ini ke
‫konsol, jika kita benar-benar melihat beberapa
‫nilai di sana, maka itu berarti kita benar-benar dalam suatu fungsi, oke?
‫Jadi mari kita jalankan modul.
‫Dan memang, di sini kita memiliki kode dalam argumen kita.
‫Jadi mari kita ingat lima argumen
‫dari fungsi wrapper.
‫Yang pertama adalah ekspor, jadi yang ini, yang saat
‫ini kosong
‫karena kami tidak mengekspor apa pun.
‫Yang kedua adalah fungsi require, jadi kita bisa
‫melihat bahwa
‫di sini, kita memang memiliki fungsi require.
‫Kemudian yang ketiga disebut modul, oke.
‫Dan dalam modul kita memiliki ekspor modul, yang sekali
‫lagi kita bicarakan di kuliah terakhir.
‫Dan apa yang kita miliki di sini tidak terlalu penting,
‫sekali lagi, saya
‫hanya ingin menunjukkan kepada Anda bahwa kita sebenarnya dalam
‫sebuah fungsi sekarang, sehingga semua kode yang
‫kita miliki dalam modul ini memang dibungkus dengan fungsi pembungkus ini, oke ?
‫Kemudian nomor tiga dan nomor empat adalah nama
‫file dan nama direktori.
‫Dan memang, ini adalah nama modul yang saat ini kita
‫masuki, jadi modul. js.
‫Dan kemudian di sini kita memiliki nama direktori.
‫Jadi saya di desktop
‫saya, dan kemudian di folder ini sekarang Node berfungsi.
‫Jadi mirip dengan yang
‫ini di sini, tapi yang ini memiliki garis miring nama modulnya, oke?
‫Jadi itu membuktikan kepada kita
‫bahwa, memang, semua kode di dalam
‫modul terbungkus, dan bahwa kita memiliki akses ke semua
‫variabel ini, jadi argumen ini, oke?
‫Jadi saya hanya menemukan ini eksperimen menarik yang
‫bisa kita lakukan.
‫Dan kita sebenarnya bisa melakukan hal keren lainnya.
‫Jadi untuk benar-benar menunjukkan kepada
‫Anda fungsi pembungkus, kita bisa meminta modul modul, oke.
‫Jadi ada modul yang disebut
‫modul, yang sebenarnya tidak pernah kami gunakan tetapi secara internal Node menggunakannya.
‫Dan di sana kita memiliki bungkusnya.
‫Jadi sebenarnya properti ini sebenarnya
‫adalah fungsi pembungkus.
‫Jadi sekarang kita bisa melihat itu.
‫Dan di mana itu, ah, ya.
‫Jadi di sini, di sini sebenarnya.
‫Jadi ini adalah fungsi pembungkus.
‫Dan memang Anda melihat ekspor,
‫memerlukan, modul, nama file dan nama direktori, dan
‫kemudian badan fungsi.
‫Jadi inilah yang digunakan Node secara
‫internal, jadi pada dasarnya template ini di sini,
‫ia menggunakannya, dan kemudian mengisi badan fungsi ini dengan kode kita.
‫Oke, jadi sekali lagi, hanya eksperimen yang menarik di sini.
‫Sekarang hal terpenting yang ingin saya
‫tunjukkan di sini adalah bagaimana kita dapat mengekspor dan
‫mengimpor data dari satu modul ke modul lainnya.
‫Jadi mari kita mulai dengan membuat modul baru di
‫sini, di mana saya akan membuat
‫kalkulator, seperti yang saya sebutkan di video terakhir.
‫Jadi, sebut saja test-module-1 ini, karena kita akan
‫memiliki beberapa di antaranya.
‫Dan di sini saya akan membuat kelas kalkulator.
‫Jadi sekali lagi, ini adalah
‫sintaks ES6 untuk menulis kelas dalam JavaScript.
‫Jadi mari kita tambahkan beberapa metode di sini, jadi tambahkan
‫a dan b, tentu saja akan mengembalikan a
‫plus b, jadi hal-hal yang sangat sederhana, kalikan a, b, akan mengembalikan
‫a kali b, dan kemudian, mari kita lakukan
‫pembagian juga,
‫hanya demi kelengkapan di sini, a, b, seperti ini.
‫Berikan save, itu memformatnya dengan baik, dan
‫sekarang kita bisa melakukan module. ekspor, seperti yang kita pelajari
‫di video terakhir,
‫dan kita mengekspor kalkulator kita, oke?
‫Jadi sekali lagi, kami menggunakan modul. ekspor ketika
‫kita ingin mengekspor satu nilai tunggal.
‫Dan dalam hal ini nilai
‫tunggal kami di sini adalah kelas kalkulator.
‫Jadi modul. ekspor persis apa yang
‫dikembalikan dari satu modul, jadi apa pun yang kita
‫taruh di sana, lalu diekspor secara otomatis, bukan?
‫Kami kemudian dapat menyimpan nilai
‫yang diekspor ke variabel saat mengimpornya, jadi mari lakukan sekarang.
‫Dan sekarang di sini kita benar-benar dapat memberikan nama apa pun yang kita inginkan.
‫Jadi nama yang kita ekspor di sisi lain, jadi di
‫modul lain ini, tidak masalah.
‫Kita bisa menyebutnya apa saja yang kita inginkan di sini.
‫Jadi dalam pengertian itu seperti fungsi normal kembali, kan, jadi
‫kita selalu bisa mengembalikan variabel apa
‫pun, tapi kemudian menyebutnya sesuatu
‫yang lain ketika kita pada dasarnya menyimpan hasil fungsi
‫ke variabel, bukan?
‫Jadi karena ini adalah modul
‫kita sendiri, kita harus menggunakan garis miring titik, jadi apa yang saya
‫lakukan di sini, dan kemudian test-module-1.
‫Dan JS, ingat, kita bisa membuangnya,
‫itu tidak perlu, oke?
‫Jadi variabel C ini di sini, yang huruf besar
‫karena untuk kelas kita biasanya selalu menggunakan nama huruf besar.
‫Dan ingat, kami sebenarnya mengekspor kelas di sini.
‫Oke, jadi sekarang kita bisa menggunakan kelas itu untuk melakukan beberapa perhitungan.
‫Jadi pertama-tama mari kita buat kalkulator
‫baru, kalkulator satu, karena nanti kita
‫akan punya yang lain, oke?
‫Jadi sekarang kami membuat contoh kalkulator baru seperti ini,
‫dan ini seharusnya
‫bukan hal baru bagi Anda saat ini.
‫Dan kemudian mari kita masuk melalui konsol
‫hasil dari benar-benar menggunakan ini.
‫Jadi kal1. tambahkan, dan katakanlah dua dan lima.
‫Berikan selamat, dan sebenarnya mari kita komentari keduanya.
‫Simpan lagi, lalu modul Node, dan
‫inilah hasilnya, tujuh.
‫Jadi itu dua tambah lima, jadi berhasil, kan?
‫Dan di sini, di modul pengujian
‫kami, kami sebenarnya dapat melakukannya dengan cara yang lebih elegan.
‫Jadi kita bisa menetapkan kelas ini di
‫sini langsung ke modul. ekspor, kan?
‫Jadi sekarang kita memiliki deklarasi kelas, jadi itu
‫sedikit seperti deklarasi fungsi, di
‫mana kita mengatakan kalkulator fungsi, dan kemudian ini, dan
‫di sini kita mengatakan kelas, oke?
‫Tapi kita bisa melakukannya dengan ekspresi kelas juga.
‫Jadi seperti ini kami tidak menggunakan
‫nama kalkulator.
‫Jadi salin, beri komentar.
‫Oke, jadi seperti ini.
‫Jadi kami hanya mengatakan bahwa
‫ini adalah kelas, dan kemudian menetapkannya ke variabel.
‫Dan jadi itu sekarang ekspresi.
‫Jadi mari kita jalankan ini
‫lagi, dan tentu saja kita melihat tujuh kita lagi, oke?
‫Jadi sekali lagi, ini hanya untuk benar-benar segera menetapkan nilai yang
‫ingin kita modul. ekspor, dan itu
‫akan menyelamatkan kita dari beberapa baris kode,
‫dan mungkin membuat kode kita terlihat sedikit lebih baik.
‫Oke, jadi begitulah cara kami mengekspor barang dengan modul. ekspor, dan sekarang mari kita
‫lihat bagaimana dan kapan kita dapat menggunakan singkatan
‫ekspor yang juga saya sebutkan di
‫video sebelumnya.
‫Jadi mari kita buat komentar sederhana di sini, module. ekspor.
‫Kemudian di sini hanya ekspor.
‫Jadi tes modul baru, dan sekali lagi, modul-2. js.
‫Dan alternatif untuk melakukan modul. ekspor adalah
‫menambahkan properti ke objek ekspor itu sendiri.
‫Jadi kita bisa melakukannya
‫seperti ini, dan menggunakan kembali contoh kalkulator dari sebelumnya,
‫kita bisa melakukannya seperti ini.
‫Jadi kita cukup menambahkan properti ke objek ekspor.
‫Jadi a dan b akan mengembalikan a
‫plus b, ekspor. kalikan a, b akan mengembalikan a
‫kali b,
‫dan sekarang mari kita duplikat saja untuk kelengkapan lagi, dan oke.
‫Jadi pada dasarnya kami membuat tiga
‫fungsi anonim di sini,
‫ketiganya, dan menugaskannya ke tiga properti ekspor.
‫Dan sekarang ketika kami mengekspor modul ini di sisi
‫lain, jadi dalam modul. js, pada dasarnya kita
‫akan mendapatkan akses ke objek ekspor ini.
‫Jadi izinkan saya menunjukkan itu kepada Anda.
‫Jadi katakanlah const calc2 diperlukan.
‫Sekali lagi, jangan lupa titik dan garis miring, karena
‫itu adalah modul kita sendiri.
‫Oke, dan sekarang calc2 ini adalah objek ekspornya.
‫Oke, jadi izinkan saya menunjukkannya kepada Anda.
‫Menghibur. log, kal2. tambahkan, dua dan lima.
‫Jadi itu akan memberi kita hasil yang sama persis seperti sebelumnya.
‫Dan memang, inilah tujuh kami, sama seperti sebelumnya.
‫Dan jika
‫kita mengalikannya, maka itu seharusnya menjadi 10.
‫Jadi ya, kita punya tujuh di sini dari penjumlahan di sini,
‫dan kemudian perkalian ini memberi kita 10.
‫Jadi saya berharap ini benar-benar
‫membuat perbedaan antara modul. ekspor dan ekspor jelas.
‫Dan sekali lagi, ketika kita hanya menggunakan
‫ekspor, kita dapat menambahkan barang ke objek ini, jadi pada dasarnya properti,
‫dan kemudian ketika kita mengimpornya,
‫jadi ketika kita membutuhkan modul ini, hasil
‫yang akan kita
‫dapatkan adalah sebuah objek yang berisi semua properti ini.
‫Dan karena kita mendapatkan
‫objek, pada dasarnya kita dapat menggunakan kekuatan penghancuran
‫ES6 untuk melakukan keajaiban keren di sini.
‫Jadi biarkan saya menyingkirkan yang ini, atau
‫benar-benar menduplikasinya, mengomentari yang ini, dan jadi kita
‫bisa menggunakan destructuring untuk merusak objek yang kita dapatkan, oke?
‫Dan cara kerjanya seperti ini, jadi kita menggunakan kurung kurawal,
‫lalu kita cukup membuat
‫nama variabel untuk properti di objek itu.
‫Jadi sekali lagi, mari kita gunakan penjumlahan, perkalian, dan pembagian.
‫Jadi itulah nama-nama yang sebenarnya kita miliki
‫pada objek ekspor ini.
‫Jadi tambahkan, kalikan, dan
‫bagi, dan ini sebenarnya harus sama
‫persis dengan nama objek aslinya, oke?
‫Sekarang hal yang akan dilakukan
‫adalah bahwa pada dasarnya itu akan membuat variabel yang
‫disebut cukup berlipat ganda.
‫Dan memang, inilah hasil kami.
‫Dan kita sebenarnya hanya bisa mengimpor yang kita inginkan.
‫Jadi katakanlah kita hanya ingin menambah dan mengalikan, oke?
‫Jadi kami hanya akan mendapatkan akses
‫ke keduanya, alih-alih mengimpor semuanya dari modul.
‫Dan ini adalah pola yang cukup
‫umum yang akan Anda lihat digunakan di
‫Node, dan kami juga akan melakukannya di seluruh proyek.
‫Oke jadi di
‫video kali ini kita membahas tentang fungsi
‫wrapper disini, kemudian kita membahas tentang
‫export dan import menggunakan module. ekspor dan singkatan ekspor.
‫Dan sekarang akhirnya, hanya untuk
‫menyelesaikan, mari kita bicara tentang caching dengan sangat cepat.
‫Oke, jadi mari kita buat test-modul-3 di sini.
‫Dan yang akan saya lakukan di sini adalah membuat konsol. log, jadi pada dasarnya
‫beberapa kode tingkat atas di dalam modul ini.
‫Halo dari modul, oke, lalu saya
‫juga ingin mengekspor fungsi.
‫Hanya satu fungsi tunggal, jadi saya katakan modul. ekspor sama
‫dengan fungsi tanpa argumen apa pun, yang hanya
‫akan masuk ke
‫konsol: catat teks yang indah ini.
‫Hanya beberapa emoji kecil di sini untuk membuatnya sedikit menonjol.
‫Oke, jadi sekarang mari kita membutuhkan modul tes ini.
‫Test-module-3, dan saya tidak menyimpannya ke variabel apa pun.
‫Alih-alih, saya akan langsung memanggil fungsi
‫tanpa menyimpannya ke variabel.
‫Jadi tentu saja kita bisa melakukan
‫itu, lalu kita akan memiliki fungsi dalam sebuah variabel,
‫dan kita bisa memanggilnya.
‫Tapi ini sama persis,
‫karena ini akan mengembalikan fungsi yang kita definisikan, jadi
‫yang ini di sini, kan?
‫Ini akan mengembalikan ini karena kami menggunakan modul. ekspor, dan
‫kemudian segera kita panggil fungsi ini di sini, oke?
‫Jadi sebenarnya mari kita lakukan itu tiga kali.
‫Dan perlu diingat bahwa kami memiliki caching di Node.js. js modul, menurut Anda apa
‫yang akan terjadi ketika kita menjalankan kode ini?
‫Oke, jadi mari kita jalankan ini dan lihat apa yang akan terjadi.
‫Di sini kita mendapatkan hasilnya, halo dari
‫modul, dan kemudian tiga kali mencatat teks yang indah ini.
‫Jadi kami melakukan logging ini tiga kali, karena kami
‫memanggil fungsi yang sama tiga kali.
‫Tapi kita mendapat hello dari modul hanya sekali, oke?
‫Dan itu karena caching.
‫Jadi secara teknis modul ini hanya dimuat
‫sekali, sehingga kode di dalamnya juga dieksekusi sekali saja.
‫Dan itulah mengapa baris kode ini
‫di sini, logging ini hanya dijalankan sekali, oke?
‫Dan dua logging lainnya di sini, baik,
‫mereka berasal dari cache, jadi mereka disimpan di suatu
‫tempat di cache proses Node.
‫Dan setelah kami memanggil fungsi di sini untuk
‫kedua kalinya, itu hanya
‫diambil dari sana, alih-alih memuat modul lagi, oke?
‫Jadi saya yakin itu sangat masuk akal bagi Anda.
‫Dan itulah kuliah kami, sebenarnya.
‫Jika Anda memiliki pertanyaan, tentu saja Anda dapat,
‫seperti biasa, mempostingnya ke Tanya Jawab dan Anda akan mendapatkan bantuan di sana.
‫Jadi itu menyelesaikan seluruh bagian ini.
‫Saya tahu itu adalah perjalanan yang cukup berat sampai kami mencapai titik
‫ini, begitu banyak hal yang harus diambil.
‫Dan jika Anda memperbaiki semuanya 100%,
‫jangan terlalu khawatir tentang itu,
‫karena sepanjang
‫kursus, sebagian besar hal pada akhirnya akan menjadi jelas, oke?
‫Jadi jangan khawatir, lanjutkan saja kursusnya, dan sampai
‫jumpa di bagian selanjutnya.