express開發(fā)框架

簡(jiǎn)介

web應(yīng)用Express 是一個(gè)基于 Node.js 平臺(tái)的極簡(jiǎn)、靈活的 web 應(yīng)用開發(fā)框架,它提供一系列強(qiáng)大的特性,幫助你創(chuàng)建各種 Web 和移動(dòng)設(shè)備應(yīng)用。

API豐富的 HTTP 快捷方法和任意排列組合的 Connect 中間件,讓你創(chuàng)建健壯、友好的 API 變得既快速又簡(jiǎn)單

性能Express 不對(duì) Node.js 已有的特性進(jìn)行二次抽象,我們只是在它之上擴(kuò)展了 Web 應(yīng)用所需的基本功能

安裝

  • 為你的應(yīng)用創(chuàng)建一個(gè)目錄,然后進(jìn)入此目錄并將其作為當(dāng)前工作目錄。

      $ mkdir myapp
      $ cd myapp
    
  • 通過(guò) npm init 命令為你的應(yīng)用創(chuàng)建一個(gè) package.json 文件。

      $ npm init
    
  • 此命令將要求你輸入幾個(gè)參數(shù),例如此應(yīng)用的名稱和版本。 你可以直接按“回車”鍵接受默認(rèn)設(shè)置即可,下面這個(gè)除外:

      entry point: (index.js)
    

鍵入 app.js 或者你所希望的名稱,這是當(dāng)前應(yīng)用的入口文件。如果你希望采用默認(rèn)的 index.js 文件名,只需按“回車”鍵即可。

  • 安裝 Express 并將其保存到依賴列表中:

      $ npm install express --save
    

如果只是臨時(shí)安裝 Express,不想將它添加到依賴列表中,只需略去 --save 參數(shù)即可:

    $ npm install express

安裝 Node 模塊時(shí),如果指定了 --save 參數(shù),那么此模塊將被添加到 package.json 文件中 dependencies 依賴列表中。 然后通過(guò) npm install 命令即可自動(dòng)安裝依賴列表中所列出的所有模塊。

Hello world實(shí)例

進(jìn)入 myapp 目錄,創(chuàng)建一個(gè)名為 app.js 的文件,然后將下列代碼復(fù)制進(jìn)去:

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});

上面的代碼啟動(dòng)一個(gè)服務(wù)并監(jiān)聽從 3000 端口進(jìn)入的所有連接請(qǐng)求。他將對(duì)所有 (/) URL 或 路由 返回 “Hello World!” 字符串。對(duì)于其他所有路徑全部返回 404 Not Found。

req (請(qǐng)求) 和 res (響應(yīng)) 與 Node 提供的對(duì)象完全一致,因此,你可以調(diào)用 req.pipe()、req.on('data', callback) 以及任何 Node 提供的方法。

通過(guò)如下命令啟動(dòng)此應(yīng)用:

$ node app.js

然后在瀏覽器中打開<code> http://localhost:3000/</code> 并查看輸出結(jié)果。

Express應(yīng)用生成器

通過(guò)應(yīng)用生成器工具 express 可以快速創(chuàng)建一個(gè)應(yīng)用的骨架。

通過(guò)如下命令安裝:

  • $ npm install express-generator -g

  • -h 選項(xiàng)可以列出所有可用的命令行選項(xiàng):

      $ express -h
    
  • 例如,下面的示例就是在當(dāng)前工作目錄下創(chuàng)建一個(gè)命名為 myapp 的應(yīng)用。

      $ express myapp
    
  • 然后安裝所有依賴包:

      $ cd myapp 
      $ npm install
    
  • 啟動(dòng)應(yīng)用

      $ DEBUG=myapp npm start(MacOS 或 Linux 平臺(tái))
      set DEBUG=myapp & npm start(Windows 平臺(tái)使用)
    

然后在瀏覽器中打開 <code>http://localhost:3000/ </code>網(wǎng)址就可以看到這個(gè)應(yīng)用了。

一個(gè)簡(jiǎn)單的express路由

這篇教程只是對(duì) Express 路由做一個(gè)簡(jiǎn)單的介紹。路由(Routing)是由一個(gè) URI(或者叫路徑)和一個(gè)特定的 HTTP 方法(GET、POST 等)組成的,涉及到應(yīng)用如何響應(yīng)客戶端對(duì)某個(gè)網(wǎng)站節(jié)點(diǎn)的訪問(wèn)。

每一個(gè)路由都可以有一個(gè)或者多個(gè)處理器函數(shù),當(dāng)匹配到路由時(shí),這個(gè)/些函數(shù)將被執(zhí)行。

路由的定義由如下結(jié)構(gòu)組成:app.METHOD(PATH, HANDLER)。其中,app 是一個(gè) express 實(shí)例;METHOD 是某個(gè) HTTP 請(qǐng)求方式中的一個(gè);PATH 是服務(wù)器端的路徑;HANDLER 是當(dāng)路由匹配到時(shí)需要執(zhí)行的函數(shù)。

下面的代碼展示了幾個(gè)路由實(shí)例:

// 對(duì)網(wǎng)站首頁(yè)的訪問(wèn)返回 "Hello World!" 字樣
app.get('/', function (req, res) {
  res.send('Hello World!');
});

// 網(wǎng)站首頁(yè)接受 POST 請(qǐng)求
app.post('/', function (req, res) {
  res.send('Got a POST request');
});

// /user 節(jié)點(diǎn)接受 PUT 請(qǐng)求
app.put('/user', function (req, res) {
  res.send('Got a PUT request at /user');
});

// /user 節(jié)點(diǎn)接受 DELETE 請(qǐng)求
app.delete('/user', function (req, res) {
  res.send('Got a DELETE request at /user');
});

利用 Express 托管靜態(tài)文件

通過(guò) Express 內(nèi)置的 express.static 可以方便地托管靜態(tài)文件,例如圖片、CSS、JavaScript 文件等。

將靜態(tài)資源文件所在的目錄作為參數(shù)傳遞給 express.static 中間件就可以提供靜態(tài)資源文件的訪問(wèn)了。例如,假設(shè)在 public 目錄放置了圖片、CSS 和 JavaScript 文件,你就可以:

app.js文件下添加:

app.use(express.static('public'));

現(xiàn)在,public 目錄下面的文件就可以訪問(wèn)了。

http://localhost:3000/images/kitten.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/app.js
http://localhost:3000/images/bg.png
http://localhost:3000/hello.html

如何渲染純 HTML 文件?

不需要!無(wú)需通過(guò) res.render() 渲染 HTML。你可以通過(guò) res.sendFile() 直接對(duì)外輸出 HTML 文件。如果你需要對(duì)外提供的資源文件很多,可以使用 express.static() 中間件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容