• 一些基于nodejs的服务端框架对比。express、koa、egg、nest、midway_Nicker_的专栏程序员信息网_egg express koa


    一些基于nodejs的服务端框架对比。express、koa、egg、nest、midway_Nicker_的专栏-程序员信息网_egg express koa

    技术标签: serverless framework  服务器  nodejs  webserver  

     

    一些基于nodejs的服务端框架对比。

    express、koa、egg、nest、midway都是常见的nodejs开源框架。
    其关系,基本如下:

    Midway.js ---|> Egg.js ---|> Koa.js,
                   Nest.js ---|> Express.js
    

    而koa实际上是express团队用新理念重写的,从架构上讲,更加先进一些。
    midway.js和egg.js背后都是阿里的团队,其架构基于koa。
    nest.js背后是国外的Trilon团队,其架构基于express。

    Express

    Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。
    github:https://github.com/expressjs/express
    中文官网:https://www.expressjs.com.cn/

    Koa

    koa 是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。
    在这里插入图片描述
    koa是一个拥有洋葱模型中间件的http处理库,一个请求,经过一系列的中间件,最后生成响应。Koa的大致实现原理:context上下文的保存和传递,中间件的管理和next方法的实现。

    所以koa的开发过程中,往往要引用他人开发的中间件,或是自己开发中间件,然后再开发业务逻辑。

    中文官网:https://www.koajs.com.cn/

    nest.js

    nest是一个封装了node的有规范的框架,什么是有规范?意思是必须按照它制定的一套规则来写代码,否则程序就会无法运行。上手成本稍高一点,但是后期维护与扩展会很方便。

    nest属于前端ts大趋势下深度使用注解特性并提供各种增强开发体验的框架,它提供了一套完整的解决方案,包含了认证、数据库、路由、http状态码、安全、配置、请求等开箱即用的技术。

    官网:https://nestjs.com/
    中文文档:https://nestjs.bootcss.com/

    Egg.js

    为企业级框架和应用而生。
    基于nodejs和koa.js。
    相对而言,如果要做nodejs的服务,建议学习Egg,比起直接用Express或者koa,可以少造很多轮子。在此基础上,根据实际需要,可以去学习midway。

    特点:
    Egg 的插件机制有很高的可扩展性,一个插件只做一件事(比如 Nunjucks 模板封装成了 egg-view-nunjucks、MySQL 数据库封装成了 egg-mysql)。Egg 通过框架聚合这些插件,并根据自己的业务场景定制配置,这样应用的开发成本就变得很低。
    Egg 奉行『约定优于配置』,按照一套统一的约定进行应用开发,团队内部采用这种方式可以减少开发人员的学习成本,开发人员不再是『钉子』,可以流动起来。没有约定的团队,沟通成本是非常高的,比如有人会按目录分栈而其他人按目录分功能,开发者认知不一致很容易犯错。但约定不等于扩展性差,相反 Egg 有很高的扩展性,可以按照团队的约定定制框架。使用 Loader 可以让框架根据不同环境定义默认配置,还可以覆盖 Egg 的默认约定。

    对比:
    Express 是 Node.js 社区广泛使用的框架,简单且扩展性强,非常适合做个人项目。但框架本身缺少约定,标准的 MVC 模型会有各种千奇百怪的写法。Egg 按照约定进行开发,奉行『约定优于配置』,团队协作成本低。
    Sails 是和 Egg 一样奉行『约定优于配置』的框架,扩展性也非常好。但是相比 Egg,Sails 支持 Blueprint REST API、WaterLine 这样可扩展的 ORM、前端集成、WebSocket 等,但这些功能都是由 Sails 提供的。而 Egg 不直接提供功能,只是集成各种功能插件,比如实现 egg-blueprint,egg-waterline 等这样的插件,再使用 sails-egg 框架整合这些插件就可以替代 Sails 了。

    官网:https://eggjs.org/zh-cn/
    文档:https://eggjs.org/zh-cn/intro/index.html
    github:https://github.com/eggjs/egg

    Midway.js

    midwayjs一个面向未来的云端一体 Node.js 框架。
    Midway 是一个适用于构建 Serverless 服务,传统应用、微服务,小程序后端的 Node.js 框架。

    使用TypeScript开发
    Midway (中途岛) 是淘系架构团队(前淘宝UED)研发的一款面向未来的的 Node.js 框架。在大规模编程和 Serverless 等多种场景中,Midway 通过 TypeScript 和完全自研的依赖注入能力,将用户体验打造到极致。

    Midway 2.0 集成了 Serverless 能力,同时扩展了 RPC、Socket、微服务等场景,并在其中提供和前端一体化研发的能力,不同的场景之间可以组合、协作,给用户提供相对灵活又可靠的使用体验。

    Midway给人一种框架的框架的感觉。
    Midway可以结合其他框架使用,把Egg.js或者是Koa或者是Express作为其上层Web框架。

    官网:https://www.midwayjs.org/
    文档:Midway(v2)
    github:https://github.com/midwayjs/midway

  • 相关阅读:
    struts2 错误:Dispatcher initialization failed java.lang.RuntimeException
    JavaScript如何实现拖放功能
    Javascript异步执行时要小心的变量作用域
    Javascript异步编程
    Origin null is not allowed by Access-Control-Allow-Origin
    eclipse spket插件 错误 Syntax error on token "(", FunctionExpressionHeader expected after this
    EL--Expression Language
    [Swift]LeetCode820. 单词的压缩编码 | Short Encoding of Words
    [Swift]LeetCode879. 盈利计划 | Profitable Schemes
    [Swift]LeetCode878. 第 N 个神奇数字 | Nth Magical Number
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/16062663.html
Copyright © 2020-2023  润新知