 Rspack 基于 Rust 的高性能Web 构建工具「大前端新趋势」专场 何庚坤 2023年05月28日 本期议题:Rspack 基于 Rust 的高性能 Web 构建工具 About me 何庚坤 字节跳动前端工程师 Rspack 团队成员 GitHub @ahabhgk 目录 1. Rspack 是什么? 2. Rspack 解决了什么问题? 3. Rspack 有哪些特性? 4. 如何从 Webpack 迁移到 Rspack? 的生态与未来 Rspack 是什么? Rspack 是一个基于 Rust 的高性能构建引擎, 具备与 Webpack 生 态系统的互操作性,可以从 Webpack 低成本的迁移,并提供更好 的构建性能。 https://www.rspack.dev Rspack 解决了什么问题? ???️ 开发环境性能 巨型项目中 Dev 启动时间 5-10 分钟,HMR 时间 10-20 秒, Rspack 解决了什么问题? ??? 生产环境性能 巨型项目中 Build 时间 10-20 分钟,甚至更久,拖慢 CI/CD 效率 Rspack 解决了什么问题? ??? 灵活丰富的配置 不止覆盖 Web 开发场景,能够应对各种场景 Rspack 解决了什么问题? ??? 强大的生产环境优化 强大可自定义配置的拆包能力等决定了产物的性能 Rspack 解决了什么问题? ??? ♂️0 码力 | 29 页 | 4.51 MB | 1 年前3 Rspack 基于 Rust 的高性能Web 构建工具「大前端新趋势」专场 何庚坤 2023年05月28日 本期议题:Rspack 基于 Rust 的高性能 Web 构建工具 About me 何庚坤 字节跳动前端工程师 Rspack 团队成员 GitHub @ahabhgk 目录 1. Rspack 是什么? 2. Rspack 解决了什么问题? 3. Rspack 有哪些特性? 4. 如何从 Webpack 迁移到 Rspack? 的生态与未来 Rspack 是什么? Rspack 是一个基于 Rust 的高性能构建引擎, 具备与 Webpack 生 态系统的互操作性,可以从 Webpack 低成本的迁移,并提供更好 的构建性能。 https://www.rspack.dev Rspack 解决了什么问题? ???️ 开发环境性能 巨型项目中 Dev 启动时间 5-10 分钟,HMR 时间 10-20 秒, Rspack 解决了什么问题? ??? 生产环境性能 巨型项目中 Build 时间 10-20 分钟,甚至更久,拖慢 CI/CD 效率 Rspack 解决了什么问题? ??? 灵活丰富的配置 不止覆盖 Web 开发场景,能够应对各种场景 Rspack 解决了什么问题? ??? 强大的生产环境优化 强大可自定义配置的拆包能力等决定了产物的性能 Rspack 解决了什么问题? ??? ♂️0 码力 | 29 页 | 4.51 MB | 1 年前3
 《玩转webpack》第五章 进阶篇: webpack 构建速度和体积优化策略基础篇:webpack 与构建发展简史 目 录 CONTENTS 01 基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack 可以分析哪些问题? 依赖的第三方模块文件大小 业务里面的组件代码大小 使用高版本的 webpack 和 Node.js 构建时间降低了 60%-98%! 使用 webpack4:优化原因 V8 带来的优化(for of 替代 forEach、Map 和 Set 替代 Object、includes 替代 indexOf) 默认使用更快的 md4 hash 算法 webpacks AST n 缩小构建目标 比如 babel-loader 不解析 node_modules 目的:尽可能的少构建模块 减少文件搜索范围 优化 resolve.mainFields 配置 优化 resolve.modules 配置(减少模块搜索层级) 优化 resolve.extensions 配置 合理使用 alias 图片压缩 使用:配置 image-webpack-loader 要求:基于0 码力 | 36 页 | 8.13 MB | 1 年前3 《玩转webpack》第五章 进阶篇: webpack 构建速度和体积优化策略基础篇:webpack 与构建发展简史 目 录 CONTENTS 01 基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack 可以分析哪些问题? 依赖的第三方模块文件大小 业务里面的组件代码大小 使用高版本的 webpack 和 Node.js 构建时间降低了 60%-98%! 使用 webpack4:优化原因 V8 带来的优化(for of 替代 forEach、Map 和 Set 替代 Object、includes 替代 indexOf) 默认使用更快的 md4 hash 算法 webpacks AST n 缩小构建目标 比如 babel-loader 不解析 node_modules 目的:尽可能的少构建模块 减少文件搜索范围 优化 resolve.mainFields 配置 优化 resolve.modules 配置(减少模块搜索层级) 优化 resolve.extensions 配置 合理使用 alias 图片压缩 使用:配置 image-webpack-loader 要求:基于0 码力 | 36 页 | 8.13 MB | 1 年前3
 《玩转webpack》第八章 实战篇: React 全家桶 和 webpack 开发商城项巨与构建发展简史 ⽬目 录 CONTENTS 01 基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 05 原理理篇:通过源码掌握 webpack 打包原理理 06 原理理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项⽬目 08 基础篇:webpack http://127.0.0.1:8001/api/v1/order/new 谈谈 Web 商城的性能优化策略略 · 渲染优化 ·个⼈人中⼼心⻚页预渲染 · ⾸首⻚页、列列表⻚页、详情⻚页采⽤用 SSR 或者 Native 渲染 · 弱⽹网优化 · 使⽤用离线包、PWA 等离线缓存技术 · Webview 优化 · 打开 Webview 的同时并⾏行行的加载⻚页⾯面数据 功能开发要点 · 浏览器器端:0 码力 | 25 页 | 5.67 MB | 1 年前3 《玩转webpack》第八章 实战篇: React 全家桶 和 webpack 开发商城项巨与构建发展简史 ⽬目 录 CONTENTS 01 基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 05 原理理篇:通过源码掌握 webpack 打包原理理 06 原理理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项⽬目 08 基础篇:webpack http://127.0.0.1:8001/api/v1/order/new 谈谈 Web 商城的性能优化策略略 · 渲染优化 ·个⼈人中⼼心⻚页预渲染 · ⾸首⻚页、列列表⻚页、详情⻚页采⽤用 SSR 或者 Native 渲染 · 弱⽹网优化 · 使⽤用离线包、PWA 等离线缓存技术 · Webview 优化 · 打开 Webview 的同时并⾏行行的加载⻚页⾯面数据 功能开发要点 · 浏览器器端:0 码力 | 25 页 | 5.67 MB | 1 年前3
 《玩转webpack》第六章 原理篇: 通过源码掌握 webpack 打包原理基础篇:webpack 与构建发展简史 目 录 CONTENTS 01 基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack options: 高级用法(记录设置、缓存设置、监听频率、bail等) ·Resolving options: 解析参数(alias 和 解析的文件后缀设置) ·Optimizing options: 优化参数 ·Stats options: 统计参数 ·options: 通用参数(帮助命令、版本信息等) webpack-cli 执行的结果 最终会根据配置参数实例化 webpack 对象,然后执行构建流程 依赖模块进行build 对模块位置进行解析 将loader加载完成的 module进行编译,生成 AST树 遍历AST,当遇到 require等一些调用表 达式时,收集依赖 所有依赖build完 成,开始优化 输出到dist目录 build-module 开始构建某个模块 WebpackOptionsApply 将所有的配置 options 参数转换成 webpack 内部插件 使用默认插件列表0 码力 | 39 页 | 3.66 MB | 1 年前3 《玩转webpack》第六章 原理篇: 通过源码掌握 webpack 打包原理基础篇:webpack 与构建发展简史 目 录 CONTENTS 01 基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack options: 高级用法(记录设置、缓存设置、监听频率、bail等) ·Resolving options: 解析参数(alias 和 解析的文件后缀设置) ·Optimizing options: 优化参数 ·Stats options: 统计参数 ·options: 通用参数(帮助命令、版本信息等) webpack-cli 执行的结果 最终会根据配置参数实例化 webpack 对象,然后执行构建流程 依赖模块进行build 对模块位置进行解析 将loader加载完成的 module进行编译,生成 AST树 遍历AST,当遇到 require等一些调用表 达式时,收集依赖 所有依赖build完 成,开始优化 输出到dist目录 build-module 开始构建某个模块 WebpackOptionsApply 将所有的配置 options 参数转换成 webpack 内部插件 使用默认插件列表0 码力 | 39 页 | 3.66 MB | 1 年前3
 《玩转webpack》加餐:webpack5专题cache/webpack,最⼤ 500MB,缓存时常两个星期,旧的缓存先淘汰。 webpack 5 webpack 4 构建优化:Tree Shaking 优化-嵌套的 Tree shaking webpack 5 webpack 4 构建优化:Tree Shaking 优化-内部模块 Tree shaking 代码⽣成:⽀持⽣成 ES6 代码 webpack 4 之前只⽣成 ES5 的代码。0 码力 | 40 页 | 12.03 MB | 1 年前3 《玩转webpack》加餐:webpack5专题cache/webpack,最⼤ 500MB,缓存时常两个星期,旧的缓存先淘汰。 webpack 5 webpack 4 构建优化:Tree Shaking 优化-嵌套的 Tree shaking webpack 5 webpack 4 构建优化:Tree Shaking 优化-内部模块 Tree shaking 代码⽣成:⽀持⽣成 ES6 代码 webpack 4 之前只⽣成 ES5 的代码。0 码力 | 40 页 | 12.03 MB | 1 年前3
 《玩转webpack》 第三章 基础篇 Webpack 进阶用法基础篇:webpack 与构建发展简史 ⽬目 录 CONTENTS 01 基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 05 原理理篇:通过源码掌握 webpack 打包原理理 06 原理理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项⽬目 08 基础篇:webpack name: 'commons', chunks: 'all', minChunks: 2 } } } } } }; minuSize: 分离的包体积的⼤大⼩小 tree shaking(摇树优化) 概念:1 个模块可能有多个⽅方法,只要其中的某个⽅方法使⽤用到了了,则整个⽂文件都会被打到 bundle ⾥里里⾯面去,tree shaking 就是只把⽤用到的⽅方法打⼊入 bundle ,没⽤用到的⽅方法会在 为模板 设置占位符,动态插⼊入组件 ⾸首屏数据如何处理理? 服务端获取数据 替换占位符 当前构建时的⽇日志显示 展示⼀一⼤大堆⽇日志,很多并不不需要开发者关注 统计信息 stats 如何优化命令⾏行行的构建⽇日志 module.exports = { entry: { app: './src/app.js', search: './src/search.js' }, output: {0 码力 | 69 页 | 4.33 MB | 1 年前3 《玩转webpack》 第三章 基础篇 Webpack 进阶用法基础篇:webpack 与构建发展简史 ⽬目 录 CONTENTS 01 基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 05 原理理篇:通过源码掌握 webpack 打包原理理 06 原理理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项⽬目 08 基础篇:webpack name: 'commons', chunks: 'all', minChunks: 2 } } } } } }; minuSize: 分离的包体积的⼤大⼩小 tree shaking(摇树优化) 概念:1 个模块可能有多个⽅方法,只要其中的某个⽅方法使⽤用到了了,则整个⽂文件都会被打到 bundle ⾥里里⾯面去,tree shaking 就是只把⽤用到的⽅方法打⼊入 bundle ,没⽤用到的⽅方法会在 为模板 设置占位符,动态插⼊入组件 ⾸首屏数据如何处理理? 服务端获取数据 替换占位符 当前构建时的⽇日志显示 展示⼀一⼤大堆⽇日志,很多并不不需要开发者关注 统计信息 stats 如何优化命令⾏行行的构建⽇日志 module.exports = { entry: { app: './src/app.js', search: './src/search.js' }, output: {0 码力 | 69 页 | 4.33 MB | 1 年前3
 《玩转webpack》 第一章 基础篇: webpack 与构建发展简史webpack 打包优化 详细剖析 webpack 打包原理理 和插件、Loader 的实现 从实际 Web 商城项⽬目出发, 讲解 webpack 实际使⽤用 基础篇:webpack 与构建发展简史 ⽬目 录 CONTENTS 01 基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 050 码力 | 17 页 | 690.93 KB | 1 年前3 《玩转webpack》 第一章 基础篇: webpack 与构建发展简史webpack 打包优化 详细剖析 webpack 打包原理理 和插件、Loader 的实现 从实际 Web 商城项⽬目出发, 讲解 webpack 实际使⽤用 基础篇:webpack 与构建发展简史 ⽬目 录 CONTENTS 01 基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 050 码力 | 17 页 | 690.93 KB | 1 年前3
 《玩转webpack》 第二章 基础篇: webpack 基础用法基础篇:webpack 与构建发展简史 ⽬目 录 CONTENTS 01 基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 05 原理理篇:通过源码掌握 webpack 打包原理理 06 原理理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项⽬目 08 基础篇:webpack txt$/, use: 'raw-loader' } ] } }; test 指定匹配规则 use 指定使⽤用的 loader 名称 核⼼心概念之 Plugins 插件⽤用于 bundle ⽂文件的优化,资源管理理和环境变量量注⼊入 作⽤用于整个构建过程 常⻅见的 Plugins 有哪些? Plugins 的⽤用法 const path = require('path'); module0 码力 | 41 页 | 2.52 MB | 1 年前3 《玩转webpack》 第二章 基础篇: webpack 基础用法基础篇:webpack 与构建发展简史 ⽬目 录 CONTENTS 01 基础篇:webpack 基础⽤用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略略 05 原理理篇:通过源码掌握 webpack 打包原理理 06 原理理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项⽬目 08 基础篇:webpack txt$/, use: 'raw-loader' } ] } }; test 指定匹配规则 use 指定使⽤用的 loader 名称 核⼼心概念之 Plugins 插件⽤用于 bundle ⽂文件的优化,资源管理理和环境变量量注⼊入 作⽤用于整个构建过程 常⻅见的 Plugins 有哪些? Plugins 的⽤用法 const path = require('path'); module0 码力 | 41 页 | 2.52 MB | 1 年前3
 《玩转webpack》 第四章 进阶篇: 编写可维护的 webpack 构建配置基础篇:webpack 与构建发展简史 目 录 CONTENTS 01 基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack0 码力 | 30 页 | 5.38 MB | 1 年前3 《玩转webpack》 第四章 进阶篇: 编写可维护的 webpack 构建配置基础篇:webpack 与构建发展简史 目 录 CONTENTS 01 基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack0 码力 | 30 页 | 5.38 MB | 1 年前3
 《玩转webpack》第七章 原理篇: 编写 Loader 和插件基础篇:webpack 与构建发展简史 目 录 CONTENTS 01 基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack0 码力 | 29 页 | 4.37 MB | 1 年前3 《玩转webpack》第七章 原理篇: 编写 Loader 和插件基础篇:webpack 与构建发展简史 目 录 CONTENTS 01 基础篇:webpack 基础用法 02 进阶篇:编写可维护的 webpack 构建配置 04 进阶篇:webpack 构建速度和体积优化策略 05 原理篇:通过源码掌握 webpack 打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack0 码力 | 29 页 | 4.37 MB | 1 年前3
共 11 条
- 1
- 2













