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。

目录
相关文章
|
18天前
|
开发框架 JavaScript 安全
js开发:请解释什么是Express框架,以及它在项目中的作用。
【4月更文挑战第24天】Express是Node.js的Web开发框架,简化路由管理,支持HTTP请求处理。它包含中间件系统用于日志、错误处理和静态文件服务,集成多种模板引擎如EJS、Jade、Pug。框架还提供安全中间件提升应用安全,并具有良好的可扩展性,便于项目功能扩展和开发效率提升。
26 3
|
4天前
|
Web App开发 JavaScript 前端开发
《手把手教你》系列技巧篇(三十九)-java+ selenium自动化测试-JavaScript的调用执行-上篇(详解教程)
【5月更文挑战第3天】本文介绍了如何在Web自动化测试中使用JavaScript执行器(JavascriptExecutor)来完成Selenium API无法处理的任务。首先,需要将WebDriver转换为JavascriptExecutor对象,然后通过executeScript方法执行JavaScript代码。示例用法包括设置JS代码字符串并调用executeScript。文章提供了两个实战场景:一是当时间插件限制输入时,用JS去除元素的readonly属性;二是处理需滚动才能显示的元素,利用JS滚动页面。还给出了一个滚动到底部的代码示例,并提供了详细步骤和解释。
28 10
|
2天前
|
存储 JavaScript 前端开发
Javascript教程
Javascript教程
7 0
|
3天前
|
JavaScript 前端开发 Java
《手把手教你》系列技巧篇(四十)-java+ selenium自动化测试-JavaScript的调用执行-下篇(详解教程)
【5月更文挑战第4天】本文介绍了如何使用JavaScriptExecutor在自动化测试中实现元素高亮显示。通过创建并执行JS代码,可以改变元素的样式,例如设置背景色和边框,以突出显示被操作的元素。文中提供了一个Java示例,展示了如何在Selenium中使用此方法,并附有代码截图和运行效果展示。该技术有助于跟踪和理解测试过程中的元素交互。
8 0
|
4天前
|
JavaScript 前端开发
JS实现网页页面的框架(demo)
JS实现网页页面的框架(demo)
9 1
|
10天前
|
设计模式 前端开发 JavaScript
AngularJS是一款由Google收购的JavaScript结构框架
AngularJS是Google收购的JavaScript框架,用于构建动态Web应用,基于MVC模式,强调模块化和双向数据绑定。它简化了视图与模型的同步,通过语义化标签和依赖注入提升开发效率。适用于复杂单页面应用(SPA),但不适合DOM操作密集型或性能要求极高的场景。
18 0
|
12天前
|
JavaScript 前端开发 IDE
【JavaScript与TypeScript技术专栏】TypeScript在JavaScript库与框架开发中的作用
【4月更文挑战第30天】TypeScript,微软开发的JavaScript超集,以其强类型和面向对象特性,正成为提升Web项目质量和效率的关键工具,尤其在库和框架开发中。它通过类型系统减少运行时错误,提供内置文档,便于重构,增强IDE支持,以及支持模块化。流行框架如React、Angular已支持TypeScript,未来有望成为开发高质量库和框架的标准语言。随着社区增长,TypeScript将在Web开发领域扮演更重要角色。
|
12天前
|
开发框架 JavaScript 中间件
深入探索Node.js的Express框架:使用与中间件详解
【4月更文挑战第30天】本文深入探讨了Node.js的Express框架,介绍了其作为Web开发的强大工具,主要聚焦于基本使用和中间件。Express是基于Node.js的Web应用框架,用于构建高效的应用和API。文章详细讲解了如何安装Express,创建简单应用,以及中间件的工作原理和应用,包括中间件的顺序、错误处理和挂载位置。此外,还提到了使用第三方中间件扩展功能。理解Express基础和中间件对于开发高质量Web应用至关重要。
|
13天前
|
JavaScript 前端开发 开发者
前端框架(Vue.js&&vue-cli项目框架&&element-ui使用)
前端框架(Vue.js&&vue-cli项目框架&&element-ui使用)
|
1月前
|
JavaScript 前端开发 API
框架分析(3)-Vue.js
框架分析(3)-Vue.js