SolidJS——前端新秀框架,性能直逼原生JS

2023-10-26

SolidJS 是什么?SolidJS是一个声明式、高效且灵活用于构建用户界面的 JavaScript 库。 Solid 号称拥有 JSX 语法,类似于 React hook 的语法,你可以用现代化的开发方式,获得性能最快的代码。

SolidJS

一、性能比较

原生 JS 是 1, Solid 是 1.05, 比 Svelte 也快,React 跑到了 1.93 。如图:

SolidJS Benchmark

二、SolidJS 特点

  1. 直接使用浏览器的 DOM, 没有 虚拟DOMDOM diff 一整套算法 ,可以发现它编译出来的代码,他的 DOM ,是原生 DOM ,其他的语法是直接调用的,也没有那一整套复杂的虚拟 DOM
  2. 提前编译,按需打包 ,无论是 react 还是 vue ,不管怎么编译,都需要引入框架本身。也就是 runtime 。而且这个体积还比较大。这些框架都采用的是用运行时方案,运行时方案相比于编译时方案,最大的优势是可以「几乎没有任何语法约束」的去完成代码编写。而 Solid 则预编译,将 jsx 部分的代码,转换成原生的语法。
  3. 响应式原理,精准更新对应的值 ,如果了解 React 的原理,就会知道,只要是 props 或者 state 改变,React 组件就会重新渲染,而每一次判断是否会重新改变,值是否不一样,也是一整套算法…… 而 Solid 不一样,他另辟蹊径,每一个组件都是一个独立的线程,每个组件里的 createMemocreateEffect 里面去收集对应的依赖, 在 set 改变值后,都会重新执行这些方法。看起来就像是实时更新了一样。

三、简单使用

SolidReact Hook 代码风格、语法极其相似。减轻了开发者学习新框架的负担,这点还是不错的。eg:

import { render } from "solid-js/web";
import { createSignal, createEffect, createMemo, mapArray } from "solid-js";

function Counter() {
  const [count, setCount] = createSignal(0);
  const increment = () => setCount(count() + 1);

  createEffect((prev) => {
    const sum = a() + b();
    if (sum !== prev) console.log(sum);
    return sum;
  }, 0);

  return (
    <>
      <button type="button" onClick={increment}>
        {count()}
      </button>
    </>
  );
}

render(() => <Counter />, document.getElementById("app"));

在线体验:Playground

四、SolidJs 总结

  • 直接使用浏览器的 DOM, 没有虚拟DOMDOM diff 一整套算法
  • 响应式原理,精准更新对应的值
  • 提前编译,更小的包体积,尺寸小

官网地址:Solid


欢迎访问:天问博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SolidJS——前端新秀框架,性能直逼原生JS 的相关文章

