serveless 思想 Midway.js 框架使用教程(一)

简介: serveless 思想 Midway.js 框架使用教程(一)

BFF 思想


随着 Nodejs 的成熟,在2015年,基于BFF(Backgroud For Frontend,服务于前端的后端)的架构理念被提出,BFF 架构通过在UI 和服务端之间加入中间层,解决了前后端职责难以划分的问题。


9f9b5adeace64b9eb19e4e725a4f42bc.png


如图所示,由于前端的逻辑复杂性不断增加,增加了专门用于处理用户界面逻辑的服务层,同时后端逻辑也完成下沉,基于微服务架构的后端服务逐渐成型,通过基于Node.s 的BFF 层,前后端形成了比较清晰的分工,也就是进入了前端工程师时代。


Nodejs的基本原理


创始人Rvan Dahl,他为了解决服务器的高并发性能问题,他认为通过事件驱动和异步I/O来解决这问题是关键。然后2008年谷歌推出了chrome浏览器,使用V8引擎就满足了他的想象。v8引擎的优势


。1、历史遗留问题少,都是异步I/O

。2、强大的编译和执行的效率

。3、javascript的闭包特性非常方便

。4、利用事件驱动机制


随后Rvan Dahl就发现了v8引擎的巨大优势,然后Ryan Dahl就把v8移植到了服务端,就这样nodejs就从他的手中脱颖而出,就这样诞生了。


●1、构建在chrome浏览器v8引擎上的一个运行环境

●2、非阻塞I/O模型

●3、事件驱动

●4、以最少的硬件成本,追求更高的并发,更高的处理性能


Node.is主要由V8Libuv第三方库组成


●V8:实现JS解析和支持自定义的功能,得益于V8支持自定义拓展,才有了Node.js。。●Libuv: 跨平台的异步0库,但它提供的功能不仅仅是I0,还 包括进程、线程、信号、定时器进程间通信,线程池等。

●第三方库: 异步DNS解析 (cares) 、HTTP解析器 (日版使用 http parser,新版使用Ilhttp)HTTP2解析器 (nghttp2)解压压缩库(zlib)、加密解密库(penssl)等等


常用的框架


微信图片_20230207185024.png


Midway简介


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


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


多编程范式


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


面向对象 (OOP + Class + loC)


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
  }
}


环境准备


首先确保你已经安装了Node.is,Node.is 安装会附带npx 和一个npm包运行程序,Midway 3.0.0 最低版本要求12.x。

目录
相关文章
|
6天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端框架
【10月更文挑战第34天】在数字化时代,后端开发如同一座桥梁,连接着用户界面与数据处理的两端。本文将通过Node.js这一轻量级、高效的平台,带领读者领略后端框架的魅力。我们将从基础概念出发,逐步深入到实战应用,最后探讨如何通过代码示例来巩固学习成果,使读者能够在理论与实践之间架起自己的桥梁。
|
1月前
|
JavaScript 前端开发 中间件
探索后端技术:Node.js与Express框架的完美融合
【10月更文挑战第7天】 在当今数字化时代,Web应用已成为日常生活不可或缺的一部分。本文将深入探讨后端技术的两大重要角色——Node.js和Express框架,分析它们如何通过其独特的特性和优势,为现代Web开发提供强大支持。我们将从Node.js的非阻塞I/O和事件驱动机制,到Express框架的简洁路由和中间件特性,全面解析它们的工作原理及应用场景。此外,本文还将分享一些实际开发中的小技巧,帮助你更有效地利用这些技术构建高效、可扩展的Web应用。无论你是刚入门的新手,还是经验丰富的开发者,相信这篇文章都能为你带来新的启发和思考。
|
29天前
|
JavaScript 前端开发 API
Vue.js:现代前端开发的强大框架
【10月更文挑战第11天】Vue.js:现代前端开发的强大框架
64 41
|
12天前
|
JavaScript 中间件 API
Node.js进阶:Koa框架下的RESTful API设计与实现
【10月更文挑战第28天】本文介绍了如何在Koa框架下设计与实现RESTful API。首先概述了Koa框架的特点,接着讲解了RESTful API的设计原则,包括无状态和统一接口。最后,通过一个简单的博客系统示例,详细展示了如何使用Koa和koa-router实现常见的CRUD操作,包括获取、创建、更新和删除文章。
34 4
|
19天前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的完美结合
【10月更文挑战第21天】本文将引导你走进Node.js和Express框架的世界,探索它们如何共同打造一个高效、可扩展的后端服务。通过深入浅出的解释和实际代码示例,我们将一起理解这一组合的魅力所在,并学习如何利用它们来构建现代Web应用。
39 1
|
8天前
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实践
【10月更文挑战第33天】在数字化时代的浪潮中,后端服务的效率和可靠性成为企业竞争的关键。本文将深入探讨如何利用Node.js和Express框架构建高效且易于维护的后端服务。通过实践案例和代码示例,我们将揭示这一组合如何简化开发流程、优化性能,并提升用户体验。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
9天前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的融合之道
【10月更文挑战第31天】在追求快速、灵活和高效的后端开发领域,Node.js与Express框架的结合如同咖啡遇见了奶油——完美融合。本文将带你探索这一组合如何让后端服务搭建变得既轻松又充满乐趣,同时确保你的应用能够以光速运行。
17 0
|
1月前
|
JavaScript 前端开发
js教程——函数
js教程——函数
31 4
|
1月前
|
JSON JavaScript 前端开发
Node.js Express 框架
10月更文挑战第7天
27 2
|
1月前
|
JavaScript 前端开发 API