Nest.js初探:这很Angular

举报
前端小盆友 发表于 2020/12/25 16:18:51 2020/12/25
【摘要】 前言Nest是构建高效,可扩展的 Node.js Web 应用程序的框架。 它使用现代的 JavaScript 或 TypeScript(保留与纯 JavaScript 的兼容性),并结合 OOP(面向对象编程),FP(函数式编程)和FRP(函数响应式编程)的元素。在底层,Nest 使用了 Express,但也提供了与其他各种库的兼容,例如Fastify,可以方便地使用各种可用的第三方插件。...

前言

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脚手架生成一个新应用:1.png初始化完成后,执行npm run start即可启动项目。

在项目的src目录下,我们可以看到以下几个文件:

2.pngmain.ts是入口文件,可以看到总共就8行代码:

3.png

简单来说就是使用NestFactory这个工厂函数生成一个实例,然后监听3000端口即可。这时候打开浏览器访问localhost:3000,可以看到打印出了“Hello World!”

实现接口

接下来我们来实现一个查询用户的接口,来熟悉一下基本的开发流程。

第一步,创建一个module:

4.png

通过脚手架命令,可以自动帮我们生成一个module文件:

5.png

这时候会发现,AppModule中自动引入了该module:

6.png

第二步,创建Controller:

7.png

Controller就类似前端的路由,负责处理服务器响应和客户端请求。

举个例子,我们要创建一个接口获取所有的用户信息,接口路径为http://localhost:3000/user/users,那么我们可以在UserController中创建一个GET方法,路径为users:

8.png

当我们访问上面的接口时,就会返回“all users”。

再写一个获取单个用户信息的接口:

9.png

当然,这只是Controller能力的冰山一角,官方还提供了更多的装饰器:

10.png

除此之外,Nest.js里还有很多概念都与Angular一一对应,如Provider、Pipe、Guard、Interceptors等等,对于熟悉Angular的开发者来说,Nest.js可谓是量身打造的后端框架。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。