Ketika Anda seorang pemula, Anda telah menemukan adegan yang benar -benar berbeda dari sudut pandang Anda sebelumnya - untuk apa Javascript digunakan di mata Anda? Efek Khusus? Atau hanya interaksi dengan klien? Dapat dikatakan bahwa JavaScript pertama kali dijalankan di browser. Namun, jika Anda memikirkannya dengan cara ini, browser hanya memberikan konteks yang mendefinisikan apa yang dapat Anda lakukan dengan JavaScript. Di sini Anda dapat menganggapnya sebagai perusahaan serupa. Perusahaan mendefinisikan apa yang dapat Anda lakukan di sini, tetapi tidak banyak bicara tentang apa yang dapat dilakukan bahasa JavaScript itu sendiri. Bahkan, sebagai bahasa yang lengkap, JavaScript dapat digunakan dalam konteks yang berbeda dan mencerminkan kemampuan yang berbeda. NodeJs yang disebutkan di sini sebenarnya adalah untuk terus terang, yang menyediakan konteks dan lingkungan yang sedang berjalan, yang memungkinkan kode JavaScript dijalankan pada backend (di luar lingkungan browser).
Inti dari perutean adalah perutean. Seperti namanya, perutean mengacu pada metode pemrosesan yang berbeda yang kita butuhkan untuk menangani URL yang berbeda, seperti logika bisnis pemrosesan/start dan logika bisnis modul pemrosesan/unggah; Logika tidak konsisten. Pada kenyataannya, proses perutean akan "berakhir" dalam modul routing, dan modul perutean bukanlah modul nyata yang "mengambil tindakan" terhadap permintaan, jika tidak aplikasi kami tidak akan dapat diperluas dengan baik ketika menjadi lebih kompleks.
Di sini kami pertama kali membuat modul yang disebut Requesthandlers, dan menambahkan fungsi placeholder untuk setiap penangan permintaan:
Salinan kode adalah sebagai berikut:
fungsi start () {
console.log ("permintaan pawang 'start' dipanggil.");
function sleep (milidonds) {
var startTime = new date (). getTime ();
while (new date (). getTime () <startTime+milidetik);
}
tidur (10000);
Kembalikan "Hello Start";
}
function unggah () {
console.log ("unggahan unggahan 'pawang' dipanggil.");
mengembalikan "Hello unggah";
}
Exports.start = Mulai;
Exports.upload = unggah;
Dengan cara ini, kita dapat menghubungkan penangan permintaan dan modul perutean untuk membuat rute "memiliki cara untuk mengikuti". Setelah itu, kami bertekad untuk melewati serangkaian penangan permintaan melalui suatu objek, dan kami perlu menggunakan metode yang digabungkan secara longgar untuk menyuntikkan objek ini ke dalam fungsi router (), indeks file utama.js:
Salinan kode adalah sebagai berikut:
var server = membutuhkan ("./ server");
var router = membutuhkan ("./ router");
var requesthandlers = membutuhkan ("./ requesthandlers");
var handle = {};
menangani ["/"] = requesthandlers.start;
menangani ["/start"] = requesthandlers.start;
menangani ["/unggah"] = requesthandlers.upload;
server.start (router.route, handle);
Seperti yang ditunjukkan di atas, mudah untuk memetakan URL yang berbeda ke penangan permintaan yang sama: cukup tambahkan properti dengan kunci "/" ke objek, sesuai dengan requesthandlers.start. Dengan cara ini, kami dapat dengan mudah mengonfigurasi / memulai dan / untuk menangani kedua permintaan untuk memulai. Setelah selesai melihat definisi objek, kami meneruskannya sebagai parameter tambahan ke server, lihat server.js:
Salinan kode adalah sebagai berikut:
var http = membutuhkan ("http");
var url = membutuhkan ("url");
fungsi start (rute, handle) {
function onRequest (request, response) {
var pathname = url.parse (request.url) .pathname;
Console.log ("Permintaan"+Pathname+"Diterima.");
rute (pegangan, pathname);
response.writeHead (200, {"tipe konten": "teks/polos"});
var content = rute (handle, pathname);
response.write (konten);
response.end ();
}
http.createServer (onRequest) .listen (8888);
Console.log ("Server telah dimulai.");
}
Exports.start = Mulai;
Dengan cara ini, parameter pegangan ditambahkan ke fungsi start (), dan objek pegangan dilewatkan sebagai parameter pertama ke fungsi callback route (). Berikut ini mendefinisikan rute.js:
Salinan kode adalah sebagai berikut:
rute fungsi (pegangan, pathname) {
console.log ("Akan merutekan permintaan untuk"+ pathname);
if (typeof handle [pathname] === 'function') {
return handle [pathname] ();
}kalau tidak{
console.log ("Tidak ada penangan permintaan yang ditemukan untuk"+pathname);
kembali "404 tidak ditemukan";
}
}
Exports.Route = rute;
Melalui kode di atas, kami pertama -tama memeriksa apakah penangan permintaan yang sesuai dengan jalur yang diberikan ada, dan jika demikian, kami akan secara langsung memanggil fungsi yang sesuai. Kita bisa mendapatkan fungsi penanganan permintaan dari objek yang ditularkan dengan cara yang sama seperti mendapatkan elemen dari array asosiatif, yaitu, menangani [pathname] (); Ekspresi seperti itu memberi orang perasaan bahwa itu mengatakan "Hai, tolong bantu saya dengan jalan ini." Efek menjalankan program adalah sebagai berikut: