wordpress兼職sem seo
前言
在正式開始之前,需要先知道用到的東西:
koa
:Koa 是一個(gè)基于 Node.js 的 Web 應(yīng)用框架,非常適合開發(fā)API服務(wù),可以與前端框架(如 Vue.js、React.js)結(jié)合使用,實(shí)現(xiàn)前后端分離的開發(fā)模式。koa-router
:是一個(gè)用于在 Koa 框架中實(shí)現(xiàn)路由功能的模塊。koa-body
:是一個(gè)用于 Koa 框架的中間件,它主要用于處理 HTTP 請求中的請求體。
文檔:
Koa中文文檔
koa-router NPM
koa-router API
koa-body NPM
Koa 是一個(gè)基于 Node.js 的 Web 應(yīng)用框架,由 Express 原班人馬打造。
Koa 并沒有捆綁任何中間件,而是提供了一套優(yōu)雅的方法,幫助開發(fā)者快速地編寫服務(wù)端應(yīng)用程序。
項(xiàng)目初始化
創(chuàng)建一個(gè)文件夾:ko2-mongodb
打開文件夾,初始化項(xiàng)目,生成一個(gè)package.json
文件:
npm init -y
這個(gè)命令會自動(dòng)創(chuàng)建一個(gè) package.json
文件,該文件是 Node.js 項(xiàng)目的配置文件,包含了項(xiàng)目的名稱、版本、依賴項(xiàng)、腳本等重要信息。
通過 -y
(或 --yes
)參數(shù),命令會自動(dòng)使用默認(rèn)值填充 package.json
,無需手動(dòng)回答一系列問題。
如果需要在本地git倉庫對項(xiàng)目版本做管理,可以初始化git:
git init
在項(xiàng)目根目錄下新建一個(gè).gitignore
文件,讓項(xiàng)目的某些文件不要提交到git倉庫:
node_modules
項(xiàng)目搭建
安裝Koa框架:
npm install koa
安裝成功,在package.json
中會顯示依賴信息:
創(chuàng)建src/main.js
,編寫代碼:
// 導(dǎo)入koa, koa是一個(gè)類
const Koa = require('koa')// 創(chuàng)建koa實(shí)例對象:app
const app = new Koa()// 使用 app.use() 方法添加中間件,且只能寫一個(gè)中間件
// 注意:app.use 只能接收函數(shù)作為參數(shù)
app.use((ctx, next) => {// 中間件邏輯ctx.body = 'hello Koa!'
});// 指定端口號并啟動(dòng)服務(wù)器
const port = 3000 // 表示服務(wù)器將監(jiān)聽的端口號
app.listen(port, () => {console.log('server is running on http://localhost:3000')
})
-
app.use()
:用于向應(yīng)用添加中間件- 語法:
app.use(middleware)
middleware
是一個(gè)函數(shù),它接收兩個(gè)參數(shù)ctx
(上下文對象)和next
(一個(gè)函數(shù),用于調(diào)用下一個(gè)中間件)。ctx
包含了請求和響應(yīng)的信息,可以通過它訪問請求對象ctx.request
和響應(yīng)對象ctx.response
。例如,在中間件中修改ctx.body
來設(shè)置響應(yīng)內(nèi)容,或者通過ctx.params
獲取路由參數(shù)等。next
函數(shù)用于調(diào)用下一個(gè)中間件。當(dāng)在一個(gè)中間件中調(diào)用next()
時(shí),Koa 會暫停當(dāng)前中間件的執(zhí)行,將請求傳遞給下一個(gè)中間件。當(dāng)后續(xù)的中間件都執(zhí)行完畢后,Koa 會回溯回來繼續(xù)執(zhí)行當(dāng)前中間件中next()
之后的代碼。
- 如果
app.use
接收到的middleware
不是函數(shù),執(zhí)行運(yùn)行命令后,在終端會報(bào)錯(cuò):
- 語法:
-
app.listen()
:用于啟動(dòng)服務(wù)器并在指定的端口上監(jiān)聽傳入的連接。- 調(diào)用這個(gè)方法后,服務(wù)器開始在指定的端口上監(jiān)聽傳入的 HTTP 請求。當(dāng)有請求到達(dá)時(shí),Koa 會根據(jù)注冊的中間件依次處理請求,并生成響應(yīng)返回給客戶端。
- 語法:
app.listen(port, [hostname], [backlog], [callback])
port
:必選參數(shù),服務(wù)器要監(jiān)聽的端口號。hostname
:可選參數(shù),服務(wù)器要監(jiān)聽的主機(jī)名。默認(rèn)是'0.0.0.0'
,表示監(jiān)聽所有的網(wǎng)絡(luò)接口。backlog
:可選參數(shù),指定連接隊(duì)列的最大長度。默認(rèn)是511
。callback
:可選參數(shù),服務(wù)器啟動(dòng)后要執(zhí)行的回調(diào)函數(shù)。如果提供了回調(diào)函數(shù),它會在服務(wù)器成功啟動(dòng)后被調(diào)用。這個(gè)回調(diào)函數(shù)通常用于輸出一些啟動(dòng)成功的信息或者執(zhí)行其他初始化操作。
在終端執(zhí)行指令,啟動(dòng)服務(wù):
node src/main.js
在這個(gè)例子中,main.js
文件中使用了 Koa 框架創(chuàng)建了一個(gè)服務(wù)器,設(shè)置一個(gè)簡單的中間件,并設(shè)置了服務(wù)器監(jiān)聽的端口為 3000,執(zhí)行node src/main.js
指令后,服務(wù)器就會在本地的 3000 端口上運(yùn)行,當(dāng)有請求到達(dá)時(shí),會返回 'hello Koa!'
作為響應(yīng)內(nèi)容。
命令行終端輸出:
按住CTRL+單擊
,可以打開鏈接http://localhost:3000
node src/main.js
用于使用 Node.js 運(yùn)行位于 src
目錄下的 main.js
文件。
這條指令的作用通常是啟動(dòng)一個(gè)基于 Node.js 的應(yīng)用程序。如果 main.js
文件中包含了服務(wù)器的設(shè)置、路由定義、中間件的使用等代碼,執(zhí)行這個(gè)指令后,就會啟動(dòng)相應(yīng)的服務(wù),可能是一個(gè) Web 服務(wù)器、API 服務(wù)或者其他類型的后端服務(wù)。
注意:
修改main.js
后,必須停掉服務(wù),重新執(zhí)行node src/main.js
,刷新頁面,頁面才會更新!
所以在實(shí)際項(xiàng)目中,是不會使用node命令來直接啟動(dòng)的。
現(xiàn)在,項(xiàng)目的目錄結(jié)構(gòu)如下圖所示:
配置項(xiàng)目自動(dòng)重啟
安裝nodemon
:
npm i nodemon -D
安裝完畢后,配置package.json
:
"scripts": {"dev": "nodemon ./src/main.js",
},
接下來,就可以執(zhí)行npm run dev
啟動(dòng)服務(wù):
執(zhí)行命令npm run dev
,本質(zhì)上是使用 nodemon
來監(jiān)控文件變化并自動(dòng)重啟服務(wù)器。
[nodemon] 3.1.7
,表示正在使用的nodemon
版本是3.1.7
。[nodemon] to restart at any time, enter 'rs'
,表示可以在任何時(shí)候輸入rs
來手動(dòng)重啟nodemon
。nodemon
正在監(jiān)控的路徑和文件擴(kuò)展名:[nodemon] watching path(s): *.*
和[nodemon] watching extensions: js,mjs,cjs,json
,表示nodemon
正在監(jiān)控所有路徑下的.js
、.mjs
、.cjs
和.json
文件。nodemon
啟動(dòng)服務(wù)器的命令:[nodemon] starting 'node./src/main.js'
,表示nodemon
正在啟動(dòng)node
進(jìn)程來執(zhí)行./src/main.js
文件。
服務(wù)器成功啟動(dòng)并輸出了 server is running on http://localhost:3000
,表示服務(wù)器正在監(jiān)聽本地的 3000
端口。
讀取配置文件
dotenv
:一個(gè)用于讀取 Node 環(huán)境變量的工具庫。
dotenv
是一個(gè) npm
包,用于加載 .env
文件中定義的環(huán)境變量賦值給到 process.env
中。
process.env
是 Node.js 程序在運(yùn)行時(shí)能訪問到的一個(gè)全部變量,存儲環(huán)境變量信息。
dotenv 中文網(wǎng)
dotenv
安裝dotenv
:
npm install dotenv -D
在項(xiàng)目的根目錄下創(chuàng)建一個(gè) .env
文件:
APP_PORT=8080
創(chuàng)建config/config.env.js
文件:
// 引入dotenv,注意:dotenv 是一個(gè)對象
const dotenv = require('dotenv')
dotenv.config()// 將當(dāng)前進(jìn)程的環(huán)境變量對象 process.env 導(dǎo)出
// process: 當(dāng)前執(zhí)行的node的進(jìn)程
// env: 環(huán)境變量
module.exports = process.env
const dotenv = require('dotenv')
:這行代碼引入了 dotenv
模塊。dotenv
是一個(gè)用于在 Node.js 應(yīng)用中加載環(huán)境變量的模塊。
dotenv.config()
:調(diào)用 dotenv.config()
方法來加載環(huán)境變量配置文件。
- 通常,這個(gè)方法會查找項(xiàng)目根目錄下的
.env
文件,并將其中定義的環(huán)境變量加載到前進(jìn)程的process.env
對象中。 - 環(huán)境變量可以在應(yīng)用中通過
process.env.VARIABLE_NAME
的方式來訪問。
module.exports = process.env
:這里將當(dāng)前進(jìn)程的環(huán)境變量對象 process.env
導(dǎo)出。這樣,其他模塊在引入這個(gè)模塊時(shí),就可以直接訪問當(dāng)前進(jìn)程的環(huán)境變量。
改寫main.js
:
// 導(dǎo)入koa, koa是一個(gè)類
const Koa = require('koa')const { APP_PORT } = require('./config/config.env')// 創(chuàng)建koa實(shí)例對象:app
const app = new Koa()// 使用 app.use() 方法添加中間件,且只能寫一個(gè)中間件
app.use((ctx, next) => {console.log(`Request received: ${ctx.request.method} ${ctx.request.url}`);// 中間件邏輯ctx.body = 'hello Koa!'
});// 指定端口號并啟動(dòng)服務(wù)器
app.listen(APP_PORT, () => {console.log(`server is running on http://localhost:${APP_PORT}`)
})
執(zhí)行npm run dev
啟動(dòng)服務(wù):
按住CTRL+單擊
,打開鏈接http://localhost:8080
:
項(xiàng)目的目錄結(jié)構(gòu)如下圖所示: