Node.js後端開發 - 進階篇 #8 express框架之路由模塊的封裝1

目錄

一、前言

二、路由模塊的封裝

1、初始化項目、安裝express框架

(1)npm init -y 初始化項目,生成package.json文件

(2)npm init -y 和 npm init 區別

(3)安裝 express 框架

---生成 node_modules 文件夾 和 package-lock.json 文件

--- 執行npm install express -save 和 npm install express --no-save 的區別

2、封裝路由模塊

步驟1:寫主模塊 app.js

步驟2:寫配置模塊 config.js

步驟3:寫路由模塊 router.js


一、前言

最近每天都有三到五個粉絲的關注,不免增加我寫博文的動力,這不一大早其它同事還沒來,我又開始寫博文了,其實寫博文是非常枯燥的事情,需要毅力決心來堅持!在此感謝大家的關注和支持,同時歡迎留言共同交流進步!上一篇文章我們講了res對象的常見方法res.json()、res.redirect()等方法的使用,詳細可參考博文:Node.js後端開發 - 進階篇 #7 express框架之res對象的常見方法 ,這篇文章我們將講一下對路由模塊的封裝

二、路由模塊的封裝

1、初始化項目、安裝express框架

(1)npm init -y 初始化項目,生成package.json文件

在 Visual Studio Code 新建文件夾 express-project(注:需要注意的是項目名稱和模塊名稱express不要一樣),然後在裏面新建一個文件 app.js,打開終端執行如下命令:

npm init -y 初始化項目,它會在項目中自動生成一個package.json文件。

(2)npm init -y 和 npm init 區別

前面講基礎篇章的時候我們有講到 npm init命令,詳細可參考:Node.js後端開發 - 基礎篇 #17 package.json 文件 這裏的 npm init -y 和 npm init 不同的是:它省去了敲回車的步驟,直接略過所有問答,全部採用默認答案,去生成的默認的package.json

$ npm init -y
Wrote to /Users/luminal/Desktop/nodejs/express-project/package.json:

{
  "name": "express-project",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

(3)安裝 express 框架

---生成 node_modules 文件夾 和 package-lock.json 文件

執行 npm install express -save 命令安裝express框架,並將其保存到依賴列表中。

$ npm install express -save
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

+ [email protected]
added 50 packages from 37 contributors and audited 126 packages in 9.879s
found 0 vulnerabilities



   ╭────────────────────────────────────────────────────────────────╮
   │                                                                │
   │       New minor version of npm available! 6.9.0 → 6.12.0       │
   │   Changelog: https://github.com/npm/cli/releases/tag/v6.12.0   │
   │               Run npm install -g npm to update!                │
   │                                                                │
   ╰────────────────────────────────────────────────────────────────╯

這個時候它會在項目中生成一個 node_modules 的文件夾 和 package-lock.json 的文件

--- 執行npm install express -save 和 npm install express --no-save 的區別

如果只是臨時安裝 Express,不想將它添加到依賴列表中,可執行如下命令:

$ npm install express --no-save

npm 5.0+ 版本在默認情況下會將安裝的模塊添加到 package.json 文件中的 dependencies 列表中。對於較老的 npm 版本,你就必須指定 --save 參數。然後,照舊執行 npm install 命令即可自動安裝依賴列表中所列出的所有模塊。

2、封裝路由模塊

npm init -y 初始化項目、npm install express --save 安裝express框架以後,現在我們開始正式編碼

步驟1:寫主模塊 app.js

// app.js 模塊職責:負責啓動服務

//1. 加載 express 模塊
var express = require('express');
//加載 config.js 模塊
var config = require('./config.js');
//加載路由模塊
var router = require('./router.js');

//2. 創建 app 對象
var app = express();

//3. 啓動路由
// 雖然express框架註冊路由,相對於以前簡單了,
// 但是這個代碼本身還是屬於路由模塊。
// router既是一個對象,也是一個函數,
// 所以可以這樣調用,並傳遞app對象
// ---> router.js
router(app);

//4. 啓動服務
app.listen(config.port, function () {
    console.log('http://localhost:'+config.port);
});

雖然express框架註冊路由,相對於以前簡單了,但是這個代碼本身還是屬於路由模塊。

下面我們來新建配置模塊 config.js、路由模塊 router.js

步驟2:寫配置模塊 config.js

前面我們講過模塊化了,我們把端口號放在一個獨立模塊裏面 config.js


// 配置模塊: 主要職責是負責保存項目中的配置信息

module.exports = {
    port : 3000
};

步驟3:寫路由模塊 router.js

// 我們封裝一個模塊一般需要考慮三個問題:

//1、什麼樣的代碼要放到這個模塊當中?  代碼模塊化確定  

//2、這些代碼是否用到外部的一些數據?  我們需要拿到app 

//3、當前這個模塊對外應該暴露一些什麼東西?(module.exports)?  通過一個方法

//路由模塊:主要負責路由判斷

// 把router作爲函數返回暴露出來
// 這樣傳遞app主對象,暴露了app主對象,這樣做不安全
module.exports = function (app) {
    app.get('/', function (req, res) {
        console.log("當前根目錄");
    });  

    app.get('/index', function (req, res) {
        console.log("index");
    });  

};

雖然這麼寫可以實現功能,但是express不推薦這麼寫!原因是這樣傳遞app主對象,暴露了app主對象,這樣做不安全。我們使用router.js 是爲了註冊一些路由,但是這樣把主對象app給傳遞暴露出來了。假如主對象裏面有停止服務的方法 stopServer,在router.js 裏面是能調用到的,這樣做肯定不安全!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章