第一個(gè)node+ts項(xiàng)目

開(kāi)發(fā)流程:

I-環(huán)境搭建:

- 安裝數(shù)據(jù)庫(kù)

- 項(xiàng)目初始化,創(chuàng)建項(xiàng)目目錄(eg: backend)執(zhí)行 npm init 進(jìn)行初始化

- 根目錄創(chuàng)建 ts 配置文件:tsconfig.json?

// file: backend/tsconfig.json

- 根目錄下創(chuàng)建 `src` 目錄,作為我們的源碼存放目錄

// file: backend/src

- `src` 目錄下創(chuàng)建項(xiàng)目啟動(dòng)入口文件:`app.ts`?

--- 注冊(cè)路由,連接數(shù)據(jù)庫(kù)

// file: backend/src/app.ts

- 在 `src` 目錄下創(chuàng)建一個(gè) `configs` 目錄,并在該目錄下創(chuàng)建配置文件`index.ts`?

// file: backend/src/configs/index.ts?

--比如不同環(huán)境下(開(kāi)發(fā)、測(cè)試、生成等)主機(jī)地址,端口,數(shù)據(jù)庫(kù)連接信息等

- package.json 配置啟動(dòng)

// file: backend/package.json

- 創(chuàng)建controllers目錄,控制器類(lèi)文件的存放目錄

// file: backend/src/controllers

- 創(chuàng)建validators目錄,驗(yàn)證文件目錄

-------至此,項(xiàng)目可正常啟動(dòng)訪問(wèn)路由,下面繼續(xù)操作數(shù)據(jù)庫(kù)相關(guān)環(huán)境搭建----------

- 構(gòu)建數(shù)據(jù)庫(kù)表結(jié)構(gòu)

- 在根目錄下創(chuàng)建一個(gè)文件:`.sequelizerc` 使用 `Sequelize-cli` 工具的時(shí)候讀取的配置文件

// file: backend/.sequelizerc

- 創(chuàng)建models目錄,模型文件所在位置

-------------------------------------------------------------項(xiàng)目所需要所有文件目錄創(chuàng)建完畢

II-開(kāi)發(fā)準(zhǔn)備:

- 技術(shù)棧:

-- 開(kāi)發(fā)類(lèi):

--- koa : 后端的主框架, node 的web框架

--- koa-router :基于 `Koa` 的路由

--- koa-static-cache :`koa` 靜態(tài)文件代理

--- koa-ts-controllers : 基于 `Koa` 和 `TypeScript` 構(gòu)建的路由控制系統(tǒng),它提供了各種裝飾器來(lái)構(gòu)建 `RESTful` 風(fēng)格的 `API`

--- mysql2 : `NodeJS` 連接操作 `MySQL` 的庫(kù)

--- sequelize : 數(shù)據(jù)庫(kù)操作庫(kù),支持 `MySQL`、`MSSQL`、`SQLite` 等數(shù)據(jù)庫(kù),提供了 `ORM`、`事務(wù)` 以及 `Promise` 等支持

--- sequelize-typescript : `sequelize` 的 `TypeScript` 版

--- class-validator : 基于 `validator.js` 和 `TypeScript` 的數(shù)據(jù)驗(yàn)證工具,對(duì)用戶(hù)或者接口調(diào)用傳入的數(shù)據(jù)進(jìn)行校驗(yàn)

--- jsonwebtoken : `JWT` 鑒權(quán)庫(kù)

--- moment : 日期時(shí)間處理工具

-- 工具類(lèi)

--- ts-node-dev : `ts-node` 的 `dev` 版,實(shí)現(xiàn)了熱重載

--- sequelize-cli : `sequelize` 提供了的 `CLI` 工具,可以通過(guò)它來(lái)維護(hù)數(shù)據(jù)庫(kù)

III-開(kāi)發(fā)流程:

- 編寫(xiě)app.ts: 引入 kao kao-router 靜態(tài)資源代理 連接數(shù)據(jù)庫(kù) 鑒權(quán)驗(yàn)證 注冊(cè)路由 監(jiān)聽(tīng)host(主機(jī)地址) 和 port(端口)

- 編寫(xiě)configs/index.ts: 配置主機(jī)地址,端口,數(shù)據(jù)庫(kù)連接信息

- 編寫(xiě).sequelizerc,數(shù)據(jù)庫(kù)配置文件

-------------------------------------------------------------------以下為具體開(kāi)發(fā)流程

- 創(chuàng)建控制器類(lèi)文件 (eg:src/controllers/test.ts):驗(yàn)證數(shù)據(jù),處理業(yè)務(wù)邏輯,調(diào)用數(shù)據(jù)庫(kù)操作對(duì)象ORM,綁定路由,響應(yīng)數(shù)據(jù)

- 創(chuàng)建驗(yàn)證類(lèi)文件 (eg: src/validators/test.ts): 驗(yàn)證數(shù)據(jù)的具體方法

- 創(chuàng)建數(shù)據(jù)庫(kù)操作模型文件 (eg: src/models/test.ts): 數(shù)據(jù)庫(kù)實(shí)例操作

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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