Rumah > Artikel > hujung hadapan web > Analisis kaedah penggunaan kod berasaskan modul dan pakej Node.js_node.js
Peraturan resolusi laluan modul
Pengaturcara C yang berpengalaman bermula dengan fail make apabila menulis program baharu. Begitu juga, sebelum menggunakan NodeJS untuk menulis program, untuk mendapatkan permulaan yang baik, anda perlu terlebih dahulu menyediakan struktur direktori dan kaedah penggunaan kod, sama seperti membina perancah dahulu semasa membaiki rumah. Bab ini akan memperkenalkan pelbagai ilmu berkaitan.
Peraturan peleraian laluan modul
Kita sudah tahu bahawa fungsi require menyokong laluan mutlak bermula dengan garis miring (/) atau huruf pemacu (C:), dan juga menyokong laluan relatif bermula dengan ./. Walau bagaimanapun, kedua-dua laluan ini mewujudkan hubungan gandingan yang kuat antara modul Setelah lokasi penyimpanan fail modul perlu diubah, kod modul lain yang menggunakan modul ini juga perlu dilaraskan dengan sewajarnya, yang menjadi masalah untuk seluruh badan. . Oleh itu, fungsi memerlukan menyokong bentuk laluan ketiga, ditulis sama dengan foo/bar, dan menghuraikan laluan mengikut peraturan berikut secara bergilir-gilir sehingga lokasi modul ditemui.
Modul terbina dalam
Jika nama yang dihantar kepada fungsi memerlukan ialah nama modul terbina dalam NodeJS, analisis laluan tidak akan dilakukan dan objek modul dalaman yang dieksport akan dikembalikan terus, seperti require('fs').
direktori modul_node
NodeJS mentakrifkan direktori node_modules khas untuk menyimpan modul. Sebagai contoh, laluan mutlak modul ialah /home/user/hello.js Apabila kaedah require('foo/bar') digunakan untuk memuatkan modul dalam modul, NodeJS akan cuba menggunakan laluan berikut dalam urutan. .
/home/user/node_modules/foo/bar /home/node_modules/foo/bar /node_modules/foo/bar
NODE_PATH pembolehubah persekitaran
Sama seperti pembolehubah persekitaran PATH, NodeJS membenarkan menentukan laluan carian modul tambahan melalui pembolehubah persekitaran NODE_PATH. Pembolehubah persekitaran NODE_PATH mengandungi satu atau lebih laluan direktori Laluan dipisahkan oleh : di bawah Linux dan ; Sebagai contoh, pembolehubah persekitaran NODE_PATH berikut ditakrifkan:
NODE_PATH=/home/user/lib:/home/lib
Apabila menggunakan require('foo/bar') untuk memuatkan modul, NodeJS mencuba laluan berikut mengikut turutan.
/home/user/lib/foo/bar /home/lib/foo/bar
Pek
Kita sudah tahu bahawa unit asas modul JS ialah satu fail JS, tetapi modul yang lebih kompleks selalunya terdiri daripada berbilang sub-modul. Untuk memudahkan pengurusan dan penggunaan, kita boleh memanggil modul besar yang terdiri daripada berbilang sub-modul sebagai pakej, dan meletakkan semua sub-modul dalam direktori yang sama.
Di antara semua sub-modul yang membentuk pakej, perlu ada modul kemasukan, dan objek eksport modul kemasukan digunakan sebagai objek eksport pakej. Sebagai contoh, terdapat struktur direktori berikut.
- /home/user/lib/ - cat/ head.js body.js main.js
Direktori kucing mentakrifkan pakej, yang mengandungi 3 sub-modul. main.js berfungsi sebagai modul kemasukan dan kandungannya adalah seperti berikut:
var head = require('./head'); var body = require('./body'); exports.create = function (name) { return { name: name, head: head.create(), body: body.create() }; };
Apabila menggunakan pakej dalam modul lain, anda perlu memuatkan modul kemasukan pakej tersebut. Meneruskan contoh di atas, menggunakan require('/home/user/lib/cat/main') boleh mencapai matlamat, tetapi nampaknya bukan idea yang baik jika nama modul kemasukan muncul dalam laluan. Oleh itu, kita perlu melakukan sedikit kerja tambahan untuk menjadikan pakej berkelakuan lebih seperti satu modul.
index.js
Apabila nama fail modul ialah index.js, semasa memuatkan modul, anda boleh menggunakan laluan direktori di mana modul terletak dan bukannya laluan fail modul Oleh itu, mengikut contoh di atas, dua yang berikut pernyataan adalah setara.
var cat = require('/home/user/lib/cat'); var cat = require('/home/user/lib/cat/index');
Selepas memproses dengan cara ini, anda hanya perlu menghantar laluan direktori pakej ke fungsi yang diperlukan. Rasanya keseluruhan direktori digunakan sebagai satu modul, memberikan rasa yang lebih holistik.
pakej.json
Jika anda ingin menyesuaikan nama fail dan lokasi storan modul kemasukan, anda perlu memasukkan fail package.json dalam direktori pakej dan nyatakan laluan modul kemasukan di dalamnya. Modul kucing dalam contoh di atas boleh difaktorkan semula seperti berikut.
- /home/user/lib/ - cat/ + doc/ - lib/ head.js body.js main.js + tests/ package.json
Kandungan package.json adalah seperti berikut.
{ "name": "cat", "main": "./lib/main.js" }
Dengan cara ini, anda juga boleh menggunakan require('/home/user/lib/cat') untuk memuatkan modul. NodeJS akan mencari lokasi modul kemasukan berdasarkan package.json dalam direktori pakej.