一个面向未来的云端一体Node.js框架——Midway

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个基于渐进式理念研发的 Node.js 框架——Midway。

一个面向未来的云端一体Node.js框架——Midway

Midway 是阿里巴巴 – 淘宝前端架构团队,基于渐进式理念研发的 Node.js 框架,通过自研的依赖注入容器,搭配各种上层模块,组合出适用于不同场景的解决方案。

Midway 基于 TypeScript 开发,结合了面向对象(OOP + Class + IoC)与函数式(FP + Function + Hooks)两种编程范式,并在此之上支持了 Web / 全栈 / 微服务 / RPC / Socket / Serverless 等多种场景,致力于为用户提供简单、易用、可靠的 Node.js 服务端研发体验。

特性

  • • 全功能:支持 Web 应用/Serverless/FaaS/微服务/小程序后端等多种场景,基于装饰器和依赖注入开发企业级应用

  • • 前端集成:全新的云端一体应用研发体验,零 API 调用,使用 “React Hooks ” 风格一体研发

  • • 跨平台:支持部署至普通 Server 或 Serverless/FaaS 环境

  • • 扩展:组件化扩展能力,另外支持使用 Koa/Express/Egg.js 生态插件

  • • 示例:官方提供多种场景的示例代码,方便开发者快速上手

  • • 语言:TypeScript 全面支持

为什么要有 Midway

社区上也有很多类似的框架,那为什么还需要 Midway ?

原因有三点:

  1. 1. Midway 是阿里内部一直持续在研发的框架,之前 egg 是作为底层框架,需要有面向应用层面的框架来和集团场景对接

  2. 2. 全量使用 TypeScript 是未来一段时间的趋势,面向未来去迭代和研发是作为架构组创新的要求

  3. 3. 虽然社区已经有 nest 这样的框架,但是这些产品的维护、协作、修改都会受到商业化产品的制约,也无法做到需求的快速迭代和安全性保障,整体的研发理念也和我们不同,为此,我们需要有一套自研的框架体系


一个面向未来的云端一体Node.js框架——Midway

多编程范式

Midway 支持面向对象与函数式两种编程范式,你可以根据实际研发的需要,选择不同的编程范式来开发应用。

  • • 面向对象(OOP + Class + IoC)

Midway 支持面向对象的编程范式,为应用提供更优雅的架构。下面是基于面向对象,开发路由的示例:

// src/controller/home.ts
import { Controller, Get } from '@midwayjs/decorator';
import { Context } from '@midwayjs/koa';

@Controller('/')
export class HomeController {

  @Inject()
  ctx: Context

  @Get('/')
  async home() {
    return {
      message: 'Hello Midwayjs!',
      query: this.ctx.ip
    }
  }
}
  • • 函数式(FP + Function + Hooks)

Midway 也支持函数式的编程范式,为应用提供更高的研发效率。下面是基于函数式,开发路由接口的示例:

// src/api/index.ts

import { useContext } from '@midwayjs/hooks'
import { Context } from '@midwayjs/koa';

export default async function home () {
  const ctx = useContext<Context>()

  return {
    message: 'Hello Midwayjs!',
    query: ctx.ip
  }
}

应用案例

  • • Cool-Admin – 一个很酷的后台权限管理框架

  • 一个面向未来的云端一体Node.js框架——Midway


  • • VSC Plugin


—END—

开源协议:MIT

开源地址:https://github.com/midwayjs/midway

原文始发于微信公众号(开源技术专栏):一个面向未来的云端一体Node.js框架——Midway

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/53837.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!