1, analisis pembukaan
Helo semua, artikel hari ini terutamanya mengenai siri analisis kod sumber pada perisian tengah "Sambung" dan perisian tengah tambahan yang berkaitan, saya rasa anda juga telah membaca artikel sebelumnya,
Memperkenalkan penggunaan dan tujuan, dan artikel ini juga atas minat saya sendiri, supaya pembaca dapat memahaminya dengan lebih mendalam jika ada yang tidak betul dalam peringkat analisis, sila berikan saya nasihat,
Baiklah! Seperti biasa, mari kita ke intinya. Mari kita lihat contoh, digabungkan dengan analisis pengenalan, seperti berikut:
2. Analisis baris demi baris:
(1), baris pertama, memperkenalkan modul "sambung", mencipta pelayan http|https melalui sambungan dan menyediakan semua fungsi pelayan http.
Perisian tengah "sambung" membolehkan anda mencipta "pelayan" dalam pelbagai cara,
Jadi bagaimana ia dilakukan? Lihat kod sumber:
Lekapkan "createServer" ke "eksport" global, kemudian lanjutkan atribut "createServer" dan lekapkannya semula Tujuannya adalah untuk serasi dengan bentuk tulisan asli,
Mencapai tujuan mencipta dengan cara yang berbeza. Ini juga merupakan idea yang boleh dipelajari oleh semua orang dalam pembangunan harian.
(2) Mari lihat baris kedua "connect.createServer" dan lihat fungsinya Lihat kod sumber di bawah:
"HTTPSServer" dan "HTTPServer" pada asasnya adalah sama, kecuali "HTTPSServer" merangkum kaedah https. Apabila "createServer", anda juga boleh lulus dalam satu siri middleware, yang mempunyai kesan yang sama seperti pengenalan berikutnya, tetapi ia hanya boleh terikat pada direktori root.
(3), teruskan melihat baris ketiga "app.use()", apa yang telah dilakukan, lihat kod sumber berikut:
"connect" ialah prototaip yang diwarisi daripada "server http", ia akan menggantikan requestListener pelayan dengan middleware yang digunakan.
Gunakan "connect.use(route, handle)" untuk menambah middleware pada setiap laluan "handle" middleware ini akan terikat kepada "route" dan disimpan dalam "stack", setiap kali terdapat "request" Bila. diminta,
Lintas timbunan ini, cari "pemegang" yang sepadan dengan "laluan", dan laksanakan "pemegang" Jika "pemegang" akhirnya memanggil "seterusnya()", ia akan terus mencari dan melaksanakan "pemegang" seterusnya.
Dengan merangkumkan "pemegang", anda boleh dengan mudah menambah lebih banyak "persian tengah" berdasarkan "sambung".
(4), akhirnya lihat "dengar(8888)", apakah fungsinya?
Ia sangat mudah Dengan mewarisi objek Pelayan yang mendasari, ia diberikan fungsi "mendengar" untuk mendengar pada port tertentu.
Server.prototype.__proto__ = http.Server.prototype
Berikut ialah keseluruhan kod sumber "connect.js". Untuk menjimatkan ruang, semua ulasan telah dipadamkan, seperti yang ditunjukkan di bawah:
Hanya untuk menambah:
"Mengeksport" objek "persian tengah", dan kemudian mentakrifkan kaedah kepada objek "perisian tengah" secara terus Kaedah ini adalah untuk memuatkan terus modul fail .js dalam folder "perisian tengah".
Gunakan: "exports.utils.merge(exports, exports.middleware)" Ayat ini mengeksport kaedah dalam middleware secara langsung.
Tiga, untuk diringkaskan:
(1) Memahami niat reka bentuk kod sumber akan membantu memaksimumkan keuntungan dalam aplikasi.
(2) Apabila melihat kod sumber, fahami proses sebelum memberi perhatian kepada butiran tatabahasa.
(3), belajar daripada idea pelaksanaan yang bijak dalam kod sumber, tetapi jangan terlalu reka bentuk, reka bentuk demi reka bentuk.
(4), kami akan terus menganalisis perisian tengah yang berkaitan esok dan akan terus mengemas kininya. . . . . .