前言随着nest.js框架的逐渐普及,没接触过nest的朋友可能会疑惑什么是nest?在你了解什么是nest.js的前提下,你可能想知道nest.js和传统的koa、express有什么区别?针对这两个问题,我结合网上的一些文章,做了一个简单的总结。什么是窝?nest的定义是一个渐进的Node.js框架,用于构建高效、可靠和可扩展的服务器端应用程序;别问我为什么放图片,据说放图片可以提高流量。Nest是一个封装了node.js的标准化框架。什么是标准化框架?这意味着代码必须按照它制定的一套规则来编写,否则程序将无法运行。上手成本稍高,后期维护和扩容会很方便。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对象)创建context,并返回一个处理请求的函数(参数为context,中间件的集合(类似链表))。不同的是,koa本身几乎没有任何其他库。如果需要使用路由、错误处理、认证等功能,需要自己安装导入,一切都需要自己DIY。使用nest.js时,无需考虑这些问题。依赖注入、管道、守卫、拦截器等机制基本覆盖了各种开发需求,开箱即用。Koa经常被拿来和express比较,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。如果你需要用到一些技术,比如认证、数据库等支持,那么你可能要搜索折腾一番才知道配哪个库。希望大前端生态越来越繁荣!
