筆者最開(kāi)始學(xué)的后端技術(shù)是 python 的 Django 框架,由于很久沒(méi)有使用過(guò) python 語(yǔ)法,便想著了解一些 nodejs 的后端技術(shù)。下面將最近的收獲總結(jié)一下。
1
Express
官方描述:Express 是基于 Node.js 平臺(tái),快速、開(kāi)放、極簡(jiǎn)的Web 開(kāi)發(fā)框架。
對(duì)于node.js來(lái)說(shuō),Express 是一個(gè)第三方模塊,有豐富的 API 支持,強(qiáng)大而靈活的中間件特性,Express 不對(duì) Node.js 已有的特性進(jìn)行二次抽象,只是在它之上擴(kuò)展了 Web 應(yīng)用所需的基本功能。
express 出來(lái)的時(shí)候,es6 的標(biāo)準(zhǔn)沒(méi)有出來(lái)。而node的事件處理的方式都是基于 callback 的這種形式,在當(dāng)時(shí)來(lái)看,這種方式是比較好的一種方式。所以 express 里面的中間件處理的方式基本上都是回調(diào)。
es6 的出現(xiàn),帶來(lái)了許多新的標(biāo)準(zhǔn)。使得express 不得不考慮需要兼容es6中的語(yǔ)法, 而 es6中處理異步的方式是promise,還有后面陸續(xù)的 async 和 await 等語(yǔ)法糖。
2
Koa.js
官方描述:koa 是由 Express 原班人馬打造的,致力于成為一個(gè)更小、更富有表現(xiàn)力、更健壯的 Web 框架。
koa 的設(shè)計(jì)理念是一個(gè)極簡(jiǎn)的http請(qǐng)求框架,相較于 express 相對(duì)全面的中間件庫(kù)而言,koa 僅實(shí)現(xiàn)了網(wǎng)絡(luò)請(qǐng)求相關(guān)的核心功能,額外的功能可以依靠koa社區(qū)生態(tài)提供的中間件實(shí)現(xiàn)。
koa 提出了一種稱之為洋蔥模型的結(jié)構(gòu):對(duì)于每個(gè)中間件,在完成了一些事情后,可以非常優(yōu)雅的將控制權(quán)傳遞給下一個(gè)中間件,并能夠等待它完成,當(dāng)后續(xù)的中間件完成處理后,控制權(quán)又回到了自己,可以用下面的圖來(lái)形象的表示:
3
**Nest.js
**
官方描述:Nest.js 是用于構(gòu)建高效且可伸縮的服務(wù)端應(yīng)用程序的漸進(jìn)式 Node.js 框架。
NestJs是一個(gè)構(gòu)建高效、可擴(kuò)展的Node.js服務(wù)端應(yīng)用框架。它使用漸進(jìn)式JavaScript,支持TypeScript,結(jié)合了OOP(面向?qū)ο?a target="_blank">編程)、FP(功能編程)、FRP(功能反應(yīng)式編程)。
NestJs提供了一個(gè)開(kāi)箱即用的框架,能夠創(chuàng)建可測(cè)試、可擴(kuò)展、低耦合和易于維護(hù)的應(yīng)用程序。它一部分的思想受到了了Angular的啟發(fā)。
從書(shū)寫方式上來(lái)看,Nest.js 和傳統(tǒng)的后端架構(gòu)很相似,后端轉(zhuǎn)前端用這玩意應(yīng)該很舒服,不過(guò)既然已經(jīng)是后端開(kāi)發(fā)者,那為什么不用偏后端語(yǔ)言和框架來(lái)寫后端呢?
4
**Prisma
**
官方描述:Prisma 是一個(gè)下一代 Node.js、TypeScript、Go 的數(shù)據(jù)庫(kù) ORM
主要提供用于數(shù)據(jù)庫(kù)的對(duì)象模型,包含下面三個(gè)部分:
- Prisma Client: orm本體,可以使用js查詢數(shù)據(jù)庫(kù)
- Prisma Migrate: 遷移工具,將.prisma文件中的數(shù)據(jù)庫(kù)建模遷移到數(shù)據(jù)庫(kù)
- Prisma Studio: 可視化查看數(shù)據(jù)庫(kù)的GUI,web端實(shí)現(xiàn)
與傳統(tǒng) ORM 不同,ORM 是映射數(shù)據(jù)庫(kù)的表到編程語(yǔ)言上的類。而 Prisma 是一個(gè)數(shù)據(jù)庫(kù)工具,能夠根據(jù)數(shù)據(jù)模型生成特定的查詢工具。
從設(shè)計(jì)目的上來(lái)講,Prisma最初是GraphCool其中一部分,后來(lái)獨(dú)立開(kāi)源出來(lái)。Prisma是最簡(jiǎn)單&快速構(gòu)建GraphQL后端服務(wù)的方式。它的數(shù)據(jù)模型也和GraphQL很是相似。
5
**strapi
**
官方描述:[strapi]是一種靈活的、開(kāi)放源碼的無(wú)頭CMS (內(nèi)容管理系統(tǒng))
strapi服務(wù)基于koa2,可以通過(guò)可視化頁(yè)面簡(jiǎn)單的操作數(shù)據(jù)庫(kù)建表、修改數(shù)據(jù)、配置權(quán)限等等,前端可以根據(jù)RESTful API 設(shè)計(jì)規(guī)范請(qǐng)求strapi默認(rèn)配置的接口,獲取到數(shù)據(jù)庫(kù)的數(shù)據(jù),甚至可以使用graphql等插件。
6
小結(jié)
對(duì)于上面的幾門技術(shù)而言,strapi是其中上手門檻最低、功能也相對(duì)較為全面的。筆者也將于接下來(lái)的一些課程設(shè)計(jì)中使用。
個(gè)人認(rèn)為,學(xué)習(xí)一門技術(shù),并非要看其是否流行、是否大而全,適合自己目前需求的技術(shù)才是最好的技術(shù)。
-
python
+關(guān)注
關(guān)注
56文章
4823瀏覽量
86060 -
nodejs
+關(guān)注
關(guān)注
0文章
21瀏覽量
4372 -
后端
+關(guān)注
關(guān)注
0文章
32瀏覽量
2363
發(fā)布評(píng)論請(qǐng)先 登錄
buildroot中添加nodejs后推薦加哪些包?





【W(wǎng)RTnode2R試用體驗(yàn)】nodejs
通過(guò)Linux命令直接下載nodejs
nodejs與java的互調(diào)用方法
數(shù)字IC后端設(shè)計(jì)介紹,寫給哪些想轉(zhuǎn)IC后端的人!
后端系統(tǒng),后端系統(tǒng)是什么意思
數(shù)字后端基本概念介紹

IC設(shè)計(jì)前后端流程與EDA工具介紹
使用Homebridge和HAP NodeJS來(lái)模擬HomeKit API

數(shù)字后端基本概念介紹—FinFET Grid

評(píng)論