前言
本系列教程技术栈选用
NestJSv10(Fastify) + TypeScript5 + MySQL,此配置并非适合所有人,请留意。
什么是NestJS?
首先来介绍一下目前Node框架的三大层次[]。虽然说是三大层次实际上也只是不断基于底层封装出来的框架体系。具体分类如下:
-
原生Node - http、https
http是NodeJS与生俱来的TCP库,对接到的http协议数据做解析处理并传给指定的Handler方法处理响应。原生的方法过于原始,如返回Json对象、文件、HTML代码之类的都必须要自己实现。
因此如果不是为了学习,千万不要用原生方法做项目。简单的示例如下:
const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('okay'); }); server.listen(8080, '127.0.0.1'); -
基础封装 - Express、KOA、Fastify
基础封装这一层级的框架大多数都是基于原生Node往上封装开发,
因为原生方法实在过于原始而出现。以下会稍微介绍一下较为主流的三个基础框架:-
Express
Express是一款传统的Web框架,基于原生方法进行最精简封装而来。该框架风格为保持最小规模的灵活的 Node.js Web 应用程序开发框架。 许多其他的框架都会选择Express进行二次开发。 -
KoaJS
KoaJS是一款类似于Express的Web框架,两个框架的开发者为同一人(这个人到底怎么做到能一个人开发那么多东西的)但是相较于Express的集合式设计语言来说,KoaJS则选择了以小而美,轻量插件化作为其设计语言。 -
Fastify
Fastify是一个专注于性能开销最小化的Web框架,其灵感来源于Hapi和Express。至少在目前为止它是所有框架中最快的框架之一。
-
-
进阶封装 - NestJS、EggJS、MidwayJS
进阶封装则用到了设计模式MVC,将代码合理规划为
Controller、Service、Model、View几大模块。此类框架几乎都基于Express框架开发,甚至NestJS还能自由切换Express和Fastify。设计模式相关知识不在此处讲述,讲下去就可以称之为论文了我手也废了
NestJS和其他框架有什么不同?
讲了那么久也没谈到重点,为什么要选择NestJS而不是其他框架? NestJS拥有自己的一整套规范,可以说不按照规范走几乎完全无法运行的地步。虽然前期上手可能成本很高,但是一旦理解以后维护和扩展会非常方便。可以参考Vue 起码当初我学Vue上手成本很高。
而Midway在学习成本是明显比NestJS低,为什么还要选择NestJS呢?首先据我观察而来,太多人吹捧Midway吹的太高了,但大家并没有发现实际上Midway的生态及社区并不够完善。不管是社区活跃用户还是社区插件等都远没有NestJS来的完善,故此不选择Midway。
总结
不管怎么说如此多的框架还是要按照自己的需求去选择使用,对于想要提升自己技术的多学几种百利而无一害,在接下来的文章中会基于NestJS框架去带大家写一个最基本的图书管理系统后端。
本文所用文献: