我有一支技术全面、经验丰富的小型团队,专注高效交付中等规模外包项目,有需要外包项目的可以联系我
当 React 开发者还在第 47 次讨论该用 useEffect
还是 useMemo
时,Juris 直接把根问题掀桌:既然 JavaScript 对象已经存在,为什么框架还要逼你学一套自己的语法?
所有框架都绕不过去的坑
// React:你得学一套 JSX
function MyComponent() {
const [count, setCount] = useState(0);
return <div>{count}</div>; // 这可不是纯 JavaScript
}
// Vue:模板 + 指令组合拳
<template>
<div v-if="show">{{ message }}</div> <!-- 这也不是 JavaScript -->
</template>
// Juris:只有“纯 JavaScript 对象”
{
div: {
text: () => getState('count', 0), // REACTIVE:count 变了就更新
className: getState('theme', 'default') // STATIC:只算一次,后面不再更新
}
}
区别在这:Juris 是目前唯一只用纯对象来描述 UI 的框架。没有 JSX、没有模板、没有 node_modules、没有自定义语法、没有构建步骤、没有转译。只有对象、函数、数组,再配上飞快的渲染。
技术细讲:零构建,性能拉满
1)零构建,渲染飞快
把下面这段丢进任何 HTML,开箱即用:
<script src="https://unpkg.com/juris"></script>
<script>
const app = new Juris({
states: { count: 0 },
layout: {
div: {
text: () => app.getState('count', 0),
onclick: () => app.setState('count', app.getState('count', 0) + 1)
}
}
});
app.render('#app');
</script>
不需要 webpack、babel、Vite,也没有乱七八糟的构建链路。纯 JS 原生跑,细粒度 DOM 更新,实测把虚拟 DOM 框架按在地上摩擦。
2)零虚拟 DOM,细到“属性级”的依赖追踪
Juris 在属性级做依赖跟踪:执行响应式函数时拦截所有状态读取,记录每个 DOM 属性到底依赖哪些 state 路径。之后只在那些路径变动时,精准更新对应属性。
这比 React 那套“组件级重渲 + diff”更聪明:更新目标明确、开销更小。
3)双渲染模式:按需选择性能模型
// 细粒度模式:直接 DOM 更新(兼容 React 式心智)
setRenderMode('fine-grained');
// 批处理模式:像 VDOM 一样做批量调和与复用
setRenderMode('batch');
批处理如果出现冲突,框架会自动回退到细粒度模式——生产可用的容错设计到位了。
4)高级状态管理:中间件流水线
状态系统内建:
中间件组合与变换流水线
环依赖检测防止无限循环
深度相等比较,避免无效通知
层级通知(父/子路径联动)
所有更新都会经过一条可插拔的管线:你可以拦截、修改、拒绝;只有真的变了,才会通知订阅者。
5)组件生命周期:显式且干净
// React:Hook 地狱
function Component() {
useEffect(() => {
return () => cleanup();
}, []);
useEffect(() => {
// Update logic
}, [dep1, dep2]);
}
// Juris:明确、可读
{
render: () => ({ div: { text: 'Hello' } }),
hooks: {
onMount: () => console.log('Mounted'),
onUpdate: (oldProps, newProps) => console.log('Updated'),
onUnmount: () => console.log('Cleanup')
}
}
6)Headless 组件:把业务与视图彻底解耦
// 纯逻辑组件:不碰 DOM
app.registerHeadlessComponent('DataManager', (props, context) => ({
api: {
fetchData: () => fetch('/api/data'),
processData: (data) => data.map(transform),
cacheData: (key, data) => context.setState(`cache.${key}`, data)
},
hooks: {
onRegister: () => console.log('Data manager initialized'),
onUnregister: () => console.log('Cleanup')
}
}));
// 任意 UI 组件都能消费它
{
button: {
text: 'Load Data',
onclick: () => context.fetchData()
}
}
业务写在 headless 组件里,UI 只负责展示——架构层面的组合问题,被优雅解决。
7)DOM 增强:真正的 Progressive Enhancement
// 在不动原始 HTML 的前提下,精准增强
app.enhance('.legacy-form', (context) => ({
'.submit-btn': {
onclick: (element) => (event) => {
event.preventDefault();
const form = element.closest('form');
context.handleSubmit(new FormData(form));
}
},
'input[type="text"]': {
oninput: (element) => () => {
context.setState(`form.${element.name}`, element.value);
}
}
}));
外科手术式增强:保留原标记,精准注入交互与状态。
性能故事
内存管理
元素回收池,缓解 GC 压力
基于 WeakMap 的订阅,自动清理
批量更新 + 可配置批大小
环引用检测,杜绝内存泄漏
更新优化
// 只更新发生变化的属性
text: () => getState('name'), // REACTIVE:name 变才更新
className: getState('buttonStyle'), // STATIC:创建时算一次
style: {
color: () => getState('theme.color'), // REACTIVE:只改 color
padding: getState('spacing.default') // STATIC:永不重算
}
调和策略
基于 key 的元素复用
元素回收池最大化减少新建
列表优先复用、失败再安全重渲
未用元素清理并回收
为什么它适合“真项目”
零构建复杂度:没有 webpack/babel/Vite 配置地狱,script 一贴就能跑
性能狠:直达 DOM 的细粒度更新,没有虚拟 DOM 背包
性能可预期:你知道哪里会更新,debug 不再迷雾重重
渐进增强友好:在遗留系统里也能“无痛加速”
可组合架构:Headless 负责逻辑,UI 专注表现
框架无关:落地在任何服务端栈上(Rails、Django……)
生产就绪:自动回退、泄漏防护、错误边界、性能监测全家桶
康威生命游戏 Demo(不仅是 Demo,更是压力测试)
1000 个响应式单元(每个 cell 都是独立组件)
保持 60+ FPS 的交互
零虚拟 DOM 开销
粒度极细:只重渲改变了的 cell
// 每个 cell 自成一个“反应单元”
app.registerComponent('Cell', (props, context) => {
const { x, y } = props;
const key = `${x},${y}`;
return {
div: {
// 仅当这个 cell 的状态变了才更新
className: () => {
const grid = getState('grid', {});
const isAlive = grid[key] || false;
return `cell ${isAlive ? 'alive' : 'dead'}`;
},
onclick: () => {
const currentGrid = getState('grid', {});
const newGrid = { ...currentGrid };
newGrid[key] = !newGrid[key];
setState('grid', newGrid);
}
}
};
});
结论
当 React 开发者在与 webpack 配置和构建失败扭打时,Juris 开发者只是贴上一个 <script>
,就能把应用跑到飞起——每次更新都有明确意图,每次渲染都被精准优化。
这不是又一个“新框架”,而是一种范式切换:零构建复杂度、纯 JavaScript 对象、极致渲染、性能可预测。
前端AI·探索:涵盖动效、React Hooks、Vue 技巧、LLM 应用、Python 脚本等专栏,案例驱动实战学习,点击二维码了解更多详情。
最后: