Nest.js初探:这很Angular
前言
Nest是构建高效,可扩展的 Node.js Web 应用程序的框架。 它使用现代的 JavaScript 或 TypeScript(保留与纯 JavaScript 的兼容性),并结合 OOP(面向对象编程),FP(函数式编程)和FRP(函数响应式编程)的元素。
在底层,Nest 使用了 Express,但也提供了与其他各种库的兼容,例如Fastify,可以方便地使用各种可用的第三方插件。
以上是Nest.js的官方介绍,其实我们只需知道,它是一款Node.js的后端框架,并且官方提到了这么一段话:
Nest aims to provide an application architecture out of the box which allows for effortless creation of highly testable, scalable, loosely coupled and easily maintainable applications. The architecture is heavily inspired by Angular.
翻译过来就是:Nest 旨在提供一个开箱即用的应用程序体系结构,允许轻松创建高度可测试,可扩展,松散耦合且易于维护的应用程序。并且设计灵感来自于Angular。
所以这应和了这篇文章的标题,而Angular很多模式又来自于Spring框架,比如依赖注入等等,所以可以认为:Nest.js是Node.js版的Spring框架。
Nest.js的社区非常活跃,Github上已经有32.9k Star。不过我们国内也有类似的Node.js框架,比如阿里出品的Midway,两者设计思路也非常类似。
创建新应用
通过Nest CLI脚手架生成一个新应用:初始化完成后,执行npm run start即可启动项目。
在项目的src目录下,我们可以看到以下几个文件:
main.ts是入口文件,可以看到总共就8行代码:
简单来说就是使用NestFactory这个工厂函数生成一个实例,然后监听3000端口即可。这时候打开浏览器访问localhost:3000,可以看到打印出了“Hello World!”
实现接口
接下来我们来实现一个查询用户的接口,来熟悉一下基本的开发流程。
第一步,创建一个module:
通过脚手架命令,可以自动帮我们生成一个module文件:
这时候会发现,AppModule中自动引入了该module:
第二步,创建Controller:
Controller就类似前端的路由,负责处理服务器响应和客户端请求。
举个例子,我们要创建一个接口获取所有的用户信息,接口路径为http://localhost:3000/user/users,那么我们可以在UserController中创建一个GET方法,路径为users:
当我们访问上面的接口时,就会返回“all users”。
再写一个获取单个用户信息的接口:
当然,这只是Controller能力的冰山一角,官方还提供了更多的装饰器:
除此之外,Nest.js里还有很多概念都与Angular一一对应,如Provider、Pipe、Guard、Interceptors等等,对于熟悉Angular的开发者来说,Nest.js可谓是量身打造的后端框架。
- 点赞
- 收藏
- 关注作者
评论(0)