溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Nodejs中的http模塊怎么使用

發(fā)布時(shí)間:2022-11-11 09:43:32 來源:億速云 閱讀:138 作者:iii 欄目:web開發(fā)

這篇文章主要介紹了Nodejs中的http模塊怎么使用的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Nodejs中的http模塊怎么使用文章都會(huì)有所收獲,下面我們一起來看看吧。

一、http 模塊

http 模塊是 Node.js 官方提供的、用來創(chuàng)建 web 服務(wù)器的模塊。

通過 http 模塊提供的 http.createServer() 方法,就能方便的把一臺(tái)普通的電腦,變成一臺(tái) web 服務(wù)器,從而對外提供 web 資源服務(wù)。

1、創(chuàng)建 web 服務(wù)器

  • 導(dǎo)入 http 模塊

  • 創(chuàng)建 web 服務(wù)器實(shí)例

  • 為服務(wù)器實(shí)例綁定 request 事件,監(jiān)聽客戶端的請求

  • 啟動(dòng)服務(wù)器

示例:監(jiān)聽 8080 服務(wù)

// 導(dǎo)入 http 模塊
const http = require('http')
// 創(chuàng)建 web 服務(wù)器實(shí)例
const server = http.createServer()
// 為服務(wù)器實(shí)例綁定 request 事件 監(jiān)聽客戶端的請求
server.on('request', function (req, res) {
    console.log('請求中...')
})
// 啟動(dòng)服務(wù)
server.listen(8080, function () {
    console.log('http://127.0.0.1:8080')
})

Nodejs中的http模塊怎么使用

2、req 請求對象

只要服務(wù)器接收到了客戶端的請求,就會(huì)調(diào)用通過 server.on() 為服務(wù)器綁定的 request 事件處理函數(shù)

示例:在事件處理函數(shù)中,訪問與客戶端相關(guān)的數(shù)據(jù)或?qū)傩?/strong>

// 導(dǎo)入 http 模塊
const http = require('http')
// 創(chuàng)建 web 服務(wù)器實(shí)例
const server = http.createServer()
// req 是請求對象 包含了與客戶端相關(guān)的數(shù)據(jù)和屬性
server.on('request', (req) => {
    // req.url 客戶端請求的 url 地址
    const url = req.url
    // req.method 是客戶端請求的 method 類型
    const method = req.method
    const str = `Your request url is ${url} and request method is ${method}`
    console.log(str)
})
// 啟動(dòng)服務(wù)
server.listen(8080, function () {
    console.log('http://127.0.0.1:8080')
})

Nodejs中的http模塊怎么使用

3、res 響應(yīng)對象

在服務(wù)器的 request 事件處理函數(shù)中,如果想訪問與服務(wù)器相關(guān)的數(shù)據(jù)或?qū)傩?,需要使?response

示例:請求響應(yīng)

// 導(dǎo)入 http 模塊
const http = require('http')
// 創(chuàng)建 web 服務(wù)器實(shí)例
const server = http.createServer()
// req 是請求對象 包含了與客戶端相關(guān)的數(shù)據(jù)和屬性
server.on('request', (req, res) => {
    // req.url 客戶端請求的 url 地址
    const url = req.url
    // req.method 是客戶端請求的 method 類型
    const method = req.method
    const str = `Your request url is ${url} and request method is ${method}`
    console.log(str)
    // 調(diào)用 res.end() 方法 向客戶端響應(yīng)一些內(nèi)容
    res.end(str)
})
// 啟動(dòng)服務(wù)
server.listen(8080, function () {
    console.log('http://127.0.0.1:8080')
})

Nodejs中的http模塊怎么使用

Nodejs中的http模塊怎么使用

4、解決中文亂碼問題

當(dāng)調(diào)用 res.end() 方法,向客戶端發(fā)送中文內(nèi)容時(shí),會(huì)出現(xiàn)亂碼問題,需要手動(dòng)設(shè)置內(nèi)容的編碼格式

示例:解決中文亂碼

// 導(dǎo)入 http 模塊
const http = require('http')
// 創(chuàng)建 web 服務(wù)器實(shí)例
const server = http.createServer()
// req 是請求對象 包含了與客戶端相關(guān)的數(shù)據(jù)和屬性
server.on('request', (req, res) => {
    // req.url 客戶端請求的 url 地址
    const url = req.url
    // req.method 是客戶端請求的 method 類型
    const method = req.method
    const str = `請求地址是 ${url} 請求方法是 ${method}`
    console.log(str)
    // 設(shè)置 Content-Type 響應(yīng)頭 解決中文亂碼問題
    res.setHeader('Content-Type', 'text/html; charset=utf-8')
    // 調(diào)用 res.end() 方法 向客戶端響應(yīng)一些內(nèi)容
    res.end(str)
})
// 啟動(dòng)服務(wù)
server.listen(8080, function () {
    console.log('http://127.0.0.1:8080')
})

Nodejs中的http模塊怎么使用

Nodejs中的http模塊怎么使用