随机推荐

  • 全光组网是什么?有什么优点优势

    去年底回山西老家了 在当地的某个运营商公司找了一份工作 最近接触到了全光组网Fttr全屋宽带覆盖方案 就研究了一下 任何方案都是适用一种类型的人群 这个Fttr应该是华为给运营商提供的技术方案 整个方案因为有移动的维护做售后 所以比自己找安
  • eclipse启动了tomcat正常,可页面还是404

    eclipse启动了tomcat正常 可页面还是404 这两天看到Eclipse 3 7 代号Indigo 正式版发布了 于是心想也试试看最新版有什么变动 于是就开始准备尝试下 终于在今天下载好也解压完 一切很正常 随便写了个web工程 在
  • 学习笔记(01):go快速入门-iota用法

    立即学习 https edu csdn net course play 26897 344142 utm source blogtoedu
  • Kubernetes:(七)k8s优化大法(江湖失传已久的武林秘籍)

    目录 一 内核参数优化 1 1增大内核选项配置 etc sysctl conf 1 2其他的内核参数 二 Etcd性能优化 2 1磁盘 2 2etcd进程设置优先级 2 3增大etcd的存储限制 2 4提高etcd对于对等网络流量优先级 2
  • C++57个入门知识点_番外2_C++中指针函数、函数指针和返回值为函数指针的函数

    文章目录 1 引言 2 指针函数 3 函数指针 4 返回值为函数指针的函数 5 从底层理解返回值为函数指针的函数 5 1 指针函数的定义 5 2 用函数指针作为函数的返回值 5 3 总结 1 引言 函数指针 指针函数是C中重要而容易混淆的概
  • 【深度学习】一分钟速学

    非极大抑制 NMS的英文是Non maximum suppression的缩写 简单的说 就是模型给出了多个重叠在一起的候选框 我们只需要保留一个就可以了 其他的重叠的候选框就删掉了 效果可见下图 交并比 IoU的英文全称Interp ov
  • 远程控制医疗行业应用解析:如何满足医院合规需求?

    远程控制医疗行业应用解析 如何满足医院合规需求 作为一个起源于IT行业的技术 以远程桌面为基础的远程控制技术目前在医疗领域也已经有了比较广阔的应用前景 尤其是在医疗数字化系统 设备的远程运维场景 已经有了一些成功案例 可以说是一个成熟的技术
  • 超详细

    早在去年的十二月份 也就是2020年12月 CentOS 官方发文宣称 CentOS项目的未来是 CentOS Stream 明年我们会将重点从CentOS Linux 转移到CentOS Stream 它紧随当前 RHEL 版本之前 Ce
  • 查找器(Finger)--网络大典

    查找器 Finger 属于用户信息协议 提供了一个与远程用户信息程序接口 RUIP 的界面 Finger 是一种基于传输控制协议 TCP 使用 TCP 端口 79 交换用户信息的协议 在 Finger 端口本机对远程机建立一个 TCP 连接
  • 使用IDEA2021上传代码到Gitee

    1 创建gitee项目仓库 2 复制项目地址 也可以用下面的命令行操作 3 创建本地项目 创建git本地仓库 4 选择目录初始化git 4 1 选择你要上传的项目 4 2 变红说明已经到本地仓库 5 选中项目名先将项目add到缓冲区 再co
  • 【JS逆向】之某条sign算法解析(一)

    声明 本文只作学习研究 禁止用于非法用途 否则后果自负 如有侵权 请告知删除 谢谢 前言 其实这算法网上的解析挺多 但是我感觉大多数不愿意讲的太详细 但是我刚开始玩逆向的时候 我也研究得似懂非懂的 后来还是花了很多时间去研究和调试吧 其实逆
  • 重写了Servlet的init方法后一定要记得调用父类的init方法

    Override public void init ServletConfig config throws ServletException 重写了Servlet的init方法后一定要记得调用父类的init方法 否则在service doG
  • 我开游戏要用什么服务器比较好

    随着互联网的高速发展 游戏行业也随之火爆 那么该怎么选择服务器来保障自身的游戏业务正常运转呢 市场上的服务器大致分为云服务器和物理服务器 云服务器是由大型功能强大的物理设备中分割出来的 是一种简单高效 安全可靠 处理能力可弹性伸缩的计算服务
  • 使用 FPGA 评估板学习 VHDL

    特点 使用 Arrow 经济实惠且适合面包板的 FPGA 开发板 BeMicro MAX 10 创建光传感器 温度传感器 运动传感器和汽车显示器 学习 FPGA 和电子学背后的理论 包括理解正在发生的事情所需的数学和逻辑 了解什么是 FPG
  • 写一个0-10000偶数和

    以下是一个计算0到10000的所有偶数的和的程序 sum 0 for i in range 0 10001 2 sum i print 0 10000的偶数和为 sum 答案为 250050
  • C++ 用libcurl库进行http通讯网络编程

    目录索引 一 LibCurl基本编程框架 二 一些基本的函数 三 curl easy setopt函数部分选项介绍 四 curl easy perform 函数说明 error 状态码 五 libcurl使用的HTTP消息头六 获取http
  • 基于Flask的模型部署

    基于Flask的模型部署 一 背景 Flask 一个使用Python编写的轻量级Web应用程序框架 首先需要明确模型部署的两种方式 在线和离线 在线 就是将模型部署到类似于服务器上 调用需要通过网络传输数据 再将结果返回 离线 就是将模型直
  • 前天 和分公司负责人聊天 他觉得进度慢 员工还疲惫 还没效益 我说 需要组件式开发 他觉得有道理 我不管别人怎么办了 我打算在osg osgearth基础上开发个平台 或许三五年 或许十年二十年 或许半途而废 谁知道呢
  • 大数据应用实践1:基于开源架构的股票行情分析与预测

    股票市场行情分析与预测一直是数据分析领域里面的重头戏 确切地说IT行业的每一次重大发展的幕后推动者以及新产品 特别是高端产品 的最先尝试者都包含金融行业 特别是证券交易市场 它符合大数据的四大特征 交易量大 频率高 数据种类多 价值高 在本
  • SolidJS——前端新秀框架,性能直逼原生JS

    SolidJS 是什么 SolidJS是一个声明式 高效且灵活用于构建用户界面的 JavaScript 库 Solid 号称拥有 JSX 语法 类似于 React hook 的语法 你可以用现代化的开发方式 获得性能最快的代码 一 性能比较