Express 是世界上使用最多的 Node.js 框架,它使開發人員能夠使用 JavaScript 建立後端網路伺服器。該框架提供了後端開發人員所需的大部分功能,簡化了路由和響應 Web 請求的過程。
我們已經為你準備了一份關於 Express.js 的指南,所以這篇實踐文章將向你展示如何使用它。本教程介紹如何使用 Express.js 建立和部署一個 Node.js 應用程式示例。
如何使用 Express.js 快速建立應用程式
本教程演示瞭如何建立一個網路應用程式,該程式可以接收對端點的請求,使用請求中的引數呼叫資料庫,並以 JSON 格式從資料庫返回資訊。
前提條件
要學習本教程,請確保您的計算機上安裝了以下工具:
- Node.js 和 Node 包管理器 (npm) – JavaScript 的基本執行環境和包管理器。
- Git – 促進軟體協作開發的分散式版本控制系統。
Express 應用程式生成器
您可以使用我們的 Express.js 指南中概述的流程將 Express 新增到現有的 Node 應用程式中,但如果您要從頭開始,還有一個更快捷的選擇:Express 生成器。
來自 Express.js 的官方 Express 生成器是一個 Node 包,它允許你生成一個新的應用程式骨架。首先為您的應用程式建立一個資料夾,然後執行 npx
命令(Node.js 8.2.0 中提供)即可完成生成:
mkdir express-application npx express-generator
成功生成後,終端會顯示建立的資料夾/檔案列表,以及安裝依賴項和執行應用程式的命令。執行以下命令安裝依賴項:
npm install
接下來,啟動網路伺服器:
DEBUG=myapp:* npm start
骨架應用程式有一個預建的索引路由,可渲染一個基本主頁。你可以訪問 localhost:3000
在瀏覽器中檢視。
探索骨架 Express 應用程式
在首選程式碼編輯器中開啟 Express 應用程式後,你會發現一個基本結構構成了網路應用程式的骨架。
/ |-- /node_modules |-- /public |-- /routes |-- index.js |-- users.js |-- /views |-- error.jade |-- index.jade |-- layout.jade |-- app.js |-- package.json
- node_modules:此目錄儲存專案的所有已安裝依賴項和庫。
- public:包含 CSS、JavaScript、圖片等靜態資產。這些檔案將直接提供給客戶端瀏覽器。
- routes:包含負責定義各種路由和處理來自不同 URL 的請求的檔案。
- views:包含伺服器渲染以建立使用者介面的模板或檢視。這裡的 error.jade、index.jade 和 layout.jade 是用 Jade 模板語言編寫的模板。它們有助於結構化並向使用者呈現動態內容。
- app.js:該檔案通常作為 Express 應用程式的入口點。在這裡配置伺服器、設定中介軟體、定義路由以及處理請求和響應。
- package.json:該檔案包含應用程式的後設資料。它有助於管理依賴關係和專案配置。
瞭解路由處理
在 Express 應用程式中,routes 目錄是將路由定義為獨立檔案的地方。主要路由通常稱為索引路由,位於 routes/index.js 檔案中。
該索引路由處理 GET
請求,並以框架生成的 HTML 網頁作為響應。下面的程式碼片段說明了如何處理 GET
請求,以呈現一個基本的歡迎頁面:
var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); module.exports = router;
如果將 res.render()
函式修改為 res.send()
,響應型別就會從 HTML 變為 JSON:
var express = require('express'); var router = express.Router(); router.get('/', function(req, res, next) { res.send({ key: 'value' }); }); module.exports = router;
為了擴充套件功能,在同一檔案中新增了另一個路由,引入了一個接受引數的新端點。該程式碼片段演示了應用程式如何處理不同端點上的流量、提取引數並以 JSON 格式響應其值:
/* GET a new resource */ router.get('/newEndpoint', function(req, res, next) { res.send({ yourParam: req.query.someParam }); });
向 localhost:3000/newEndpoint?someParam=whatever
傳送 GET
請求,將產生包含字串 “whatever” 的 JSON 輸出。
在 Postman 中向本地執行的應用程式發出 GET 請求。
注:必須重新啟動網路伺服器才能有效執行新的更改。
Express 和 Kinsta 應用程式託管
從你的電腦向你的電腦發出網路請求固然不錯,但只有離開本地主機,網路開發才算完成。幸運的是,即使需要資料庫,Kinsta 也能讓應用程式輕鬆部署到網路上。
現在,讓我們通過整合資料庫功能,並將應用程式和資料庫部署到網路上,實現從任何計算機訪問,來深入探討如何擴充套件應用程式的功能。
在將 Express 應用程式部署到 Kinsta 的應用程式託管服務之前,將應用程式的程式碼和檔案推送到您選擇的 Git 提供商(Bitbucket、GitHub 或 GitLab)至關重要。確保在應用程式根目錄建立 .gitignore 檔案幷包含 node_modules
,以防止將這些檔案推送到 Git 提供商。
設定好倉庫後,請按照以下步驟將 Express 應用程式部署到 Kinsta:
- 登入或建立賬戶,檢視 MyKinsta 面板。
- 通過 Git 提供商授權 Kinsta。
- 單擊左側邊欄上的 Applications ,然後單擊 Add application。
- 選擇要部署的版本庫和分支。
- 為應用程式指定一個唯一的名稱,並選擇 Data center location。
- 接下來配置構建環境。選擇標 Standard build machine,併為該演示選擇推薦的 Nixpacks 選項。
- 使用所有預設配置,然後單擊 “Create application“。
Kinsta 可與 Express 應用程式生成器配合使用!完成這些步驟後,應用程式將自動開始構建和部署過程。
部署介面將提供 Kinsta 部署應用程式的 URL。您可以新增 /newEndpoint?someParam=whatever
來測試本文前一部分中構建的端點。
如何在 Express 應用程式中新增資料庫
對於大多數生產級應用程式來說,擁有一個資料庫是必不可少的。
下面介紹如何在 Kinsta 上建立資料庫:
1. 導航到 MyKinsta 面板側邊欄上的 Databases 部分。
2. 單擊 Create a database。輸入名稱並選擇資料庫型別,配置資料庫詳細資訊。
3. 選擇 PostgreSQL 選項。Database username 和 password 將自動生成:
新增新資料庫的 MyKinsta 資料庫配置步驟。
4. 選擇與託管 Express 應用程式相同的 Data center location,並配置所需的大小。
5. 確認付款資訊並單擊 Create database。
成功建立資料庫後:
- 點選訪問資料庫詳細資訊。在 “Overview” 頁面中,導航至 “Internal connections” 部分。
- 選擇適當的應用程式。
- 選中 Add environment variables to the application 選項。
- 單擊 Add connection,連線新建立的資料庫和應用程式。
接下來,複製新建立資料庫的連線字串,用資料庫工具連線資料庫。任何 SQL 連線工具都可以,但本演示使用的是 Beekeeper。開啟應用程式,點選從 URL 匯入,貼上連線字串,然後點選匯入。這樣就可以在剛剛建立的 Kinsta 託管資料庫上執行 SQL。
接下來,使用資料庫工具對託管資料庫執行一些 SQL 語句,建立一個只有一個條目的基本表:
CREATE TABLE "States" ( id integer CONSTRAINT states_pk PRIMARY KEY, state_name varchar(100), capital varchar(100), state_bird varchar(100), "createdAt" TIMESTAMPTZ NOT NULL DEFAULT NOW(), "updatedAt" TIMESTAMPTZ NOT NULL DEFAULT NOW() ); INSERT INTO "States" VALUES(1, 'ohio', 'columbus', 'cardinal');
將以下資料庫軟體包新增到專案中:
npm install sequelize pg
sequelize
依賴項是 Node.js 的 ORM,而 pg
則作為 PostgreSQL 客戶端,實現 Node.js 應用程式與 PostgreSQL 資料庫之間的互動。
接下來,編寫應用程式碼,接受帶有 id
引數的 GET
請求,並返回與該 id
相關聯的資料庫資訊。為此,請相應修改 index.js 檔案:
var express = require('express'); var router = express.Router(); const { Sequelize, DataTypes } = require('sequelize'); const sequelize = new Sequelize(process.env.CONNECTION_URI, { dialect: 'postgres', protocol: 'postgres', }); const State = sequelize.define('State', { // Model attributes are defined here state_name: { type: DataTypes.STRING, allowNull: true, unique: false }, capital: { type: DataTypes.STRING, allowNull: true, unique: false }, state_bird: { type: DataTypes.STRING, allowNull: true, unique: false }, }, { // Other model options go here }); async function connectToDB() { try { sequelize.authenticate().then(async () => { // await State.sync({ alter: true }); }) console.log('Connection has been established successfully.'); } catch (error) { console.error('Unable to connect to the database:', error); } } connectToDB(); /* GET a new resource */ router.get('/state', async function(req, res, next) { const state = await State.findByPk(req.query.id); if (state) { res.send(state) } else { res.status(404).send("state not found"); } }); /* GET home page. */ router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); /* GET a new resource */ router.get('/newEndpoint', function(req, res, next) { res.send({ yourParam: req.query.someParam }); }); module.exports = router;
提交程式碼更改並將其推送到 Git 倉庫。然後,在 Kinsta 上手動重新部署或等待自動部署。
現在,當你以 id=1
查詢 /states
端點時,你將從資料庫中收到一個狀態。
向 MyKinsta 託管的全功能應用程式發出 GET 請求。
這就是全部內容!您可以在 GitHub 上檢視完整的專案程式碼。
小結
本文演示了 Express 框架如何讓建立和部署 Node.js 應用程式變得快速而簡單。只需幾個簡單的步驟,您就可以使用 Express 生成器建立一個新的應用程式。
在 Node.js 應用程式開發中使用 Express 框架的強大功能和簡便性是顯而易見的。使用 Kinsta 或者大部分雲伺服器提供商,您可以將 Express 和 Node.js 帶來的動力帶入專案的部署階段,而無需浪費時間進行配置。
評論留言