Rspack 学习了解

这篇具有很好参考价值的文章主要介绍了Rspack 学习了解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Rspack 学习了解,Rspack,学习

一、简介

  • Rspack GitHub 仓库、Rspack Quick start。

  • Rspack 是由字节 ByteDance Web Infra 团队基于 Rust 语言开发的 Web 高性能构建工具。

  • Rust 是种高效、可靠的通用高级语言。其高效不仅限于开发效率,执行效率也是令人称赞的,属于少有兼顾开发效率和执行效率的语言。

  • Rspack 目前支持 ReactVueSvelteSolidNestJS, Angular 初步支持,还缺失很多能力,其他还包括 StorybookModern.jsModern.js Doc 等。

二、特点

  • 优点

    • 启动速度:基于 Rust 实现,构建速度极快。

    • HMR(热更新):内置增量编译机制,HMR 速度极快,完全胜任大型项目的开发。

    • 兼容 webpack 生态:针对 webpack 的架构和生态进行兼容,无需从头搭建生态。

    • 内置常见构建能力:对 TypeScriptJSXCSSCSS ModulesSass 等提供开箱即用的支持。

    • 默认生产优化:默认内置多种优化策略,如 Tree Shaking代码压缩 等等。

    • Build 性能:取得了 5~10 倍编译性能的提升。

  • 缺点

    • Loader 支持有限, Plugin 目前主要靠内置,高级点的使用都比较麻烦或者支持有限,内置后配置都比较简单。

    • 更适合庞大的项目,这样运行速度、Build 速度都能保持在 webpack5-10 倍,对中小项目提升有限。

    • 只支持 nodejs 14 以上的项目迁移。

三、性能对比

  • 工具对比

    Rspack 学习了解,Rspack,学习

  • 字节内部项目迁移后的收益

    Rspack 学习了解,Rspack,学习

四、架构设计

  • 主要围绕 4 方面,附架构图

    Rspack 学习了解,Rspack,学习

    • 核心架构脱胎于 Wabpack5

      因为 Wabpack 历经了多年的考验,它整体架构稳定性是非常高的。

    • 基于 Native 语言的高并发框架

      Rust 本身是一门 Native 语言,相比 JS 这种动态语言可以做非常高的优化,性能瓶颈更高,虽然 JS 语言在 V8 的一些优化上已经不错了,但是它的短板来自于对多线程的支持,且在实现多线程后所带来的收益远低于 Rust

    • 基于 RustBabel 代替品 SWC

      Webpack 大部分的生态都是基于 LoaderPlugin 扩展的,主要点在 Loader,传统的工具都是用 Babel Loader 去做的,但 Babel Loader 是比较慢的,所以 Rust 使用了 SWC 来代替,SWC 相比 Babel 带来的性能提升做了比较高的贡献,所以在开发 Rspack 时可以避免掉 Babel Loader 的使用。

    • 基于 NAPI-RSRustJS 的高效通信

      核心用 Rust 写的,但是插件扩展是 JS写的,一方面有些开发者还得学习 Rust 才能做插件开发,上手成本比较高,另一方面是 JS 本身有个动态化特性,能直接在用户侧去编写并被加载执行,由于 Rust 是一门 Native 语言,做动态化是远不如 JS 的,即使使用 Rust 开发了一个插件,编译后的产物也是一个 Native CodeNative Code操作系统CPU 等是强相关的,比如在 Windows 上编译出来的插件在 Mac 上是跑不起来的,如果想做这种 Native 插件的动态分发或加载是比较困难的,需要熟悉整套跨平台编程的知识,每一个插件可能需要编译出来很多个平台的产物,然后再分发到不同平台上去,这个门槛比较高且稳定性也不容易控制。

五、迁移原则

  • 一条原则,优先使用内置能力,这样能保证性能最优化,比如不要使用 Babel Loader 相关的能力,常用的 Babel 能基本已经内置,如果一定需要使用,也需要将影响控制在很小范围内,如果大规模使用可能 Rspack 的性能就会下降比较明显。

  • css 相关,webpack 一般是使用 style-loader、css-loader 做处理,但是 Rspack 使用 SWC 实现了 experiments.css,默认开启,所以建议使用内置 css 能力,而不是去使用这些 Loader

  • 资源模块推荐使用 Asset Modules 做处理,webpack5 也使用 Asset Modules 替换了之前的 file-loader、url-loader、raw-loader 等。

  • html 生成也是内置了 Rust 版本的插件,但是功能可能会稍微弱一些,如果在 html 层面有比较高的定制需求,可以使用 @rspack/plugin-html,这是一个 JS 版本的,性能会比 Rust 版本慢一点,但是扩展更高。

QA

  • ViteRspack 哪个更好?

    这个需要看场景,中小场景 Vite 开发体验与生态是更好的,比如有一些 SSR 的支持,Rspack 目前更适合重型应用(例如公司内部 庞大的B端应用),能编译提速 5-10 倍。

  • 现阶段是否建议迁移 Rspack

    这个需要看是否使用到了一些高级功能或者插件,现阶段可能还不支持,需要查看支持情况,讲人话就是没有对 webpack 进行比较深的定制或骚操作的话,应该问题不大,可以进行尝试。文章来源地址https://www.toymoban.com/news/detail-601146.html

到了这里,关于Rspack 学习了解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • fastCGI了解与学习使用

    fastCGI了解与学习使用

    因为服务器的项目使用到了fastCGI,所以来学习。 在说fastCGI之前,我们要先了解下CGI。毕竟fastCGI是对CGI的优化 CGI介绍 通用网关接口(Common Gateway Interface/CGI)描述了客户端和服务器程序之间传输数据的一种标准,可以 让一个客户端,从网页浏览器向 执行在网络服务器上的程

    2024年02月04日
    浏览(9)
  • 网络安全(黑客)了解&学习路线

    网络安全(黑客)了解&学习路线

     谈起黑客,可能各位都会想到:盗号,其实不尽然;黑客是一群喜爱研究技术的群体,在黑客圈中,一般分为三大圈: 娱乐圈 技术圈 职业圈 。   娱乐圈: 主要是初中生和高中生较多,玩网恋,人气,空间,建站收徒玩赚钱,技术高的也是有的,只是很少见。    技术圈

    2024年02月11日
    浏览(19)
  • 借助一个例子简要了解机器学习

    借助一个例子简要了解机器学习

    环境: azureml_py boot_size harness_size 0 39 58 1 38 58 2 37 52 3 39 58 4 38 57 5 35 52 6 37 55 7 36 53 8 35 49 9 40 54 10 40 59 11 36 56 12 38 53 13 39 58 14 42 57 15 42 58 16 36 56 17 36 51 18 35 50 19 41 59 20 42 59 21 38 59 22 37 55 23 35 50 24 40 55 25 36 52 26 35 53 27 39 54 28 41 61 29 37 56 30 35 55 31 41 60 32 39 57 33 41 56 34 42 61 35 42 58 36 3

    2024年01月25日
    浏览(10)
  • Django入门学习-了解基本模块

    Django入门学习-了解基本模块

    目录 MVT设计了解 认识MVT 实际操作 Template: View: 路由配置 Model: 默认的后台管理模块 初始化admin模块 应用中Admin注册 Django的web设计模型是MVT: Model:数据存储层,处理所有数据相关的业务,和数据库进行交互,并提供数据的增删改查; Template:模板层(也叫表现层)具体来处

    2023年04月11日
    浏览(8)
  • C++线程的简单学习及了解

    C++线程的简单学习及了解

    此篇文章只是线程的简单了解。 文章目录 前言 一、线程的优缺点 二、C++线程库 1.thread类的简单介绍 2.线程函数参数 总结 什么是线程? 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列” 一切进程至少都有一个执行线

    2023年04月27日
    浏览(9)
  • 对Git更深入了解与学习

    对Git更深入了解与学习

    官方文档https://git-scm.com/book/zh/v2/Git-分支-分支简介 1.工作区(Working Directory)        工作区就是你在电脑里能看到的目录,比如我的 learngit 文件夹就是一个工作区: 2.版本库(Repository)        工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。        Git的

    2024年01月21日
    浏览(10)
  • 【机器学习】了解 AUC - ROC 曲线

    【机器学习】了解 AUC - ROC 曲线

            在机器学习中,性能测量是一项基本任务。因此,当涉及到分类问题时,我们可以依靠AUC - ROC曲线。当我们需要检查或可视化多类分类问题的性能时,我们使用AUC(曲线 下面积 )ROC( 接收器工作特性 )曲线。它是检查任何分类模型性能的最重要评估指标之一。

    2024年02月16日
    浏览(11)
  • 初步了解ES适合新手逐步学习

    初步了解ES适合新手逐步学习

    1.1 准备数据 1.2 match和term 做查询,返回的结果会给每一个文档做一个相关性算分,用_score来表示,如果一个查询匹配到多条数据,那么_score最高的会排在最前面,表示匹配度最高。这个算分的过程其实是比较消耗性能的,如果我们不关注这个属性的话,可以通过Filter的方式绕

    2024年02月08日
    浏览(11)
  • 【AI】了解人工智能、机器学习、神经网络、深度学习

    【AI】了解人工智能、机器学习、神经网络、深度学习

    一、深度学习、神经网络的原理是什么? 深度学习和神经网络都是基于对人脑神经系统的模拟。下面将分别解释深度学习和神经网络的原理。 深度学习的原理: 深度学习是一种特殊的机器学习,其模型结构更为复杂,通常包括很多隐藏层。它依赖于神经网络进行模型训练和

    2024年02月06日
    浏览(53)
  • 通识强化学习,初步了解强化学习的运行规则和估值方法

    通识强化学习,初步了解强化学习的运行规则和估值方法

    目录 1.强化学习的发展及应用现状 1.1.强化学习的由来 1.2.强化学习的应用 2.强化学习的基本概念 2.1.概要介绍 2.2.强化学习的构成要素 2.3.工作过程 2.4.强化学习的主要特点 2.5.与其他机器学习方法的区别 3.估值方法 3.1.估值的方式 3.2.依据更新方式 目前,大家认为强化学习(

    2024年02月16日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包