阅读视图
手写一个无限画布 #2:渲染层的博弈:Canvas 还是 WebGL ?
DOM 和 SVG 为什么第一个被淘汰?
很多人会问:为什么不用 DOM?为什么不用 SVG?
答案其实很残酷。
浏览器为了渲染 DOM 和 SVG 节点,底层维护了一套极其庞大的对象模型和布局引擎。每一次你在触控板上轻轻一划,哪怕只是让相机的世界坐标移动几个像素,都可能被迫引发大量节点的重排(Reflow)与重绘(Repaint)。
当节点树突破临界点,主线程被压垮,原本丝滑的缩放和平移就会掉进帧率泥潭。
无限画布的核心诉求只有一个:
无论同屏多少元素,都要稳定 60fps。
想达成这一点,你必须脱离浏览器的排版流,进入纯粹的"像素缓冲区"世界。
在当前的 Web 技术栈中,能承载这个目标的只有两条路:Canvas 2D 和 WebGL。
它们不是同一个问题的两种解法,而是两种截然不同的工程解法。
Canvas 2D:浏览器替你扛住复杂度
Canvas 2D 是绝大多数画布项目的起点——在线白板、流程图工具、轻量设计工具。
原因很简单:它太好用了。
画一个带边框的矩形:
ctx.fillStyle = "rgba(255, 0, 0, 0.5)";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 2;
ctx.beginPath();
ctx.roundRect(10, 10, 100, 100, [5]);
ctx.fill();
ctx.stroke();
想画曲线就调用 quadraticCurveTo,想写字就 fillText,想加阴影就配置 shadowBlur。
Canvas 2D 给你的不是 GPU 访问权,而是一套图形语义 API——你在表达"我要画什么",而不是"我要如何让 GPU 算出这些像素"。底层可能是 Skia、CoreGraphics 或 Direct2D,你不需要知道。
这就是它的价值。
但这背后有个隐藏代价:你把控制权交给了浏览器。
Canvas 2D 的指令调用是单向且串行的,绝大多数场景依赖 CPU 处理绘图指令。当你同屏几万个图形,每一帧都要重新执行所有 draw 指令。哪怕只是平移一个像素,也要把全部图形循环重绘一遍。
你没法告诉浏览器:
"把这批图形放到显存里,下次只改变换矩阵就行。"
Canvas 不给你这个能力。
所以当大量使用图层合成、全局阴影时,每帧的绘制时间很容易突破 16.6ms 的底线。
对于中等规模应用,Canvas 2D 性价比极高。但当你开始追求"Figma 级别"的体验时,它会成为瓶颈。
WebGL:你需要接管整个物理世界
跨入 WebGL 的那一刻,你会遇到一个残酷现实:
这个世界里没有矩形。只有三角形。
我们来做一个直观对比。
在 Canvas 2D 里画一个红色矩形:
ctx.fillStyle = "red";
ctx.fillRect(10, 10, 100, 100);
2 行代码。
在 WebGL 里画同一个矩形:
// 1. 定义矩形四个顶点的坐标(拆分成两个三角形)
const vertices = new Float32Array([
-0.5,
0.5, // 左上
-0.5,
-0.5, // 左下
0.5,
0.5, // 右上
0.5,
-0.5, // 右下
]);
// 2. 将数据送入显存 Buffer 中
const buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);
// 3. 编写 Vertex Shader 算坐标,编写 Fragment Shader 涂成红色
// ...(此处省略几十行 Shader 编译与变量绑定代码)...
// 4. 通知 GPU 绘制这两个三角形(Triangle Strip)
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
如果你想画一个"带圆角的 2 像素红框矩形"呢?
在 WebGL 中,连 roundRect 都没有。你需要用数学算法算出圆弧上的离散点,将边框转换成一个个细小的三角形,然后还要自己在着色器里处理抗锯齿(Anti-Aliasing)。
甚至连文字排版都是个难题。WebGL 本身不懂文字——你要么把文字先用 Canvas 渲染成图片,再贴到 WebGL 里作纹理(Texture),要么引入复杂的 SDF(有向距离场)算法让 GPU 渲染出不失真的文字轮廓。
复杂度是指数级增长的。
选择 WebGL,你不只是在换一个 API。你是在决定成为一个"引擎开发者"。
真正的问题不是性能
我后来想明白了一件事:
大多数人不是死在 Canvas 性能不够,而是死在过早复杂化。
如果你的同屏元素不超过 5000,Canvas 2D 够用。如果你连空间索引、脏矩形优化都没做,谈 WebGL 就是在逃避真正的问题。
但如果你的目标是做重型设计工具级产品——WebGL 是绕不过的坎。
区别在于:你是否愿意为"控制权"买单。
我们的选择:现实、克制
关于 Canvas 还是 WebGL,没有统一的正确答案。取决于你的产品对同屏元素量级的刚需,以及团队对底层图形基建的掌控力。
本系列不会从零手写 WebGL 引擎。
我们选择基于 Canvas 2D,但不会裸写绘制指令。
我们会引入 Konva.js 作为底层支撑。Konva 是一个基于 Canvas 2D 的场景图引擎,自带图元管理、分层渲染和像素级事件系统。我们将在此基础上,剥离前端框架(React/Vue)的边界,用纯 TypeScript 构建一个接近 Excalidraw 架构的轻量级无限画布。
这不是性能最极限的方案。
但它是当前阶段最诚实的解法。
真正的深水区:交互
无论 Canvas 还是 WebGL,它们本质上都只是一块"死板"的像素画布。
当你脱离 DOM,你就失去了节点树。
浏览器的 click 事件只能告诉你:用户点在了 { x: 500, y: 400 }。
但不会告诉你:这是第 7823 个图元。
悬停、拖拽、框选、事件冒泡——全部失效。
当画布变成一个没有结构的像素世界,点击本质上变成了一道几何题。
下一篇,我们用真实代码来解这道题:在没有 DOM 的"野生像素图"上,从零实现空间检测与事件分发系统。
A股三大指数开盘涨跌不一,锂矿股走强
恒指开盘涨0.95%,恒生科技指数涨0.36%
2月26日人民币对美元中间价调升93个基点
36氪独家|前商汤工业机器人团队创业融资数千万,自研一体化控制轮式工业机器人
作者丨欧雪
编辑丨袁斯来
硬氪独家获悉,通用工业具身智能平台——深圳天元兴科技有限公司(下称“天元兴”)近日完成数千万元天使轮融资。本次投资方包括弘德投资、盛世鸿元、海愿资本等机构,募集资金将主要用于端到端具身智能控制技术研发、研发团队扩张及工业场景规模化落地。
天元兴成立于2024年12月,前身为商汤科技工业机器人事业部,由商汤工业机器人原班核心团队完成拆分成立,是商汤科技X生态成员企业。自成立之初便自带深厚的AI大模型技术沉淀,成熟的工业机器人技术积累,工程化落地能力以及行业头部客户落地经验。
公司创始人旷章辉为香港大学人工智能专业博士,曾先后任职于微软亚洲研究院、华为诺亚方舟实验室;2015年加入商汤科技,离任前担任商汤科技工业机器人事业部负责人,其主导开发的锂电池智能感知方案已在宁德时代等头部客户批量落地超100套,验证了其技术落地与客户服务能力。
当前,天元兴核心产品为轮式底盘人形双臂机器人「TX01」,主要面向工业场景提供柔性搬运、上下料、精密装配及主动质检等核心作业能力,精准匹配工业产线柔性的多样化、灵巧作业需求。
与市面上多数采用折叠式的轮式人形方案不同,TX01采用竹节电缸+轮式底盘组合设计,可实现重心始终居中,在工业场景下的运行稳定性更高。机器人支持4-8小时长续航、最大100kg高负载,能适配高强度工业作业场景。在控制架构上,行业普遍采用手臂、灵巧手、底盘独立控制模式,协同效率有限,并且硬件成本高,而天元兴已实现一体化控制,大幅提升整机协同效率,降低硬件成本,进一步强化产品核心竞争力。
硬氪了解到,TX01已于2025年完成第一代、第二代样机研发迭代,技术成熟度持续提升,2026年TX系列将正式实现在工业场景批量落地,开启规模化发展新阶段。
在旷章辉看来,工业机器人正经历从“基于规则的串行控制”到“端到端控制”的代际切换,行业痛点亟待解决。早期,工业机器人通过示教复现轨迹,虽效率较高但柔性不足,难以适配复杂多变的柔性工业场景;近年来,工业机器人通过2D或3D视觉引导完成操作,柔性有所提升,但项目实施成本居高不下。
基于对行业趋势的深刻判断,在技术路线选择上,天元兴并未沿用串行的“传感器感知-标定-规控”的传统工业机器人技术路径,而是跳过传统技术瓶颈,深耕自研端到端闭环控制架构,从根源上打造差异化技术优势。
“工业具身智能的核心价值,就是解决传统工业机器人解决方案研发和现场实施成本过高的痛点。”旷章辉解释道,传统方案往往需要针对需求定制研发一套结构及算法解决方案。此外,需要工程师进场数周调试,且需要FAE持续驻场,应对频繁的切拉换型算法适配问题,耗时耗力;而天元兴的端到端方案只需适配场景数据,无需复杂现场调试,可复制性大幅提升,能有效帮助客户降低落地成本。
在客户拓展方面,天元兴具备天然优势——团队在商汤科技任职期间积累的10多家头部工业客户,包括中铁电气化局集团京沪高铁维管公司、宁德时代、欣旺达、慈兴集团等,已成为公司稳定的早期订单池。目前,部分客户已于2025年完成项目签约,2026年将逐步进入机器人现场验证和批量推广阶段,为产品规模化落地奠定坚实基础。
具体来看,2026年3月,天元兴将携核心产品TX01进入新能源头部客户现场开展测试,明确目标为当年实现批量出货,加快产品工业化落地进程,推动工业具身智能技术在新能源领域的规模化应用。
作为一家成立仅一年有余的早期硬科技公司,天元兴已呈现出自我造血能力与抗风险能力。这部分收益主要来自面向早期客户交付的具身智能感知模块,为公司研发和运营提供了稳定支撑。
公司始终聚焦长期战略,并未将感知模块作为核心业务,而是将其作为企业“造血工具”与具身智能技术的数据积累入口。旷章辉表示:“软硬一体、具备一体化控制能力的机器人才是我们定义公司的核心方向。感知模块只是具身智能系统的一个组成部分。”
旷章辉坦言,目前公司最急迫的需求是实现具身机器人量产,量产也是实现成本下降的关键路径。“当前单套产品采购成本高、供应链谈判空间有限,而实现量产之后,产品成本预计至少可下降50%,进一步提升产品市场竞争力,推动行业普及。”
除了深耕国内市场,天元兴后续也将布局海外市场拓展,挖掘全球工业具身智能领域的发展机遇。得益于此前与宁德时代合作项目落地德国图林根,与欣旺达合作项目落地泰国基地,天元兴已具备出海基础与核心触点。旷章辉判断,海外工业具身智能领域竞争烈度低于国内,将成为公司实现差异化突围、扩大市场影响力的重要方向之一。
投资方观点:
弘德表示:天元兴起源于商汤工业机器人事业部,积累了大量的工业视觉数据,为模型在工业场景的强泛化性奠定了基础;团队具备从产品POC到批量交付的全流程经验,构建了从数据生产、模型训练到硬件载体的完整技术链条,产品研发体系已经形成了强大的迭代飞轮。弘德投资看好天元兴具身产品在工业柔性自动化场景实现快速商业化落地的潜力,助力公司技术产业化与商业拓展,为工业智能制造产业升级提供关键支撑。
盛世鸿元总经理李帅表示:天元兴作为一家专注于通用工业具身智能平台研发与落地的高科技企业,其构建的“数据-大脑-本体”三位一体技术架构,精准切入了工业场景智能化升级的核心需求。凭借在人工智能、机器人技术与工业场景深度融合的经验积累,公司的TengenData、TengenBrain、TengenBuddy三大核心产品平台已成功在锂电池质检、轨道交通检测等多场景实现落地,并持续向搬运、包装等通用工业场景拓展,在助力下游行业安全升级、质量优化与降本增效方面展现出显著价值。我们看好天元兴在工业具身智能领域的技术领先性与场景拓展能力,随着制造业智能化转型浪潮加速推进,公司的一体化智能解决方案将成为工业企业实现柔性作业、提升生产效率的关键支撑,为实体经济的高质量发展提供重要助力。
海愿资本表示:我们看好天元兴工业具身智能平台的发展,其依托商汤核心技术积淀,自研具身智能“大小脑”核心算法,打造软硬件一体化的具身智能解决方案,精准聚焦锂电、光伏等新能源工业场景,已在柔性搬运、智能装配环节完成头部企业POC验证,有效破解传统工业自动化柔性不足、复用性低的痛点。公司核心技术自主可控、场景落地能力突出、商业化节奏清晰、成长潜力与商业化价值突出,前景值得期待。
从 Vite 到 Vize:Vue 开发体验的下一次飞跃
从 2019 年开始,前端的底层工具链就陆续使用 Rust 重写,这一次轮到 Vue 了。
Vize 横空出世!
一个基于 Rust 编写的、为 Vue.js 量身定制的一体化开发工具;通过原生级的速度,将 Vue 原本碎片化的编译、校验、格式化、类型检查、开发预览合并为一个极速、零配置的工具。
Vize 什么来头?
2026 年 2 月 22 号发布,首发就获得了尤雨溪的关注。
作者 ubugeeei 是 Vue.js 和 Vue.js JP 的成员。
Vize 能做什么:
- 极速编译 .vue 文件
比传统 JS 编译器快很多,大型项目秒开。
- 统一全流程 AST
编译、Lint、格式化、类型检查共用一套解析结果,不重复干活。
- 代码检查 + 格式化
替代 ESLint、Prettier,速度更快、规则更统一。
- 组件库可视化管理
预览、调试、文档、测试一体化,替代 Storybook。
- 对接 AI 助手
通过 MCP 让 AI 直接读取组件信息,写代码更准。
- 深度集成 Vite
作为高性能编译器插件,直接提升整个项目速度。
Vize、Vite、Vite+
兄弟而非对手,Vize 不是要取代 Vite。
两者的区别在于:
- Vite:前端通用构建工具
- Vize:Vue 编译器工具链
它们分工明确:
- Vite:管整个项目怎么跑、怎么构建
- Vize:管 .vue 文件怎么编译得更快
事实上,Vize 的许多功能都是建立在 Oxc 等基础技术之上的。
在 Vite 配置中,通过 @vizejs/vite-plugin-vize 替换 @vitejs/plugin-vue,让 Vite 的编译速度大幅提升。
Vize 和 Oxc
从技术底层看,两者功能确实有重叠,但 Vize 的核心价值在于针对 Vue SFC(单文件组件)的深度集成与语义理解。
oxlint 和 oxfmt 是通用的工具:
- 处理纯
.js文件 - 处理纯
.ts文件 - 支持 React、Vue、Svelte 等
而 Vize:
- 处理 .vue 文件中的
<script> - 处理 .vue 文件中的
<template> - 处理 .vue 文件中的
<style> - 专为模版指令(v-if,v-for)研发的编译器和检查器
Vize 内部使用了 Oxc 的能力来处理 JS 和 TS。
oxlint / oxfmt 目标是:取代 ESLint 和 Prettier。
Vize 目标是:取代 vite-plugin-vue + vue-tsc + eslint-plugin-vue。
你在项目中安装了 Vize,可以不用再单独安装 oxlint 和 oxfmt。
Vize 实际上是把 Oxc 的散装零件(oxlint, oxfmt, resolver)组装成了一台专门跑 Vue 的“超级跑车”,只为 Vue 开发者服务,提供更深度的优化。
从而实现了工具链的‘归一化’,让前端开发者得以从插件地狱中解脱出来。
快速使用
安装
npm install -g vize
配置
import { defineConfig } from 'vite'
import vize from '@vizejs/vite-plugin';
export default defineConfig({
plugins: [
vize()
],
})
支持 Nuxt
Vize 同样支持 Nuxt, Nuxt 在 Vue 生态中的重要性不言而喻,大多数首发的项目都会支持 Nuxt。
// nuxt.config.ts
export default defineNuxtConfig({
modules: ['@vizejs/nuxt'],
vize: {
compiler: true,
musea: {
include: ['**/*.art.vue'],
},
},
});
核心功能
# vue 组件编译
vize build
# 代码校验
vize lint
# 代码格式化
vize fmt
# 类型检查
vize check
# 组件预览
vize musea
# 编辑器集成
vize lsp
架构设计
Vize 采用的是典型的 Rust crate 层架构设计:
这是 Vize 最基础的流水线,负责将原始.vue文件转化为可执行的 JS 代码:
源码输入 → 分词解析 → AST中间表示 → 语义分析 → 多目标编译 → 工具层 → 上层应用
这种一体化的设计让 Vize 可以统一语义引擎驱动所有工具。
一个 Vize 就能代替 compiler-sfc、eslint、prettier、vue-tsc、Storybook
性能怪兽
官方一次性测试,编译 15000 个 SFC 文件(36.9MB):
Vue 文件编译
- vue 官方编译:
10.52s - vize 单线程耗时:
3.82s - vize 多线程耗时:
0.38s
⭐️ 单线程提速 2.8 倍
⭐️ 多线程提速 9.8 倍
⭐️ vize 多线程对原生单线程,高达 27.7 倍的极致提速
代码检查
- eslint:
65.3s - vize:
5.45s
⭐️ 提速 12 倍
代码格式化
- prettier:
82.69s - vize 单线程:
0.036s - vize 多线程:
0.023s
⭐️ 单线程提速 2303 倍
⭐️ 多线程提速 872 倍
类型校验
- vue-tsc:
35.69s - vize:
0.369s
⭐️ 提速 97.7 倍
Vite 构建
- vite 官方:
16.98s - vize:
6.9s
⭐️ 提速 2.5 倍
如此快的速度得益于:
- 没有垃圾回收机制(GC)
- 没有即时编译(JIT)预热
- Rayon 原生多线程
- 高缓存命中率
- 文件级增量编译
这令人震撼的速度不亚于当初 Vite 对 Webpack 的碾压.
Vize 的编译器直接将代码编译为原生代码,生成单文件静态链接可执行程序,相比于 JS 工具链,这是 Rust 带来的质的飞跃。
组件库管理
Musea 是 Viza 置的组件库管理工具,是项目内组件的视化管理、预览、调试与文档工具」。
不管是你自己开发的项目内业务组件,还是专门的公共组件库,都可以用 Musea 来做后续的管理:
- 组件多变体预览、交互式 Props 调试
- 生成组件使用文档、无障碍 / 视觉回归测试
- 组件分类、搜索、管理,方便团队查阅和使用
- AI 助手,辅助生成使用代码。
也就是说,你在 components 目录中开发的组件,可以通过 Musea 进行可视化管理,一站式调试和编写文档,进行团队共享。
AI 能力
npm install @vizejs/musea-mcp-server
Vize 可以集成 MCP,让 AI 对组件的理解与开发者一致:
-
组件发现:快速查找项目内指定类型组件及对应变体并获取使用建议; -
代码生成:按项目真实组件的 props、类型生成准确代码,无属性幻觉; -
API 参考:查询组件真实的 API 定义,而非通用猜测; -
文档辅助:基于组件实际元数据生成精准的组件文档。 -
设计Token:查看、解析颜色、排版等各类设计令牌的列表、分类及原始值。
总结
在 Vue 的生态中,Vite 完成了构建的使命,而 Vize 完成了工具链的升级。
尤雨溪在 Vize 发布时就赞助了其作者,足见他对 Vize 的喜爱。
如果你在用 Vue 开发项目,那 Vize 值得你去关注和了解。
- 🔗 GitHub:github.com/ubugeeei/
- 🔗 Vize 官网:vizejs.dev
👍作品推荐
Haotab 新标签页,一个优雅的新标签页
❤️静待你的体验