前言
随着nest.js框架逐渐火起来,对于没有接触过nest的小伙伴可能会疑惑nest是什么?在你了解了nest.js是什么的前提下,你可能会疑惑nest.js与传统的koa、express有什么区别?针对这两个问题,结合了网上的一些文章,做一个简单的总结。
nest是什么?
- nest的定义是一个渐进式的Node.js框架,用于构建高效,可靠和可扩展的服务器端应用程序;不要问我为什么要放图,据说放图可以提高访问量。
- nest是一个封装了node的有规范的框架,什么是有规范?意思是必须按照它制定的一套规则来写代码,否则程序就会无法运行。上手成本稍高一点,但是后期维护与扩展会很方便。
- nest属于前端ts大趋势下深度使用注解特性并提供各种增强开发体验的框架,它提供了一套完整的解决方案,包含了认证、数据库、路由、http状态码、安全、配置、请求等开箱即用的技术。
nest.js与koa、express有什么区别?
- koa是一个拥有洋葱模型中间件的http处理库,一个请求,经过一系列的中间件,最后生成响应。Koa的大致实现原理:context上下文的保存和传递,中间件的管理和next方法的实现。
- 大概过程:我们koa常用的app.use方法就是将一系列中间件的方法存进了一个数组,app.listen底层用http.createServer(this.callback())进行封装,传进createServer的回调函数通过compose来处理中间件集合(就是递归遍历中间件数组的过程),通过req,res(这两个对象封装了node的原生http对象)创建上下文,并返回一个处理请求的函数(参数是上下文,中间件集合(类似一个链表))。
区别
koa本身几乎不带任何其他的库,如果需要使用路由、错误处理、认证等功能需要自己安装并引入,什么都需要自己DIY。而使用nest.js时就不需要考虑这些问题了,依赖注入,pipe,guard,interceptor等机制,基本覆盖各种开发需要,开箱即用。
koa常常与express一起比较,都是偏底层的无态度的Web框架;而nest.js应该和egg.js,midway这种框架比较。egg.js源于阿里,它的企业级规范很多,但各方面能力极强,定位是框架的框架,其再上一层还有midwayjs,完全兼容ts,支持注解,一点都不输与Nest;此外国内做企业级NodeJS框架的越来多啦,比如刚出来的daruk等,用过JavaSpring 框架和 Angular的同学会发现NEST借鉴了两者很多的特性。
- egg.js是在koa的基础上做了一层很好的面向大型企业级应用的框架封装,现在也有了非常好的TS特性支持。egg.js更多的是按照洋葱模型的开发方式,和AOP编程还是有点区别的。而nest配合TYPEORM可以在node下拥有不输SPRING的面向切面编程的体验~
中小型项目推荐egg.js,上手快,概念易懂;大型项目不妨试试NEST.js+typeorm。如果你需要使用一些技术,例如认证、数据库等支持,那么你可能得去搜索、折腾一番,才能知道搭配哪个库,才行。希望大前端生态越来越繁荣!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。