Artikel ini akan memperkenalkan anda kepada modul http Node.js dan memperkenalkan kaedah createServer dan mendengar saya harap ia akan membantu anda!
Gunakan Node.js untuk mencipta perkhidmatan web, terutamanya bergantung pada modul http
terbina dalam. Rangka kerja express.js dan koa.js klasik semuanya dirangkumkan pada tahap yang berbeza-beza dengan modul http
sebagai teras.
Mencipta perkhidmatan web yang paling mudah hanya memerlukan beberapa baris kod. Cipta fail index.js
baharu dan masukkan kandungan berikut:
// 1.导入 http 模块 const http = require('http'); // 2. 调用 createServer 方法创建服务 const server = http.createServer((request, response) => { // 3.响应给浏览器的内容 response.end('Hello, World'); }); // 4.执行 listen 方法,启动服务 server.listen(3000, () => { console.log('服务器启动成功:http://localhost:3000') })
Kemudian buka alat baris arahan dan gunakan perintah node
untuk melaksanakan fail:
node index.js
The alat baris arahan akan mencetak :
服务器启动成功:http://localhost:3000
Kemudian buka penyemak imbas dan lawati http://localhost:3000, anda akan melihat kandungan berikut:
Di sini, hanya diperlukan hanya 6 baris kod untuk mencipta perkhidmatan web. [Tutorial berkaitan yang disyorkan: tutorial video nodejs, Pengajaran pengaturcaraan]
Seperti yang anda lihat, kaedah teras untuk mencipta Web perkhidmatan adalahcreateServer
Kaedah.
Ia menerima fungsi panggil balik dan parameter panggil balik menerima dua parameter, iaitu:
Fungsi panggil balik ini ialah pemprosesan http permintaan, tempat utama untuk menetapkan respons http. Oleh itu, menulis perkhidmatan web sebenarnya sentiasa memproses permintaan dan kandungan respons dalam fungsi ini. Ini juga ditentukan oleh model respons-permintaan berdasarkan protokol HTTP itu sendiri. Sudah tentu, dalam pembangunan sebenar, kita pasti tidak boleh menulis dalam cara yang bercampur-campur Kita semua menggunakan rangka kerja, yang akan mempunyai mekanisme dan lapisan perantara yang sangat munasabah.
Kita semua tahu bahawa protokol TCP ialah protokol asas protokol HTTP dan semua data permintaan HTTP dihantar menggunakan TCP. Untuk menghantar permintaan HTTP, sambungan TCP mesti diwujudkan dahulu.
Perkara yang sama berlaku untuk mencipta perkhidmatan HTTP dalam Node. Selepas kaedah createServer
dilaksanakan, contoh kelas Server
akan dibuat Kelas Server
mewarisi daripada kelas net
dalam modul terbina dalam lain Server
, yang mempunyai kaedah listen
. . Di bawah ialah pengisytiharan jenis yang berkaitan untuk memahami perhubungan.
// net 模块 class Server extends EventEmitter { /** * 启动服务器监听连接。此 Server 可以是 TCP 或 IPC 服务器,具体取决于它所监听的内容。 */ // 有若干重载,这是最常使用的一种方法 listen(port?: number, hostname?: string, listeningListener?: () => void): this; listen(port?: number, listeningListener?: () => void): this; } // http 模块 import { Server as NetServer } from 'node:net'; function createServer< Request extends typeof IncomingMessage = typeof IncomingMessage, Response extends typeof ServerResponse = typeof ServerResponse, >(requestListener?: RequestListener<Request, Response>): Server<Request, Response>; class Server< Request extends typeof IncomingMessage = typeof IncomingMessage, Response extends typeof ServerResponse = typeof ServerResponse, > extends NetServer {}
Jadi selepas mencipta perkhidmatan melalui kaedah createServer
, anda juga menggunakan untuk memanggil kaedah listen
untuk memulakan perkhidmatan dan mendengar sambungan .
Ia mempunyai berbilang beban yang paling biasa digunakan adalah untuk mendengar port Selepas permulaan berjaya, laksanakan fungsi panggil balik:
server.listen(3000, () => { console.log('服务器启动成功:http://localhost:3000') })
Jika perkhidmatan gagal dimulakan. contohnya, port telah diduduki , ralat akan dilaporkan terus dalam konsol dan fungsi panggil balik seterusnya tidak akan dilaksanakan lagi.
Memperkenalkan dua lagi beban berlebihan, yang tidak banyak digunakan.
Salah satunya ialah tidak menyatakan nombor port, dalam keadaan ini sistem pengendalian akan memberikan nombor port yang tersedia secara rawak. Selepas perkhidmatan dimulakan dengan jayanya, anda boleh mendapatkan nombor port yang ditetapkan melalui atribut server.address().port
:
server.listen(() => { const port = server.address().port console.log(port) console.log('服务器启动成功:http://localhost:', port) })
Cuba:
Salah satunya ialah Nyatakan nama hos untuk mendengar.
Apabila host
tidak dinyatakan, lalai ialah 0.0.0.0
(IPv4) atau ::
(IPv6 menyokong akses daripada semua hos dalam rangkaian ).
Jika ditetapkan kepada locolhost
atau 127.0.0.1
, ia hanya boleh diakses oleh hos anda sendiri.
server.listen(3000, 'localhost', () => { console.log('服务器启动成功:http://localhost:', port) })
Kami telah memperkenalkan penggunaan asas modul http
, terutamanya menggunakan createServer
untuk mencipta perkhidmatan, dan kemudian memanggil kaedah listen
untuk memulakan perkhidmatan dan dengar sambungan. createServer
menerima fungsi panggil balik untuk memproses permintaan tertentu untuk menulis perkhidmatan web terutamanya menggunakan dua parameter fungsi panggil balik, request
dan response
, yang akan diperkenalkan secara terperinci kemudian.
Untuk lebih banyak pengetahuan berkaitan nod, sila lawati: tutorial nodejs!
Atas ialah kandungan terperinci Pembelajaran modul Node http: bercakap tentang penggunaan asas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!