http方法+安裝軟件包+學會寫路由

http模塊

  • http模塊是Node的內置模塊璃赡。
  • http模塊用于構建服務器。

1献雅、http.createServer()

  • 定義:

用于創(chuàng)建一個Node服務器。主要做了兩件事:

  • 處理請求

  • 處理響應

  • 語法:

http.createServer({選項對象},監(jiān)聽函數(shù))
  • 選項對象:可選塌计。是一個object,通過選項對象挺身,傳入一些參數(shù)。

監(jiān)聽函數(shù):是一個回調函數(shù)锌仅。當用戶請求從端口進來后章钾,該函數(shù)立刻被調用。

  • Request對象:請求對象
    • 請求對象:包含與請求有關信息热芹。
  • Response對象:響應對象
    • 響應對象:包含與響應有關的信息贱傀。

返回值

createServer() 方法返回一個Server對象。

示例:


2伊脓、server.listen()

定義

用于監(jiān)聽服務器端口府寒。

語法

server.listen()
server.listen([port[,host][,callback])
server.listen(端口,主機名,回調函數(shù))
  • 端口: 數(shù)值
  • 主機名:字符串
  • 連接數(shù):數(shù)值(最大511)
  • 回調函數(shù):function

返回值

返回服務器對象

示例


3、res.setHeader()

定義

用于設置響應頭信息报腔。特點:

  • 只能設置一個值
  • 多次執(zhí)行
  • 優(yōu)先級低于res.writeHead()

語法

res.setHeader(name, value)
res.setHeader(響應頭屬性名, 對應的值)

返回值

示例

res.setHeader("Content-Type","text/html")
res.setHeader("Content-Type","text/plain")
res.setHeader("Content-Type", "application/json")

4株搔、res.write()

定義

write()方法用于設置響應數(shù)據(jù)。

語法

response.write(chunk[, encoding][, callback]);
response.write(數(shù)據(jù)[,字符編碼][, 回調函數(shù)]);

返回值

布爾值

示例


5纯蛾、res.writeHead()

定義

用于設置響應頭信息纤房。特點:

  • 設置多個值
  • 只能執(zhí)行一次
  • 優(yōu)先級高于res.setHeader()

語法

res.writeHead(statusCode[, statusMessage][, headers]);
res.writeHead(狀態(tài)碼,'狀態(tài)信息',{響應頭});

返回值

返回一個響應對象。以便進行鏈式調用翻诉。

示例


6炮姨、res.end()

定義

end()用于通知服務器響應結束。該方法在響應時必須調用碰煌。

語法

response.end([data[, encoding]][, callback])
res.end('數(shù)據(jù)','字符編碼',回調函數(shù))

返回值

返回this

示例

讀取文件內容

const http = require('node:http')
const fs = require('fs')

const server = http.createServer((req,res) => {
    // console.log(res);//響應對象[ServerResponse]
    // console.log(req);//請求對象[inComingMessage]
    console.log(req.url);
    //設置響應頭的數(shù)據(jù)類型
    // res.setHeader('Content-Type', 'text/html;charset=utf-8')
    // res.write('<h1>你好世界</h1>')
    // res.write('<h2>你好中國</h2>')
    // res.end()

    //讀取index.html內容作為響應數(shù)據(jù)
    res.setHeader('Content-Type', 'text/html;charset=utf-8')
    fs.readFile('./views/index.html',(err,data) => {  
        if(err){
            console.log(err);
            res.end()
        } else {
            res.end(data)//把數(shù)據(jù)寫在這里
        }
    })
    
})

server.listen(3000,'localhost',511,() => {
    console.log('服務器已經(jīng)運行在http://localhost:3000');
})

添加路由

const http = require('node:http')
const fs = require('fs')

const server = http.createServer((req,res) => {
    console.log(req.url);
    res.setHeader('Content-Type', 'text/html;charset=utf-8')
  //添加路由
    //條件判斷 path  = './views/index.html'
     
    // fs.readFile('./views/index.html',(err,data) => {
    // fs.readFile('./views/about.html',(err,data) => {
    fs.readFile('./views/404.html',(err,data) => {
        if(err){
            console.log(err);
            res.end()
        } else {
            res.end(data)//把數(shù)據(jù)寫在這里
        }
    })
    
})

server.listen(3000,'localhost',511,() => {
    console.log('服務器已經(jīng)運行在http://localhost:3000');
})

熟練掌握node.js路由的原生寫法

const http = require('node:http')
const fs = require('fs')

const server = http.createServer((req, res) => {
    console.log(req.url);
    res.setHeader('Content-Type', 'text/html;charset=utf-8')
    //////////////添加路由:router/////////////////
    //條件判斷 path  = './views/index.html'
    let path = './views/'
    switch (req.url) {
        case '/':
            path += 'index.html'
            res.statusCode = 200
            break
        case '/about':
            path += 'about.html'
            res.statusCode = 200
            break
        case '/about-me':
            res.setHeader('Location', '/about')
            res.statusCode = 301
            break
        default:
            path += '404.html'
            res.statusCode = 404
    }
    // fs.readFile('./views/index.html',(err,data) => {
    // fs.readFile('./views/about.html',(err,data) => {
    fs.readFile(path, (err, data) => {
        if (err) {
            console.log(err);
            res.end()
        } else {
            res.end(data)//把數(shù)據(jù)寫在這里
        }
    })

})

server.listen(3000, 'localhost', 511, () => {
    console.log('服務器已經(jīng)運行在http://localhost:3000');
})

Npm install

語法

npm install module-name   //簡寫安裝:npm i express  //刪除 :npm uni express 
npm install -g module-name # -g: //全局安裝
npm i module-name  # npm i是npm install的別名
npm install module-name --save
npm install module-name --not--save
npm install module-name --save-dev

express寫路由

const express = require('express')
const app = express()

app.get('/', function (req, res) {
    // res.send('Hello World')
    res.sendFile('./views/index.html',{root:__dirname})
})
app.get('/about', function (req, res) {
    res.sendFile('./views/about.html',{root:__dirname})
})
app.get('/about-me', function (req, res) {
    res.redirect('/about')
})

//404 page
app.use((req,res) => {
    res.status(404).sendFile('./views/404.html',{root:__dirname})
})

app.listen(3000)

express寫路由開始

  • 查找模塊:登錄npmjs.com 查詢一個你要的第三方模塊
  • 安裝模塊
  • 引入模塊
  • 使用模塊
1.創(chuàng)建文件夾 myname舒岸,右擊點擊終端打開,運行打印index.js文件拄查。
2.創(chuàng)建index.js文件
3.安裝(登錄npmjs.com 查詢一個你要的第三方模塊);
4.例如:npm i express 
詳細:node.js(軟件包管理器) install(安裝)express(表示)
-----------------
5.例如:npm init --yes 
//全自動
----------------
5.例如:pm uni express
詳細:刪除軟件
-----------------
6.例如:運行index.js

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末吁津,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子堕扶,更是在濱河造成了極大的恐慌碍脏,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稍算,死亡現(xiàn)場離奇詭異典尾,居然都是意外死亡,警方通過查閱死者的電腦和手機糊探,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門钾埂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來河闰,“玉大人,你說我怎么就攤上這事褥紫〗裕” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵髓考,是天一觀的道長部念。 經(jīng)常有香客問我,道長氨菇,這世上最難降的妖魔是什么儡炼? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮查蓉,結果婚禮上乌询,老公的妹妹穿的比我還像新娘。我一直安慰自己豌研,他們只是感情好妹田,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著聂沙,像睡著了一般秆麸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上及汉,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天沮趣,我揣著相機與錄音,去河邊找鬼坷随。 笑死房铭,一個胖子當著我的面吹牛,可吹牛的內容都是我干的温眉。 我是一名探鬼主播缸匪,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼类溢!你這毒婦竟也來了凌蔬?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤闯冷,失蹤者是張志新(化名)和其女友劉穎砂心,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛇耀,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡辩诞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了纺涤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片译暂。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡抠忘,死狀恐怖,靈堂內的尸體忽然破棺而出外永,到底是詐尸還是另有隱情崎脉,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布伯顶,位于F島的核電站荧嵌,受9級特大地震影響,放射性物質發(fā)生泄漏砾淌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一谭网、第九天 我趴在偏房一處隱蔽的房頂上張望汪厨。 院中可真熱鬧,春花似錦愉择、人聲如沸劫乱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衷戈。三九已至,卻和暖如春层坠,著一層夾襖步出監(jiān)牢的瞬間殖妇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工破花, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谦趣,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓座每,卻偏偏與公主長得像前鹅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子峭梳,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內容