应用介绍
< #前端框架 #JavaScript #响应式编程 #无虚拟DOM #服务端渲染 #开源软件
Solid 是一个用来构建用户界面的 JavaScript 库,它最大的特点是不使用虚拟 DOM。模板在编译期就被转换成真实的 DOM 节点,状态用 createSignal 声明,值一变,只有真正依赖这个值的那一小块重新执行,而不是重跑整个组件函数再拿新旧两棵树做比对。
适合写交互复杂、状态密集的界面。用带虚拟 DOM 的框架做这类页面,页面越重 diff 越贵,开发者得自己记着哪里该加缓存、依赖数组有没有漏;Solid 把这一整类心智负担省掉了,在 JS Framework Benchmark 上的成绩接近手写原生 JavaScript。
细粒度响应式:更新以信号为单位传播,一个状态变化只触发依赖它的那几行 DOM 操作,组件函数只执行一次,不存在重渲染带来的连锁开销。
编译期模板:JSX 在构建时被编译成直接创建 DOM 节点的代码,运行时不带虚拟 DOM 的 diff 层,包体积和内存占用都更小。
该有的都有:JSX、Context、Portals、Suspense、错误边界、异步与并发渲染这些现代前端能力一个不少,从其它框架迁过来不用降级写法。
服务端渲染:支持同步、异步和流式 SSR,配合渐进式水合,首屏内容可以边生成边发给浏览器。
跨运行时部署:服务端可以跑在 Node LTS 上,也可以跑在 Deno 和 Cloudflare Workers 这类边缘运行时里。
不用手动优化:不需要给回调套缓存、也不用盯着依赖数组,更新范围由响应式系统本身决定,漏写缓存不会变成掉帧。
2.0 打磨中:目前 2.0 正处在密集的候选版阶段,仅八月底到九月初一周内就连续发布了 rc.3 到 rc.6 四个版本。
开源项目:项目源码托管在 GitHub,方便开发者查看实现方式、参与开发,或者根据自己的需求进行二次定制。
Solid 是一个用来构建用户界面的 JavaScript 库,它最大的特点是不使用虚拟 DOM。模板在编译期就被转换成真实的 DOM 节点,状态用 createSignal 声明,值一变,只有真正依赖这个值的那一小块重新执行,而不是重跑整个组件函数再拿新旧两棵树做比对。
适合写交互复杂、状态密集的界面。用带虚拟 DOM 的框架做这类页面,页面越重 diff 越贵,开发者得自己记着哪里该加缓存、依赖数组有没有漏;Solid 把这一整类心智负担省掉了,在 JS Framework Benchmark 上的成绩接近手写原生 JavaScript。
软件功能
细粒度响应式:更新以信号为单位传播,一个状态变化只触发依赖它的那几行 DOM 操作,组件函数只执行一次,不存在重渲染带来的连锁开销。
编译期模板:JSX 在构建时被编译成直接创建 DOM 节点的代码,运行时不带虚拟 DOM 的 diff 层,包体积和内存占用都更小。
该有的都有:JSX、Context、Portals、Suspense、错误边界、异步与并发渲染这些现代前端能力一个不少,从其它框架迁过来不用降级写法。
服务端渲染:支持同步、异步和流式 SSR,配合渐进式水合,首屏内容可以边生成边发给浏览器。
跨运行时部署:服务端可以跑在 Node LTS 上,也可以跑在 Deno 和 Cloudflare Workers 这类边缘运行时里。
不用手动优化:不需要给回调套缓存、也不用盯着依赖数组,更新范围由响应式系统本身决定,漏写缓存不会变成掉帧。
2.0 打磨中:目前 2.0 正处在密集的候选版阶段,仅八月底到九月初一周内就连续发布了 rc.3 到 rc.6 四个版本。
开源项目:项目源码托管在 GitHub,方便开发者查看实现方式、参与开发,或者根据自己的需求进行二次定制。


