nodejs 入門-Express

來源:互聯網
上載者:User

標籤:目錄   擷取   htm   public   size   屬性   json   meta   title   

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

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

npm install express --save

 

建立入口檔案 app.js

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應用

 

 基本路由

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

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

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

 

 靜態資源

公開指定目錄供外界訪問

//當請求路徑為/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(‘art‘,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 還是 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)後會自動重啟伺服器

nodejs 入門-Express

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.