前端工程下一站 IDE
如果无法正常显示,请先停止浏览器的去广告插件。
1.
2. 前端⼯工程下⼀一站 - IDE
上坡 吭头
3. ⾃自我介绍
上坡(张伟)
阿⾥里里集团 - 淘系技术部 - 前端技术 - 前端⼯工程
前端⼯工程⼯工具
阿⾥里里前端⼯工程中台
吭头(⻢马航)
蚂蚁⾦金金服 - 终端技术部 - 前端技术 - ⼯工程服务
⽀支付宝⼩小程序 IDE
KAITIAN 项⽬目技术负责⼈人
KAITIAN 项⽬目 PM
4. • 新站台: IDE
• 技术实现
• 落地实践
• 下⼀一步
5. 新站台: IDE — 基础设施
硬件端
容器器端
Prometheus
Kubernetes
本地端
Electron
NW.js
Carlo
基础依赖
Language Server Protocol
Debug Adapter Protocol
Monaco Editor
6. 新站台: IDE — 外部环境
独⽴立解决⽅方案
云⼚厂商收购⽅方案
7. 新站台: IDE — Expo Snack
IDE
调试预览
编译构建
编辑器器 Editor
8. 新站台: IDE — 阿⾥里里场景
⽀支付宝⼩小程序
阿⾥里里云 FC 函数计算
中后台
智能还原
登录验证 编译构建 集成部署
编辑器器 ⽂文件树 终端
9. 新站台: IDE — 阿⾥里里场景
本地端
云端
品牌⼊入⼝口效率 研发环境⼀一致
系统原⽣生能⼒力力 线上服务集成
⽹网络环境依赖 安装使⽤用成本
10. 新站台: IDE —KAITIAN
FAAS 函数 搭建模块 ⼩小程序 中后台 …
数据调试 智能还原 真机调试 物料料管理理 …
IDE 集成⽅方式
本地端
Web 端
内部 IDE 平台
外部 IDE 平台
插件体系(插件机制/插件市场)
集成部署
登录验证
编译构建
规则校验
KAITIAN FRAMEWORK
编辑器器
插件体系
调试预览
终端
资源管理理
…
11. 新站台: IDE — 内部场景
Web
FAAS
⽣生
本地
IDE
KAITIAN
FRAMEWORK
⽀支付宝⼩小程序
外部
插件
搭建
平台
态
研发
⼯工作台
内部
12. • 新站台: IDE
• 技术实现
• 落地实践
• 下⼀一步
13. 技术实现
• 整体架构
• 两端⼀一致
• 插件扩展设计
14. 技术实现 — 整体架构
⽀支撑服务
插件市场
容器器服务
更更新服务
⽇日志服务
灰度服务
配置服务
封装能⼒力力
编辑器器
SCM 列列表
输出⾯面板
功能模块
编辑器器插件 API
Monaco 定制
Hover 提示
定义查询
语法检测
Editor 定制
引⽤用跳转
Model ⽂文档定制
Grid 布局管理理 ⽂文档管理理 编辑状态管理理
语⾔言/语法注册 诊断展示 组件化展示 引⽤用管理理 版本管理理
主题设置 编辑状态栏 镜像同步 虚拟⽂文档
快捷键管理理
代码着⾊色
Tab 管理理
URI 关联 Resource
⽬目录浏览
组件定制展示
资源服务定制
⽂文档内容
快捷打开 Markdown 预览
搜索 状态栏
命令⾯面板 设置⾯面板
左侧导航 代码管理理
⼯工具栏 预览⾯面板
展示集成(xterm.js)
动态加载
临时内容
已打开⽂文件
布局监听
节点回收
内容提供定制
⾯面包屑
终端
⽂文件树组件
分组划分
基础库加载
频道管理理
搜索结果
语⾔言服务(LSP)
语⾔言注册
通信协议适配 ws/ipc
⽬目录管理理 操作连接管理理
监听响应 模拟进程(node-pty)
基础能⼒力力
预览服务
布局能⼒力力
插件机制
本地/远程加载
插件扫描
安装卸载
插件激活
基本能⼒力力
调试能⼒力力
插槽能⼒力力
调试⾯面板
命令机制
Editor 调试⽀支持
消息链路路
设置服务 依赖注⼊入
数据存储 国际化
快捷键绑定 状态管理理 事件机制
存储服务 标签服务 ⽇日志能⼒力力
主题服务 ⼯工作空间管理理 应⽤用加载
断点
扩展能⼒力力
匹配调⽤用通道
位置管理理计算
UI 定制 逻辑隔离环境
环境适配
服务注册
WebWorker
堆栈
操作⾯面板
应⽤用⽣生命周期管理理
Node
⽂文件服务
拖拽布局 调试插件集成
定制菜单 DAP 容器器环境
动态视图注册 Session 管理理
VSCode 定制配置 Contribution
内容操作
⽬目录操作
监听服务
color command
language localization
configuration
menu
grammar keybinding
theme view
插件进程管理理
消息通道
API 注⼊入
进程重连
唯⼀一性控制
预加载管理理
编码探测
可定制⽂文件系统
通信能⼒力力
插件 API
本地⽂文件系统 languages workspace debug scm version
插件定制⽂文件系统 commands window env extensions root
服务注册
连接协议适配 ws/ipc
远程调⽤用
消息推送
调⽤用撤销
重连恢复
连接管理理
插件通信
15. 技术实现
• 整体架构
• 两端⼀一致
• 插件扩展设计
16. 技术实现 — 两端⼀一致
Electron App
两端⼀一致
在 浏览器器环境 与 本地客户端环境 运⾏行行相同实现代码
17. 技术实现 — 两端⼀一致
Browser Electron
⻚页⾯面渲染 ✓ ✓
原⽣生组件 ✖ ✓
Node环境 ✖ ✓
⽂文件访问 ✖ ✓
18. 技术实现 — 两端⼀一致
Electron App
Web 渲染环境
IDE Server
19. 技术实现 — 两端⼀一致
BrowserTab
BrowserWindow
Web 渲染环境
通信抽象
IPC
WEBSOCKET
服务环境
Docker Container
Electron Main(Child Process)
IDE Extension IDE Extension
IDE Node Server IDE Node Server
20. 技术实现 — 两端⼀一致
Browser
通信抽象
WEBSOCKET
IPC
Backend Services
Terminal
Service
Extension
Runtime
Language
Server
File System
Db Storage
21. 技术实现 — 两端⼀一致
Browser
Terminal
Service
Interface
Extension
Runtime
Interface
File System
Interface
Language
Service
Interface
Db Storage
Interface
通信抽象
WEBSOCKET
Backend Service
Suite 1
Terminal
Service
IPC
Backend Service Suite 2
Extension
Runtime
File System
Language
Service
Backend Service
Suite 3
Db Storage
22. 技术实现
• 整体架构
• 两端⼀一致
• 插件扩展设计
23. 技术实现 — 插件扩展设计
Extension Registration
name
code entry
Extension Runtime
Extension Registration
name
code entry
Extension Registration
name
code entry
Extension Registry
e.g.
require(codeEntry)
24. 技术实现 — 插件扩展设计
Browser Context
Extension Api
Extension
Code
Extension
Code
Extension
Code
Atom Editor
将扩展代码运⾏行行在 Browser 进程中
⽀支付宝⼩小程序IDE
25. 技术实现 — 插件扩展设计
Core Code Extension Code Extension Code
Extension Code Extension Code Extension Code
26. 技术实现 — 插件扩展设计
Core Code Extension Code Extension Code
Extension Code Extension Code Extension Code
27. 技术实现 — 插件扩展设计
两端⼀一致
Core Code Extension Code Extension Code
Extension Code Extension Code Extension Code
28. 技术实现 — 插件扩展设计
Browser Context
Api Server
Extension Api
Extension Host
Extension Code
Extension Code
将扩展代码运⾏行行在独⽴立进程中
Extension Code
Visual Studio Code
29. 技术实现 — 插件扩展设计
Browser Context
Api Server
DOM
Extension Api
Extension Host
Extension Code
Extension Code
将扩展代码运⾏行行在独⽴立进程中
Extension Code
30. 技术实现 — 插件扩展设计
View
Page XML
Page XML
User Action
Set Data
Model & Controller
Page JS
Page JS
31. 技术实现 — UI 扩展定制
UI 组件
Component 1
业务逻辑调⽤用
Component 2
Component 3
Component ⽅方法调⽤用
UI 服务注册隔离(Extension Host)
业务逻辑
扩展 API 调⽤用
32. 技术实现 — UI 扩展定制
33. 技术实现 — UI 扩展定制
React 组件调⽤用 调⽤用 Node 进程中注册的服务
component.tsx
extend-node.ts
34. 技术实现 — UI 扩展定制
Node 进程 调⽤用 React 组件 UI 响应⽅方法
component.tsx
extend-node.ts
35. 技术实现 — UI 扩展定制
完整示例例
component.tsx
extend-node.ts
36. 技术实现 — 插件扩展设计
VSCode 插件市场
KAITIAN EXTENSION
VSCode Extension UI Extend
编码体验 业务场景
37. 技术实现 — UI 扩展定制
客户端
Electron
Chrome
Web 渲染环境
插件 UI 注册
Component 1
Component 2
Component ⽅方法 注册
业务逻辑调⽤用
插件 B
UI 注册 插件 C
UI 注册
插件 B 服务 插件 C 服务
Component 3
UI 渲染展示
Webwoker / Node 进程 隔离环境
插件 A 服务
扩展能⼒力力
业务逻辑注册
Component ⽅方法 调⽤用
VSCode 插件能⼒力力兼容
插件服务
插件扫描
插件激活
上下⽂文 API 注⼊入
消息通信
配置注⼊入
38. • 新站台: IDE
• 技术实现
• 落地实践
• 下⼀一步
39. 落地实践
• ⽀支付宝⼩小程序 IDE
• WebIDE 中台
40. 落地实践 — ⽀支付宝⼩小程序 IDE
⼩小程序插件
业务集成
模拟器器
调试器器
账号
编译构建
底层能⼒力力
编辑器器
插件体系
调试预览
终端
资源管理理
…
41. 落地实践 — ⽀支付宝⼩小程序 IDE
标准插件集成
NPM 管理理
模拟器器
调试器器
账号
编译构建
KAITIAN-FRAMEWORK
编辑器器
插件体系
调试预览
终端
资源管理理
…
42. 落地实践 — ⽀支付宝⼩小程序 IDE
KAITIAN-FRAMEWORK
43. 落地实践
• ⽀支付宝⼩小程序 IDE
• WebIDE 中台
44. 落地实践 — WebIDE 中台
KAITIAN-FRAMEWORK
IDE
45. 落地实践 — WebIDE 中台
FAAS 函数
搭建模块
⼩小程序
中后台
IDE
IDE 集成
调度策略略
底层服务
路路由访问
服务集成
平台同步
整体解决⽅方案
域名代理理
内核更更新
数据监控
异常容灾
基础设施
容器器搭建
空间调度
服务部署
KAITIAN-FRAMEWORK
资源管理理
46. 落地实践 — WebIDE 中台
FAAS 函数
搭建模块
⼩小程序
中后台
服务 SDK
服务管理理
⼯工作空间
空间⽤用户
代码仓库
业务配置
镜像模板
机器器规格
插件集成
伴⽣生服务 布局配置
定制服务能⼒力力 监控运维
租户管理理
底层能⼒力力
容器器调度
⽹网络访问
稳定性保障
47. • 新站台: IDE
• 技术实现
• 落地实践
• 下⼀一步
48. 落地实践 — 开发者⼯工作平台 2020.03
开发者⼯工作平台
49. 落地实践 — 开源开放 2020.05
插件市场
最佳实践
Web 端⽅方案
本地端⽅方案
插件开发
KAITIAN FRAMEWORK
⽂文档 ⽅方案
示例例 源码
50. Q&A
上坡
吭头