5、根據(jù)不同的 url 響應(yīng)不同的 html 內(nèi)容

示例:步驟如下

  • 獲取請求的 url 地址

  • 設(shè)置默認(rèn)的響應(yīng)內(nèi)容為 404 Not found

  • 判斷用戶請求的是否為 / 或 /index.html 首頁

  • 判斷用戶請求的是否為 /about.html 關(guān)于頁面

  • 設(shè)置 Content-Type 響應(yīng)頭,防止中文亂碼

  • 使用 res.end() 把內(nèi)容響應(yīng)給客戶端

// 導(dǎo)入 http 模塊
const http = require('http')
// 創(chuàng)建 web 服務(wù)器實(shí)例
const server = http.createServer()
// req 是請求對象 包含了與客戶端相關(guān)的數(shù)據(jù)和屬性
server.on('request', (req, res) => {
    // req.url 客戶端請求的 url 地址
    const url = req.url
    // 設(shè)置默認(rèn)的內(nèi)容為 404 Not Found
    let content = '<h2>404 Not Found!</h2>'
    // 用戶請求頁是首頁
    if(url === '/' || url === '/index.html') {
        content = '<h2>首頁</h2>'
    } else if (url === '/about.html') {
        content = '<h2>關(guān)于頁面</h2>'
    }
    // 設(shè)置 Content-Type 響應(yīng)頭 防止中文亂碼
    res.setHeader('Content-Type', 'text/html; charset=utf-8')
    // 調(diào)用 res.end() 方法 向客戶端響應(yīng)一些內(nèi)容
    res.end(content)
})
// 啟動(dòng)服務(wù)
server.listen(8080, function () {
    console.log('http://127.0.0.1:8080')
})

Nodejs中的http模塊怎么使用
Nodejs中的http模塊怎么使用
Nodejs中的http模塊怎么使用
Nodejs中的http模塊怎么使用
Nodejs中的http模塊怎么使用

二、Node.js 中的模塊分類

1、三大模塊分類

  • 內(nèi)置模塊:由 node.js 官方提供的,如 fs、path、http 等

  • 自定義模塊:用戶創(chuàng)建的每個(gè) .js 文件,都是自定義模塊

  • 第三方模塊:由第三方開發(fā)出來的模塊,使用前要先下載

2、模塊作用域

防止了全局變量污染的問題

示例:

index.js 文件

const username = '張三'

function say() {
    console.log(username);
}

test.js 文件

const custom = require('./index')

console.log(custom)

Nodejs中的http模塊怎么使用

3、module.exports 對象

在自定義模塊中,可以使用 module.exports 對象,將模塊內(nèi)的成員共享出去,供外界使用。

外界 require() 方法導(dǎo)入自定義模塊時(shí),得到的就是 module.exports 所指向的對象

示例:

index.js 文件

const blog = '前端雜貨鋪'

// 向 module.exports 對象上掛載屬性
module.exports.username = '李四'
// 向 module.exports 對象上掛載方法
module.exports.sayHello = function () {
    console.log('Hello!')
}
module.exports.blog = blog

test.js 文件

const m = require('./index')

console.log(m)

Nodejs中的http模塊怎么使用

4、共享成員時(shí)的注意點(diǎn)

使用 require() 方法導(dǎo)入模塊時(shí),導(dǎo)入的結(jié)果,永遠(yuǎn)以 module.exports 指向的對象為準(zhǔn)

示例:

index.js 文件

module.exports.username = '李四'

module.exports.sayHello = function () {
    console.log('Hello!')
}

// 讓 module.exports 指向一個(gè)新對象
module.exports = {
    nickname: '張三',
    sayHi() {
        console.log('Hi!')
    }
}

test.js 文件

const m = require('./index')

console.log(m)

Nodejs中的http模塊怎么使用

5、exports 和 module.exports

默認(rèn)情況下,exports 和 module.exports 指向同一個(gè)對象。

最終共享的結(jié)果,還是以 module.exports 指向的對象為準(zhǔn)。

示例:

index1.js 文件

exports.username = '雜貨鋪'

module.exports = {
    name: '前端雜貨鋪',
    age: 21
}

Nodejs中的http模塊怎么使用

index2.js 文件

module.exports.username = 'zs'

exports = {
    gender: '男',
    age: 22
}

Nodejs中的http模塊怎么使用

index3.js 文件

exports.username = '雜貨鋪'

module.exports.age = 21

Nodejs中的http模塊怎么使用

index4.js 文件

exports = {
    gender: '男',
    age: 21
}

module.exports = exports

module.exports.username = 'zs'

Nodejs中的http模塊怎么使用

對 index2.js 文件結(jié)果的解析如下:

Nodejs中的http模塊怎么使用
對 index4.js 文件結(jié)果的解析如下:
Nodejs中的http模塊怎么使用
注意:為防止混亂,盡量不要在同一個(gè)模塊中同時(shí)使用 exports 和 module.exports

關(guān)于“Nodejs中的http模塊怎么使用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Nodejs中的http模塊怎么使用”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI