后端微服务云原生【免费下载链接】midway A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 项目地址https://gitcode.com/gh_mirrors/mi/midway点击查看免费下载Midway 是一个面向云端一体的 Node.js 框架它同时支持装饰器驱动的传统 Web 开发、函数式的全栈研发模式以及 Serverless/FaaS 部署形态。本文以 Midway 官方 README 为主线结合仓库源码与官方示例系统讲解其核心定位、两种开发范式装饰器与函数式、快速上手流程以及底层实现原理帮助读者直接上手构建可部署到 Server、Serverless 或云函数环境的 Node.js 应用。Midway 是什么一个面向未来场景的 Node.js 框架Midway 是一个适用于构建Serverless 服务、传统应用、微服务、小程序后端的 Node.js 框架。它并非从零实现一套 Web 运行时而是建立在成熟生态之上可以使用Koa、Express 或 Egg.js作为基础 Web 框架提供独立使用的基础解决方案例如Socket.io、GRPC、RabbitMQ等覆盖实时通信、RPC、消息队列等常见场景面向前端/全栈开发人员是一个 Node.js Serverless 框架可运行在AWS、阿里云、腾讯云以及传统 VM/容器环境并能与React 和 Vue轻松集成。从仓库组织上也能看到这一全场景定位packages/目录下既有提供 IoC 容器与框架内核的core也有web-koa、web-express等 Web 适配层以及grpc、rabbitmq、socketio、bull、bullmq、kafka、mqtt、redis等组件化能力。整个仓库采用 pnpm workspace Lerna 管理的 monorepo 结构见 pnpm-workspace.yaml 与 lerna.json当前版本为 4.2.3工程要求 Node.js 20、pnpm 9见 package.json。核心特性速览官方 README 对框架能力做了如下归纳全功能支持 Web 应用 / Serverless / FaaS / 微服务 / 小程序后端等多种场景基于装饰器和依赖注入开发企业级应用前端集成全新的云端一体应用研发体验零 API 调用使用 React Hooks 风格一体研发跨平台支持部署至普通 Server 或 Serverless/FaaS 环境扩展组件化扩展能力支持使用 Koa / Express / Egg.js 生态插件示例官方提供多种场景的示例代码方便快速上手TypeScript 全面支持。范式一使用装饰器开发 Web 应用Midway 最经典、也是 README 首先展示的用法是通过装饰器声明 Controller 与路由。官方最小示例只有十几行代码import { Controller, Get, Provide } from midwayjs/decorator; Provide() Controller(/) export class HomeController { Get(/) async home() { return Welcome to midwayjs!; } }这段代码包含了装饰器开发的核心三要素Provide()将类注册进 IoC 容器使其可以被依赖注入管理Controller(/)声明这是一个控制器类并指定路由前缀Get(/)将home方法映射为GET /的处理函数返回值即为响应体。这种类 方法装饰器的开发方式配合 Midway 的依赖注入容器可以非常自然地组织业务代码、复用 Service、注入配置与中间件。范式二使用函数开发全栈应用零 API 调用的云端一体研发这是 README 重点展示的面向前端/全栈开发者的研发模式后端直接以函数形式导出前端像调用本地函数一样调用后端接口无需手写 API 层与请求封装。后端代码以函数定义接口后端代码位于src/apis/lambda/index.ts使用midwayjs/hooks提供的Api、Get、Query、useContext等能力import { Api, Get, Query, useContext, } from midwayjs/hooks; export default Api( Get(), Query{ page: string; limit: string; }(), async () { const ctx useContext(); return { page: ctx.query.page, limit: ctx.query.limit, }; } );这里Api()声明这是一个后端函数路由Get()指定 HTTP 方法QueryT()声明查询参数结构useContext()则像 React Hooks 一样在函数内获取当前请求上下文ctx.query拿到 URL 查询参数。前端调用像调用本地函数一样请求后端前端在src/page/index.tsx中直接 import 后端函数并调用import getArticles from ./api; const response await getArticles({ query: { page: 0, limit: 10 }, }); console.log(response); // { page: 0, limit: 10 }手动调用底层本质仍是 HTTP 接口函数式开发并不是黑魔法它最终仍然映射为标准 HTTP 接口因此也可以手动发起请求fetch(/api/articles?page0limit10) .then((res) res.json()) .then((res) console.log(res)); // { page: 0, limit: 10 }三种调用方式返回完全一致的结果这正是零 API 调用的含义框架自动完成路由注册、参数透传与序列化开发者把精力集中在业务函数本身。源码视角函数式路由如何被注册为真实路由函数式 API 并非独立的另一套运行时而是建立在装饰器体系之上的语法糖。核心实现在 packages/core/src/functional/api.ts 的defineApi中通过api.get()、api.post()等方法返回一个RouteBuilder支持链式调用.input()、.output()、.middleware()、.meta()与.handle()api.ts每条路由会被规范化为FunctionalRouteDefinition其method必须落在 GET/POST/PUT/DELETE/PATCH/OPTIONS/HEAD/ALL 集合内否则抛出错误api.ts框架内部会为函数式模块动态生成一个类如FunctionalApi_prefix_hash把每个函数挂到该类的原型方法上再复用RequestMapping与Controller装饰器完成与类式开发完全一致的路由注册流程api.ts。也就是说函数式 API 与装饰器 Controller 最终殊途同归都汇入同一套路由注册机制因此可以在同一应用中混用两种写法。Hooks 风格在函数中获取容器能力useXxx系列 API 定义在 packages/core/src/functional/hooks.ts让函数式代码也能像 React Hooks 一样按需取用框架能力Hook作用useContext()获取当前请求上下文基于异步上下文管理器存储见 hooks.tsuseLogger(name?)获取当前请求或应用级 LoggerusePlugin(key)获取框架/应用挂载的插件实例useInject(identifier)/useInjectSync(identifier)从 IoC 容器异步/同步获取依赖实例useConfig(key?)读取全局配置走MidwayConfigServiceuseApp(name)/useMainApp()获取指定应用或主应用实例useInjectClient(serviceFactoryClz, clientName?)注入 Service Factory 并取出指定客户端useInjectDataSource(managerClz, name)注入数据源管理器并取出指定数据源官方示例一个完整的函数式 API 服务仓库中的 samples/functional-api-service 是可直接运行的函数式 API 最小工程。其入口配置configuration.ts使用函数式的defineConfiguration组装 Koa、全局前缀与端口import { ESModuleFileDetector } from midwayjs/core; import { defineConfiguration } from midwayjs/core/functional; import * as koa from midwayjs/koa; export default defineConfiguration({ imports: [koa], importConfigs: [ { default: { keys: midway-functional-api-service-sample-key, koa: { globalPrefix: /api, port: 7001, }, }, }, ], detector: new ESModuleFileDetector(), });业务接口定义在 api/health.api.ts展示了meta({ routerName })指定路由名、通过input.body读取请求体的用法import { defineApi } from midwayjs/core/functional; export const healthApi defineApi(/health, api ({ ping: api .get(/ping) .meta({ routerName: healthPing }) .handle(async () { return { ok: true, now: new Date().toISOString(), }; }), echo: api .post(/echo) .meta({ routerName: healthEcho }) .handle(async ({ input }) { return { body: input.body ?? null, }; }), }));可以看到defineApi(/health, api ({...}))的第一个参数是路由前缀第二个参数接收一组路由工厂函数返回对象中的每个键即为一条路由定义。该示例的依赖仅包含midwayjs/bootstrap、midwayjs/core与midwayjs/koa见 package.json是理解函数式 API 的最佳入门样本。路由输入输出与校验defineApi的RouteBuilder还内置了对路由输入params / query / body / headers的校验能力底层validateInput会依次尝试safeParseAsync、safeParse、parseAsync、parse四种方法兼容 Zod 等 schema 校验库校验失败会抛出MidwayCommonError并附带字段标签如input.query方便定位问题见 api.ts。快速上手从一个模板工程开始官方 README 给出的起步流程非常简洁三步即可跑起一个 Midway 应用$ npm -v ## 选择模版 $ npm init midway ## 进入项目路径 cd my_midway_app npm run dev其中npm init midway会启动官方脚手架按交互提示选择一个适合场景的模板Web、Serverless、函数式等随后进入项目目录执行npm run dev即可本地启动开发服务。结合仓库中的 samples/ 与 benchmark/fixtures 目录可以看到官方维护了大量可直接参考的示例工程如functional-api-service、functional-api-hybrid、koa-esm-app、react-functional-api等覆盖 ESM、React/Vue 集成、混合研发等多种形态。生态与扩展组件、文档与社区Midway 的组件化扩展能力使其生态非常丰富。从仓库packages/目录可以看到官方维护的组件全家桶按用途可分为几类Web 适配web-koa、web-express以及 Egg.js 生态兼容层数据与存储typeorm、sequelize、mongoose、mikro、mikro7、leoric、redis、cache-manager、oss、cos、tablestore通信与消息grpc、rabbitmq、kafka、mqtt、socketio、ws、bull、bullmq、piscina安全与鉴权security、jwt、passport、casbin含casbin-redis-adapter、casbin-typeorm-adapter、cross-domain、captcha研发体验swagger、i18n、validate系列validation、validation-joi、validation-zod、validation-class-validator、view系列模板渲染、upload、busboy、cron、event-emitter、tenant、http-proxy、api-bridge、code-dye、prometheus监控等。这些组件即插即用开发者也可以按照相同规范编写自己的组件包。Midway 拥有完善的官方文档站与中文社区仓库内还沉淀了site/Docusaurus 文档站与tutorial/交互式教程工程两套学习资源以及 AGENTS.md、CONTRIBUTING.md 等协作规范贡献者可以在提交前查阅。许可证Midway 采用MIT协议见仓库根目录 LICENSE可以放心用于商业与个人项目。总结Midway 的核心价值在于一套心智多种形态——装饰器与函数式两种开发范式共享同一套 IoC 与路由内核开发者既可以用传统 MVC 方式组织企业级应用也可以用 Hooks 风格实现前端/全栈的云端一体研发并自由选择部署在 Server、容器或各家云厂商的 Serverless 环境。赞分享后端微服务云原生【免费下载链接】midway A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 项目地址https://gitcode.com/gh_mirrors/mi/midway点击查看免费下载相关推荐midway下一代Node.js Serverless框架如何重塑全栈开发midway下一代Node.js Serverless框架如何重塑全栈开发 你还在为传统Node.js应用的复杂部署流程而困扰还在为Serverless场景后端微服务云原生Django-Auditlog完全指南如何轻松实现Django模型变更追踪Django Auditlog完全指南如何轻松实现Django模型变更追踪 Django Auditlog是一个强大的Django应用能够自动记录模型对象的后端Burn实战应用从嵌入式到Web的全栈AI开发Burn实战应用从嵌入式到Web的全栈AI开发 本文深入探讨了Burn框架在不同计算环境中的实战应用涵盖了从资源受限的嵌入式设备到浏览器端的WebAssem人工智能深度学习机器学习本地部署上一篇告别烧录烦恼3分钟掌握Etcher全平台安全安装下一篇OpenSpec 规范驱动开发一套规范文件管住 20 个 AI 工具不互相打架创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
共享账号凭据定期巡检与僵尸账号自动回收怎么做:安当SYP 的落地实践 一、为什么共享账号凭据必须定期巡检
企业里有一类账号很特殊:它不是绑定到某个具体员工的"人账号",而是多人共用的"系统账号"。比如供应链协同门户的供应商登录号、车企研发外包用的代码仓账号、财务共享中心的银企直连账号、电商客… · 2026/9/27 9:02:38
使用 AWS SDK for Kotlin 构建 SNS 主题与 SQS 队列的发布/订阅、过滤与 FIFO 实战指南 示例工程教程后端 【免费下载链接】aws-doc-sdk-examples Welcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below. 项目地… · 2026/9/27 9:02:38
监控和日志的网络协议 前言
网络运维离不开两件事:监控要知道设备现在怎么样,日志要知道设备过去发生了什么。前者靠管理站主动查询,后者靠设备主动上报。围绕这两个需求,常用协议有 SNMP(UDP 161/162)、Syslog(UDP 5… · 2026/9/27 9:02:38
不会代码也能从零搭建购物导购网站开发全流程 不会代码也能从零搭建购物导购网站开发全流程 你手里有个绝佳的选品项目,或者想做个垂直领域的导购平台,但一提到“写代码”就头大,感觉离上线十万八千里。其实, 自己不会代码想做网站… · 2026/9/27 9:37:43
3步搞定推广型网站建设销售,避坑备案坑选哪家好 3步搞定推广型网站建设销售,避坑备案坑选哪家好 备案流程一头雾水,看着工信部官网那些术语就头疼?别急,我是做网站推广的,见过太多老板因为搞不定备案,或者选错了“推广型网站建设销售”团队,导致网站上线后没人看、没咨询。今天不聊虚的,直接拆解怎… · 2026/9/27 9:37:31
wordpress欢迎插件怎么选不踩坑?揭秘多少钱背后的真实成本 wordpress欢迎插件怎么选不踩坑?揭秘多少钱背后的真实成本 网站突然弹出奇怪的广告或者代码被篡改,你慌不慌?很多站长发现网站被黑挂马时,第一反应往往是去后台乱找设置,甚至怀疑是不是wordpress欢迎插件惹的祸。其实,… · 2026/9/27 9:37:24
Docker 底层知识:从 Namespace 到 UnionFS 很多人用 Docker 时觉得它很"轻量",但轻量背后其实是一套扎实的 Linux 内核机制。理解这些底层知识,能帮你更好地排查容器问题、设计镜像和规划资源。 文章目录一、容器不是虚拟机二、Namespace:隔离"看到什么"三、Cgrou… · 2026/9/27 9:37:24
wordpress汉化版博客避坑指南 3个WordPress汉化博客避坑指南新手必看 找建站公司报价三万五,结果交个半成品?自己折腾WordPress汉化版博客,又怕服务器配错、备案被拒、代码冲突导致网站瘫痪?这篇避坑指南,就是给咱们这种在浙江转行做网站、手里没几把刷子又怕被坑… · 2026/9/27 9:37:18
祁门县统计年鉴(2024-2025) 祁门县统计年鉴(2024-2025)数据来源:祁门县统计局数据年份:2024-2025数据格式:pdf目录:祁门县2024年国民经济和社会发展统计公报、行政区划和自然资源1-1 行政区划(2024年末1-2 历年行政区划变动情况1-3 自… · 2026/9/27 9:37:00
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01