题叶. 工作前几年专注 React 单页面应用. 对 Rust, WebGPU 感兴趣. Calcit 脚本语言.
2015 年, 不可变数据结构探索.
一个试验的 Virtual DOM 框架.
- 用语言原生的功能表示 JSX
- 热替换友好, 减少状态重置界面抖动
- 拥抱不可变数据
- 副作用隔离更彻底(限制)
整体功能是比较少的.
多语言尝试,
- 2016 年, ClojureScript, 不可变数据
- 2020 年, Calcit, 定制化轻量的环境
- 2022 年, Rust, 代数类型系统
- 2024 年, MoonBit(js backend), 简化生命周期
- JSX 描述. 包括样式, 事件绑定
- 状态处理. action, 组件化方案
- CSS in JS/Calcit/Rust/MoonBit
- Effects(基础功能)
数据流, 声明式, 约束和组合
- 一切皆是表达式, pattern matching
- 带标签的参数(labelled arguments)
- CSS 的类型
- Enum Constructor 简写. 很赞.
States Tree 这个框架提供的结构, 怎样包含外部定义的结构?
Rust: DynEq
MoonBit: JsonValue
参考 Emotion CSS. 依赖一些元编程的能力. 获取变量名称.
挂载到 <style> 当中, 性能优化问题.
单向数据流. 数据变化更新到 DOM.
通过 trait object(接口对象)简化写法.
试验目的更多. 推荐未来用 React 绑定.
dom-ffi 可以共用.
一些问题,
- FFI 当中
Element?
之类的类型怎样封装? - 能否有更灵活的, associated types 写法, 用来约束各个部分?
- 函数 variadic arguments 语法?
- import 中的 use 语法(已经有了)
- immutable data 问题? 通用的 memoize 函数?