日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

本篇文章聊聊node的基礎(chǔ),關(guān)于http模塊及module.exports導(dǎo)出共享的理解和案例,希望對(duì)大家有所幫助!


淺析Node.js中的http模塊和導(dǎo)出共享


一、http 模塊

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

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

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

導(dǎo)入 http 模塊

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

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

啟動(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)聽客戶端的請(qǐng)求
server.on('request', function (req, res) {
    console.log('請(qǐng)求中...')
})
// 啟動(dòng)服務(wù)
server.listen(8080, function () {
    console.log('http://127.0.0.1:8080')
})


淺析Node.js中的http模塊和導(dǎo)出共享


2、req 請(qǐng)求對(duì)象

只要服務(wù)器接收到了客戶端的請(qǐng)求,就會(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 是請(qǐng)求對(duì)象 包含了與客戶端相關(guān)的數(shù)據(jù)和屬性
server.on('request', (req) => {
    // req.url 客戶端請(qǐng)求的 url 地址
    const url = req.url
    // req.method 是客戶端請(qǐng)求的 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')
})


淺析Node.js中的http模塊和導(dǎo)出共享


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

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

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

// 導(dǎo)入 http 模塊
const http = require('http')
// 創(chuàng)建 web 服務(wù)器實(shí)例
const server = http.createServer()
// req 是請(qǐng)求對(duì)象 包含了與客戶端相關(guān)的數(shù)據(jù)和屬性
server.on('request', (req, res) => {
    // req.url 客戶端請(qǐng)求的 url 地址
    const url = req.url
    // req.method 是客戶端請(qǐng)求的 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')
})


淺析Node.js中的http模塊和導(dǎo)出共享
淺析Node.js中的http模塊和導(dǎo)出共享


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 是請(qǐng)求對(duì)象 包含了與客戶端相關(guān)的數(shù)據(jù)和屬性
server.on('request', (req, res) => {
    // req.url 客戶端請(qǐng)求的 url 地址
    const url = req.url
    // req.method 是客戶端請(qǐng)求的 method 類型
    const method = req.method
    const str = `請(qǐng)求地址是 ${url} 請(qǐng)求方法是 ${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')
})


淺析Node.js中的http模塊和導(dǎo)出共享
淺析Node.js中的http模塊和導(dǎo)出共享


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

示例:步驟如下

獲取請(qǐng)求的 url 地址

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

判斷用戶請(qǐng)求的是否為 / 或 /index.html 首頁

判斷用戶請(qǐng)求的是否為 /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 是請(qǐng)求對(duì)象 包含了與客戶端相關(guān)的數(shù)據(jù)和屬性
server.on('request', (req, res) => {
    // req.url 客戶端請(qǐng)求的 url 地址
    const url = req.url
    // 設(shè)置默認(rèn)的內(nèi)容為 404 Not Found
    let content = '<h1>404 Not Found!</h1>'
    // 用戶請(qǐng)求頁是首頁
    if(url === '/' || url === '/index.html') {
        content = '<h1>首頁</h1>'
    } else if (url === '/about.html') {
        content = '<h1>關(guān)于頁面</h1>'
    }
    // 設(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')
})


淺析Node.js中的http模塊和導(dǎo)出共享
淺析Node.js中的http模塊和導(dǎo)出共享
淺析Node.js中的http模塊和導(dǎo)出共享
淺析Node.js中的http模塊和導(dǎo)出共享
淺析Node.js中的http模塊和導(dǎo)出共享

二、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)


淺析Node.js中的http模塊和導(dǎo)出共享


3、module.exports 對(duì)象

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

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

示例:

index.js 文件

const blog = '前端雜貨鋪'
 
// 向 module.exports 對(duì)象上掛載屬性
module.exports.username = '李四'
// 向 module.exports 對(duì)象上掛載方法
module.exports.sayHello = function () {
    console.log('Hello!')
}
module.exports.blog = blog


test.js 文件

const m = require('./index')
 
console.log(m)


淺析Node.js中的http模塊和導(dǎo)出共享


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

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

示例:

index.js 文件

module.exports.username = '李四'
 
module.exports.sayHello = function () {
    console.log('Hello!')
}
 
// 讓 module.exports 指向一個(gè)新對(duì)象
module.exports = {
    nickname: '張三',
    sayHi() {
        console.log('Hi!')
    }
}

test.js 文件

const m = require('./index')
 
console.log(m)


淺析Node.js中的http模塊和導(dǎo)出共享


5、exports 和 module.exports

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

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

示例:

index1.js 文件

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


淺析Node.js中的http模塊和導(dǎo)出共享


index2.js 文件

module.exports.username = 'zs'
 
exports = {
    gender: '男',
    age: 22
}


淺析Node.js中的http模塊和導(dǎo)出共享


index3.js 文件

exports.username = '雜貨鋪'
 
module.exports.age = 21


淺析Node.js中的http模塊和導(dǎo)出共享


index4.js 文件

exports = {
    gender: '男',
    age: 21
}
 
module.exports = exports
 
module.exports.username = 'zs'


淺析Node.js中的http模塊和導(dǎo)出共享


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


淺析Node.js中的http模塊和導(dǎo)出共享


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


淺析Node.js中的http模塊和導(dǎo)出共享


注意:為防止混亂,盡量不要在同一個(gè)模塊中同時(shí)使用 exports 和 module.exports


分享到:
標(biāo)簽:Node.js導(dǎo)出共享 http模塊導(dǎo)出共享
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定