Apakah mudah / mungkin untuk melakukan include('./path/to/file')
jenis perintah sederhana di node.js?
Yang ingin saya lakukan adalah memiliki akses ke variabel lokal dan menjalankan skrip. Bagaimana orang biasanya mengatur proyek node.js yang lebih besar dari dunia halo sederhana? (Situs web dinamis yang berfungsi penuh)
Misalnya saya ingin memiliki direktori seperti:
/models
/views
... dll
javascript
node.js
Travis
sumber
sumber
downloadedModules
di direktori yang sama dengan skrip.Jawaban:
Lakukan saja
require('./yourfile.js');
Nyatakan semua variabel yang Anda inginkan di luar akses sebagai variabel global. Jadi, bukannya
var a = "hello"
boleh jadiGLOBAL.a="hello"
atau hanyaa = "hello"
Ini jelas buruk. Anda tidak ingin mencemari ruang lingkup global. Sebaliknya metode yang disarankan adalah untuk
export
fungsi / variabel Anda.Jika Anda ingin pola MVC lihatlah Geddy.
sumber
require
terlihat di modul npm Anda jika Anda tidak mengawali jalur Anda dengan sesuatu seperti./
Anda perlu memahami CommonJS, yang merupakan pola untuk mendefinisikan modul. Anda tidak boleh menyalahgunakan ruang lingkup GLOBAL yang selalu merupakan hal yang buruk untuk dilakukan, alih-alih Anda dapat menggunakan token 'ekspor', seperti ini:
Dan kode klien yang akan menggunakan modul kami:
Kode ini diekstraksi dari API dokumentasi node.js:
http://nodejs.org/docs/v0.3.2/api/modules.html
Juga, jika Anda ingin menggunakan sesuatu seperti Rails atau Sinatra, saya sarankan Express (saya tidak bisa memposting URL, malu Stack Overflow!)
sumber
Jika Anda menulis kode untuk Node, menggunakan modul Node seperti yang dijelaskan oleh Ivan adalah cara yang pasti.
Namun, jika Anda perlu memuat JavaScript yang sudah ditulis dan tidak mengetahui node,
vm
modul adalah cara untuk pergi (dan pasti lebih disukaieval
).Sebagai contoh, ini adalah
execfile
modul saya , yang mengevaluasi skrip dipath
dalamcontext
konteks global atau global:Perhatikan juga: modul yang dimuat dengan
require(…)
tidak memiliki akses ke konteks global.sumber
require.cache
, jadi satu file dapat dimuat beberapa kali.require
seperti biasa:function loadService(name) { return require('./services/' + name); }
kemudian daftarkan layanan namun masuk akal untuk aplikasi.Jika Anda berencana untuk memuat fungsi atau objek file javascript eksternal, muat pada konteks ini menggunakan kode berikut - perhatikan metode runInThisContext:
sumber
Memperluas jawaban @Shripad dan @Ivan , saya akan merekomendasikan agar Anda menggunakan fungsionalitas module.export standar Node.js.
Dalam file Anda untuk konstanta ( misalnya
constants.js
), Anda akan menulis konstanta seperti ini:Kemudian di file di mana Anda ingin menggunakan konstanta itu, tulis kode berikut:
Jika Anda belum pernah melihat
const { ... }
sintaksis sebelumnya: itu adalah penugasan yang merusak .sumber
Maaf untuk kebangkitan. Anda bisa menggunakan modul child_process untuk mengeksekusi file js eksternal di node.js
sumber