Berpikir Modular
Ketika menulis kode dengan Node.js, penting untuk membuat kode yang modular dan reusable. Dengan membagi kode menjadi modul yang lebih kecil, dengan ini kamu bisa membuat kode yang lebih modular, maintainable, reusable, dan efisien.
What should be a module?
Setiap module harus memiliki tujuan yang jelas dan spesifik, dan tidak boleh terlalu kompleks atau tightly coupled dengan module lain. Ini berarti bahwa kamu harus membuat module yang berfokus pada satu tugas atau tanggung jawab, dan dapat digunakan kembali di aplikasi lain atau di file yang lain.
Sebagai contoh, module yang menangani koneksi database hanya bertanggung jawab untuk mengelola koneksi ke database, dan tidak bertanggung jawab untuk tugas lain, seperti validasi data atau logika bisnis. Ini memungkinkan module untuk digunakan kembali di bagian yang berbeda dari aplikasi atau di aplikasi yang berbeda, tanpa harus memodifikasi kode.
Di satu sisi, module yang menangani otentikasi pengguna hanya bertanggung jawab untuk mengotentikasi pengguna, dan tidak bertanggung jawab untuk tugas lain, seperti akses database atau melakukan rendering UI. Ini memungkinkan module untuk mudah diubah-ubah, karena perubahan pada logika otentikasi dapat dilakukan tanpa memengaruhi bagian lain dari aplikasi.
Best export and import patterns
Ketika melakukan export suatu module, gunakan export
keyword diikuti dengan nama function, variable, atau class yang ingin kamu export. Kamu juga bisa menggunakan export default
untuk export satu nilai dari module. dan tidak kalah pentingnya untuk menamai module kamu dengan nama yang jelas dan spesifik. Jangan gajelas namainnya...
Ketika melakukan import suatu module, gunakan import
keyword diikuti dengan nama module, dan kemudian gunakan dot notation untuk mengakses nilai yang di export. Ini memungkinkan kamu untuk secara selektif melakukan import hanya function, variable, atau class yang kamu butuhkan dari module, dan untuk menghindari pencemaran global namespace dari aplikasi kamu.
For example:
export function myFunction() {
// ...
}
export const myVariable = 42;
import { myFunction, myVariable } from './modules/myModule.js';
Index.js pattern (bouncing files)
Dengan Index.js
pattern, kamu bisa membuat module yang lebih modular dan reusable.
Sebagai contoh, ketika kamu punya dua module yang kamu export dari folder modules
, kamu bisa membuat file index.js
di dalam folder modules
yang mengekspor kedua module tersebut:
// modules/myModule1.js
export function myFunction1() {
// ...
}
export function myFunction2() {
// ...
}
export { myFunction1 } from './myModule1.js';
export { myFunction2 } from './myModule2.js';
import { myFunction1, myFunction2 } from './modules';
Dengan menggunakan pola index.js
, kamu bisa menyederhanakan pernyataan import kamu dan membuat kode kamu lebih mudah dibaca.