前言
随着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等机制,基本覆盖各类开发须要,开箱即用。node
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。若是你须要使用一些技术,例如认证、数据库等支持,那么你可能得去搜索、折腾一番,才能知道搭配哪一个库,才行。但愿大前端生态愈来愈繁荣!express