Berikut adalah 2 file:
// main.js
require('./modules');
console.log(name); // prints "foobar"
// module.js
name = "foobar";
Ketika saya tidak memiliki "var" itu berfungsi. Tetapi ketika saya memiliki:
// module.js
var name = "foobar";
nama tidak akan ditentukan di main.js.
Saya telah mendengar bahwa variabel global buruk dan Anda lebih baik menggunakan "var" sebelum referensi. Tetapi apakah ini kasus di mana variabel global baik?
javascript
node.js
global-variables
never_had_a_name
sumber
sumber
exports
objek.global.foo = 'bar'
dan kemudian mengakses difoo
mana saja Anda suka ... tapi seperti saya katakan dalam jawaban asli saya, itu hampir tidak pernah merupakan hal yang baik.Saya tidak dapat menemukan skenario di mana global
var
adalah pilihan terbaik, tentu saja Anda dapat memilikinya, tetapi lihatlah contoh-contoh ini dan Anda mungkin menemukan cara yang lebih baik untuk mencapai hal yang sama:Skenario 1: Tempatkan barang-barang di file konfigurasi
Anda memerlukan beberapa nilai yang sama di seluruh aplikasi, tetapi itu berubah tergantung pada lingkungan (produksi, dev atau tes), jenis mailer sebagai contoh, Anda akan perlu:
dan
(buat konfigurasi serupa untuk dev juga)
Untuk memutuskan konfigurasi mana yang akan dimuat, buat file konfigurasi utama (ini akan digunakan di seluruh aplikasi)
Dan sekarang Anda bisa mendapatkan data seperti ini:
Skenario 2: Gunakan file konstanta
Dan gunakan seperti ini
Skenario 3: Gunakan fungsi pembantu untuk mendapatkan / mengatur data
Bukan penggemar berat yang satu ini, tapi setidaknya Anda dapat melacak penggunaan 'nama' (mengutip contoh OP) dan menempatkan validasi di tempat.
Dan gunakan itu
Mungkin ada kasus penggunaan ketika tidak ada solusi selain memiliki global
var
, tetapi biasanya Anda dapat berbagi data di aplikasi Anda menggunakan salah satu skenario ini, jika Anda mulai menggunakan node.js (seperti saya beberapa waktu lalu) coba untuk mengatur cara Anda menangani data di sana karena itu bisa sangat cepat berantakan.sumber
Jika kita perlu berbagi banyak variabel, gunakan format di bawah ini
Pemakaian
sumber
Simpan variabel apa pun yang ingin dibagikan sebagai satu objek. Kemudian meneruskannya ke modul yang dimuat sehingga dapat mengakses variabel melalui referensi objek ..
Di file lain ..
sumber
variabel yang dideklarasikan dengan atau tanpa kata kunci var dilampirkan ke objek global. Ini adalah dasar untuk membuat variabel global dalam Node dengan mendeklarasikan variabel tanpa kata kunci var. Sementara variabel yang dideklarasikan dengan kata kunci var tetap lokal ke modul.
lihat artikel ini untuk pemahaman lebih lanjut - https://www.hacksparrow.com/global-variables-in-node-js.html
sumber
Dengan pendapat yang berbeda, saya pikir
global
variabel mungkin merupakan pilihan terbaik jika Anda akan mempublikasikan kode Andanpm
, karena Anda tidak dapat memastikan bahwa semua paket menggunakan rilis kode Anda yang sama. Jadi jika Anda menggunakan file untuk mengeksporsingleton
objek, itu akan menyebabkan masalah di sini.Anda dapat memilih
global
,require.main
atau objek lain yang dibagikan di seluruh file.Tolong beritahu saya jika ada beberapa solusi yang lebih baik.
sumber