Skip to content

Instantly share code, notes, and snippets.

@tiye
Last active November 1, 2024 14:42
Show Gist options
  • Save tiye/7f0792ff4f6cbce4017d6873b8e5a34e to your computer and use it in GitHub Desktop.
Save tiye/7f0792ff4f6cbce4017d6873b8e5a34e to your computer and use it in GitHub Desktop.
Respo MoonBit intro

MoonBit Respo

一些介绍和迁移感受


关于我

题叶. 工作前几年专注 React 单页面应用. 对 Rust, WebGPU 感兴趣. Calcit 脚本语言.

2015 年, 不可变数据结构探索.


Respo

一个试验的 Virtual DOM 框架.

  • 用语言原生的功能表示 JSX
  • 热替换友好, 减少状态重置界面抖动
  • 拥抱不可变数据
  • 副作用隔离更彻底(限制)

整体功能是比较少的.


Respo 多语言

多语言尝试,


Respo 组成

  • JSX 描述. 包括样式, 事件绑定
  • 状态处理. action, 组件化方案
  • CSS in JS/Calcit/Rust/MoonBit
  • Effects(基础功能)

数据流, 声明式, 约束和组合

dev demo


JSX in MoonBit

  • 一切皆是表达式, pattern matching
  • 带标签的参数(labelled arguments)
  • CSS 的类型
  • Enum Constructor 简写. 很赞.

状态树问题

States Tree 这个框架提供的结构, 怎样包含外部定义的结构?

States tree

Rust: DynEq MoonBit: JsonValue


CSS in MoonBit

参考 Emotion CSS. 依赖一些元编程的能力. 获取变量名称.

挂载到 <style> 当中, 性能优化问题.

(inspector)

Effects(DOM 操作)

单向数据流. 数据变化更新到 DOM.

通过 trait object(接口对象)简化写法.

试用

试验目的更多. 推荐未来用 React 绑定.

dom-ffi 可以共用.

一些问题,

  • FFI 当中 Element? 之类的类型怎样封装?
  • 能否有更灵活的, associated types 写法, 用来约束各个部分?
  • 函数 variadic arguments 语法?
  • import 中的 use 语法(已经有了)
  • immutable data 问题? 通用的 memoize 函数?

补充和问题?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment