Artus.js 在企业内落地实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. Artus.js 企业内落地实践
段潇涵
字节跳动 Node.js 研发工程师
2. 目录
00 Artus.js 是什么?
01 Artus.js 理念的理解
02 基于 Artus.js 开发框架
03 框架工具链与生态
3.
4. Artus.js 是什么
5. “Artus.js 技术规范用于描述如何构建一个用于
Web、RPC、Serverless 等场景的 Node.js
Framework。” —— from Artus.js SPEC
6. Artus.js 是什么?
起名字的故事
框架 的 框架
Framework
英语很多词汇的来源:拉丁语
框架的来源:Artus
Artus
7. Artus.js 是什么?
核心概念
TypeScript 协议无关 渐进式 构建 + 运行
提升可维护性
元数据信息
内置 IoC 容器,提供 DI 能力 不绑定具体协议
不局限在 HTTP Plugin 能力与生态共建 全链路构建 + 启动
提前分析、静态化辅助
工具链定制能力
启动提速
Framework 封装
渐进式得研发体验
8. Artus.js 理念的理解
9. Artus.js 理念的理解
IoC Plugin Framework
提供 IoC 能力,通过 DI 的方
式管理对象 提供插件能力进行拓展 提供 Framework 能力渐进式
开发与多层封装
10. Artus.js 理念的理解
IoC
路由分析
依赖分析
11. Artus.js 理念的理解
Plugin & Lifecycle
Lifecycle 能力
MySQL 连接
启动前置埋点
……
Plugin 能力
MySQL 插件
Metrics 插件
HTTP Server 插件
……
12. Artus.js 理念的理解
Framework
Framework 使用场景
集成通用插件,提供开箱即用的框架
集成环境插件,上云项目快速切换
集成领域插件,附加业务领域通用能力
13. 基于 Artus.js 开发框架
14. 基于 Artus.js 开发框架的思路
15. 基于 Artus.js 开发框架思路
按功能模块组织目录
用户界面一览
开启 HTTP 插件
声明可被框架管理的对象
声明 HTTP Controller
使用 Service
16. 基于 Artus.js 开发框架思路
Application
继承 Artus Application
使用默认 Scanner 扫描
并处理扫描结果
使用默认 Loader 加载
并触发 Artus 启动
17. 基于 Artus.js 开发框架思路
Prococol
提供给用户使用的装饰器
主要工作是为对象附加元
信息并注入容器
18. 基于 Artus.js 开发框架思路
Prococol
选择开源或自建的协议
server,通过容器拿到元
信息,处理 server 启动
19. 基于 Artus.js 开发框架思路
Prococol
通过 Lifecycle 启动协议 server
20. 基于 Artus.js 开发框架思路
Plugin
通过 Lifecycle 将需要的对
象注入容器交给 Artus 管理
实现插件逻辑代码
21. 基于 Artus.js 开发框架思路
Framework
提供默认配置、集成常用插件、控制是否默认开启等
示例代码:https://github.com/artus-mini/artus-mini
22. 基于 Artus.js 开发多种场景框架
23. Application 场景框架
24. Application 场景框架
HTTP 协议
HTTP 协议相关装饰器
25. Application 场景框架
RPC 协议
RPC 协议相关装饰器
26. Application 场景框架
MQ 协议
MQ 协议相关装饰器
27. Function 场景框架
28. Function 场景框架
开发框架流程
加载 包装 构建
加载 Function 包装 addEventListener 代码 bundle 为单文件
29. Function 场景框架
HTTP 协议
HTTP 协议相关装饰器
30. Function 场景框架
MQ 协议
MQ 相关装饰器
多个函数代码会构建为多个文件拆分部署,公共依赖也会构建到每个函数内部 统一研发,拆分部
署,提升研发体验,降低部署耦合
31. CLI 场景框架
32. CLI 场景框架
在企业场景下,一个 CLI 除了常规的能力外,往往还有以下要求
试着对标下 Web:
• 支持身份鉴权 • 每一个 Command 是不是类似一个 Controller?
• 支持灵活的定制化和扩展能力 • Command 之间的公共逻辑是不是类似一个 Service?
• 具备一定的统一管控能力 • 支持身份鉴权,可以通过 Middleware 来统一拦截?
• 自动化升级能力 • 定制性和扩展能力,不正是插件机制么?
• 现代化、健壮、便于测试 • 开源版本和企业版本的关系,不正是框架机制么?
加载 构建
定制装饰器解析 argv
加载 Command 提供可运行的命令行指令
33. CLI 场景框架
目录结构
提供命令行指令
使用框架
示例代码:https://github.com/artus-cli/artus-cli
使用框架提供的装饰
器定义 command
34. 框架工具链与生态
35. 框架工具链与生态
CLI 辅助工具
中间件与生态
36. 框架工具链与生态
CLI 辅助工具
37. 框架工具链与生态
中间件与生态
38. 扫码回复「D2」
获取第十七届 D2 演讲 PDF 材料
后续也将推送 D2 会后技术文章,敬请关注!!
Artus.js 国内
使用者交流群
段潇涵的微信
39. 感谢大家观看