Midway 是一个适用于构建 Serverless 服务,传统应用、微服务,小程序后端的 Node.js 框架。
Midway 可以使用 Koa,Express 或 Egg.js 作为基础 Web 框架。它还提供了独立使用的基本解决方案,例如 Socket.io,GRPC,Dubbo.js 和 RabbitMQ 等。
此外,Midway 也适用于前端/全栈开发人员的 Node.js 无服务器框架。构建下一个十年的应用程序。可在 AWS,阿里云,腾讯云和传统 VM /容器上运行。与 React 和 Vue 轻松集成。
Midway 的一些特性。
使用 midway-init 工具自动创建 midway 应用的目录结构:
$ npm i midway-init -g $ midway-init
目前只有一个 ts 的脚手架,可以直接使用。
通过生成的 npm scripts
来驱动启动命令:
$ npm install $ npm run dev
想要快速上手 midway,除了需要了解一些基础的东西:
虽然可以直接用 js 的语法书写,但是你最好了解 Typescript,这里有个 快速介绍。
尽可能使用面向对象的思想来编码,它的经久不衰是有道理的,使用 class 机制能够方便的融入我们的新特性。
了解 midway 的依赖注入体系,以及常用的装饰器,这里做了 依赖注入的介绍。
如果你在 midway 的文档中没有找到你想要的东西,记住可以去 Egg 的文档找找,或者 向我们提 Issue。
我们将依赖注入引入到了复杂业务中,经过各种装饰器的包装,业务的同学们可以更加专注的在业务领域,而不用关心依赖的实例化,初始化。
简单的例子。
@provide() @controller() export class HomeController { @inject() reportService: IReportService; @get('/') async index(ctx) { ctx.body = await this.reportService.getReport(); } } @provide() class ReportService implements IReportService { @inject() reporter: IReportManager; async getReport(id: number) { return await this.reporter.get(id); } }
上边的代码中我们展示了两个 class,HomeController
依赖了 ReportService
,很常见的写法,可以看到其中没有任何实例化或者初始化的迹象,业务代码也如同普通调用的那样直接,这都归功于依赖注入的魔法。
经过装饰器的修饰,形成了多个类,但是又不会相互耦合的局面,让独立开发,测试都非常的方便。
除了以上的装饰器,我们还开发了 @schedule
@init
@plugin
等好用的装饰器。
Midway 是一个 Egg.js 的拓展框架,他提供了更多 ts 以及依赖注入方面的支持。今天我们来看一下 Midway 的启动过程。 Index before start midway-bin: CLI startup midway: cluster startup midway-web: Application/Agent startup example for the flow concl
阅读本文前,需要提前阅读前置内容: 一、Midway 增删改查 二、Midway 增删改查的封装及工具类 三、Midway 接口安全认证 四、Midway 集成 Swagger 以及支持JWT bearer 五、Midway 中环境变量的使用 样例源码 DEMO LIVE 通常我们不希望将生产环境的相关配置写在项目代码中,而希望在不同的环境中启动时自动读取环境中设置的配置; 在本教程中,我也不希望
安装Midway支持的sequelize npm install @midwayjs/sequelize -S 安装数据库驱动 npm install mysql2 --save 引入模块: 在src/configuration.ts文件中: import * as sequlize from '@midwayjs/sequelize'; @Configuration({ imports:
本文向大家介绍基于豆瓣API+Angular开发的web App,包括了基于豆瓣API+Angular开发的web App的使用技巧和注意事项,需要的朋友参考一下 一、扯淡的说 name:【豆瓣搜索】 最近关注了下豆瓣的API,发现豆瓣开放平台需要加强API文档撰写啊....但是有个可喜的发现豆瓣V2接口提供了搜索接口。最近在用phantom弄些爬虫,想想,真是美丽极了!有个豆瓣的接口,我都不用去
本文向大家介绍基于NodeJS的前后端分离的思考与实践(一)全栈式开发,包括了基于NodeJS的前后端分离的思考与实践(一)全栈式开发的使用技巧和注意事项,需要的朋友参考一下 前言 为了解决传统Web开发模式带来的各种问题,我们进行了许多尝试,但由于前/后端的物理鸿沟,尝试的方案都大同小异。痛定思痛,今天我们重新思考了“前后端”的定义,引入前端同学都熟悉的NodeJS,试图探索一条全新的前后端分离
本文向大家介绍基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用,包括了基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用的使用技巧和注意事项,需要的朋友参考一下 在前面介绍了两篇关于我的基于MVC4+EasyUI技术的Web开发框架的随笔,本篇继续介绍其中界面部分的一些使用知识,包括控件的赋值、取值、清空,以及相关的使用。 我们知道,一般Web界面包括的界面控件有
本文向大家介绍基于gin的golang web开发:路由示例详解,包括了基于gin的golang web开发:路由示例详解的使用技巧和注意事项,需要的朋友参考一下 Gin是一个用Golang编写的HTTP网络框架。它的特点是类似于Martini的API,性能更好。在golang web开发领域是一个非常热门的web框架。 启动一个Gin web服务器 使用下面的命令安装Gin 在代码里添加依赖 快
本文向大家介绍基于Vue开发数字输入框组件,包括了基于Vue开发数字输入框组件的使用技巧和注意事项,需要的朋友参考一下 随着 Vue 越来越火热, 相关组件库也非常多啦, 只用轮子怎么够, 还是要造起来!!! 1、概述 Vue组件开发的API:props、events和slots 2、组件代码 github地址:https://github.com/MengFangui/VueInputNumbe
真正的一问三不知,答的太差了,很多的基础知识都不会 1. springboot的核心注解,springbootApplication注解下有哪些注解 2. controller和restController的区别 3. 介绍一下mybatis 4. mybatis有哪些核心类,sqlSessionFactory的工作原理 5. mybatis的缓存机制了解吗 6. 讲讲缓存有哪些问题(没懂什么意思