nodejs -Express

Node 原生 http 在某些方面不足以應對開發需求,因此就須要使用框架來加快開發效率html

Express 是輕快簡潔的 Web開發框架,其實就是封裝的 http。使用教程可查看 官網教程,使用前先下載這個第三方包node

npm install express --save

 

建立入口文件 app.jsexpress

var express = require('express') //引包
var app = express() //建立服務器應用程序,至關於原來的http.createServer() //當服務器收到get請求 / 時侯,執行回調處理函數
app.get('/',function (req,res) { res.send('Hello Express') //原來Node的write()、end()等api依舊可以使用
}) app.listen(3000,function () { console.log('app is running at port 3000.') })

 

命令行執行 app.js,而後在瀏覽器發起請求,獲得響應結果 Hello Express。這即是最簡單的 express應用npm

 


 基本路由json

指一種映射關係,或者說是導航,如 get 請求 / 時執行對應函數,post請求 /login 時執行其對應函數,每一個請求都有對應的處理函數api

請求方式、請求路徑和請求處理函數,就組成了一個路由瀏覽器

app.get('/',function (req,res) { //get
    res.send('Hello Express') }) app.post('/login',function (req,res) { //post
    res.send('Nice to meet you') })

 


 靜態資源服務器

公開指定目錄供外界訪問app

//當請求路徑爲/public開頭時,可訪問public目錄中的資源
app.use('/public',express.static('./public/')) /*若省略第一個參數,則訪問時直接寫資源名,如public下有a.jpg,則http://127.0.0.1:3000/a.jpg能夠訪問,
http://127.0.0.1:3000/public/a.jpg則訪問不到*/
app.use(express.static('./public/')) //第一個參數不必定表明真實目錄名,也能夠起別名,如只有/abc開頭的請求才能訪問public目錄下的資源 app.use('/abc',express.static('./public/'))

 


Express中使用art-template框架

要先安裝 art-templateexpress-art-template

express-art-template 專門將 art_template 整合到 Express,由於 express-art-template 依賴了 art-template,因此二者都要 npm 下載

npm install --save art-template express-art-template  //一次性安裝多個包

 

配置

//配置使用art-template模板引擎,第一個參數表示使用art-template來渲染.html結尾的文件
app.engine('html',require('express-art-template'))  app.get('/',function (req,res) { //Express爲response對象提供了render()方法,默認不可用,配置了模板引擎才能使用
    //res.render('html模版名',{模板數據}),會自動讀取文件,渲染數據.第二個參數可省略,也就是不渲染直接輸出
    res.render('index.html',{ title:'用戶信息', content:'這是內容' }) })

Express有個約定,但願開發人員把全部的視圖文件都放到 views 目錄中 

render() 方法第一個參數不能寫路徑,默認會從項目中的views目錄查找該模板文件

 

index.html模板和項目結構

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ title }}</title>
</head>
<body>
    <p>{{ content }}</p>
</body>
</html>

 

 

修改默認的 views 視圖渲染存儲目錄

//第一個參數不是路徑,是指默認的views目錄,第二個參數是路徑
app.set('views', '自定義目錄')

 


中間件

get 請求是經過 url 拼接字符串的方式將參數傳給後臺

原生 http 是沒有request.query的,但 express 的 http,已將查詢字符串做爲對象封裝到了 request 中,因此直接 request.query 便可獲取瀏覽器發來的值

 

post 請求將數據放在請求體中,而 Express 沒有提供相應 API 來獲取 post 請求體,但可利用第三方插件 

 

Express 的中間件 body-parser 就是專門解析 post 請求的,所謂中間件應該就是爲了增長功能的中間插件

先下載 body-parser 中間件,注意不要少個 r

npm install --save body-parser 

再按教程配置

var express = require('express') var bodyParser = require('body-parse') //引包
var app = express() //配置body-parser,只要加了這個配置,在req請求對象上會多一個body屬性
app.use(bodyParser.urlencoded({ extended:false })) app.use(bodyParser.json()) app.post('/post',function (req,res) { console.log(req.body) //輸出結果爲對象
})

 

Express 的重定向,不管是 send() 仍是 redirect() , Express 都會幫咱們 end() 來結束響應

// res.statusCode = 302
// res.setHeader('Location','/') // res.end() res.redirect('/') //以上三步是Node的寫法,依舊可用,但如今封裝好了,可直接一句代碼實現重定向

 


nodemon

使用 window 的命令行工具,修改代碼後要手動重啓服務器,使用 nodemon 可自動重啓,它是基於Node.js開發的的一個第三方命令行工具

npm install --global nodemon //要全局安裝,可在任意目錄執行此命令,用--global安裝的包可在任意目錄執行

安裝後經過 nodemon -v 命令查看版本號檢查是否安裝成功,以後執行命令時把 node 換成 nodemon 便可

只要是經過 nodemon 啓動的服務,它會檢查文件的變更而後自動重啓服務器,每次修改代碼保存(Ctrl + s)後會自動重啓服務器

相關文章
相關標籤/搜索