Rspack 基于 Rust 的高性能Web 构建工具@ahabhgk 目录 1. Rspack 是什么? 2. Rspack 解决了什么问题? 3. Rspack 有哪些特性? 4. 如何从 Webpack 迁移到 Rspack? 5. Rspack 的架构设计 6. Rspack 的生态与未来 Rspack 是什么? Rspack 是一个基于 Rust 的高性能构建引擎, 具备与 Webpack 生 态系统的互操作性,可以从 Webpack 低成本的迁移,并提供更好 image-webpack-loader • thread-loader • source-map-loader • node-loader • vue-loader (WIP,预计 0.2 支持) • …… Rspack 有哪些特性? ??? 部分 Plugin 兼容/可替代 • html-webpack-plugin => @rspack/plugin-html or builtins …… 如何从 Webpack 迁移到 Rspack? ??? 平滑! 得益于与 Webpack 良好的兼容性! 如何从 Webpack 迁移到 Rspack? ✅ 宽松模式 • 目前并不支持所有 webpack 配置,且有些配置会影响产物,为了保 证产物的正确性,Rspack 默认开启了对配置的严格校验 如何从 Webpack 迁移到 Rspack? ??? Rust is faster0 码力 | 29 页 | 4.51 MB | 1 年前3
《玩转webpack》 第三章 基础篇 Webpack 进阶用法}) + ] + } + } ] } ] } }; 浏览器器的分辨率 CSS 媒体查询实现响应式布局 缺陷:需要写多套适配样式代码 @media screen and (max-width: 980px) { .header { width: 900px; } } @media screen and (max-width: //将所有的style标签合并成一个 } }, "css-loader", "sass-loader" ], }, ] }, }; 多⻚页⾯面应⽤用(MPA)概念 每⼀一次⻚页⾯面跳转的时候,后台服务器器都会给返回⼀一个新的 html ⽂文档, 这种类型的⽹网站也就是多⻚页⽹网站,也叫做多⻚页应⽤用。 多⻚页⾯面打包基本思路路 module.exports = { entry: { index: './src/index search: './src/search.js ‘ } }; 缺点:每次新增或删除⻚页⾯面需要改 webpack 配置 每个⻚页⾯面对应⼀一个 entry,⼀一个 html-webpack-plugin 多⻚页⾯面打包通⽤用⽅方案 动态获取 entry 和设置 html-webpack-plugin 数量量 利利⽤用 glob.sync module.exports = { entry: { index:0 码力 | 69 页 | 4.33 MB | 1 年前3
《玩转webpack》第五章 进阶篇: webpack 构建速度和体积优化策略loader 传递给 AST,减少解析时间 使用字符串方法替代正则表达式 多进程/多实例构建:资源并行解析可选方案 多进程/多实例:使用 HappyPack 解析资源 HappyPack工作流程 原理:每次 webapck 解析一个模块,HappyPack 会将它及它的依赖分配给 worker 线程中 代码示例 多进程/多实例:使用 thread-loader 解析资源 原理:每次 webpack 解析一个模块,thread- loader 会将它及它的依赖分配给 worker 线程中 多进程/多实例:并行压缩 方法一:使用 parallel-uglify-plugin 插件 多进程/多实例:并行压缩 方法二:uglifyjs-webpack-plugin 开启 parallel 参数 多进程/多实例:并行压缩 方法三:terser-webpack-plugin 开启 parallel 参数 里面去,tree shaking 就是只把用到的方法打入 bundle ,没用到的方法会在 uglify 阶段被擦除掉。 使用:webpack 默认支持,在 .babelrc 里设置 modules: false 即可 要求:必须是 ES6 的语法,CJS 的方式不支持 · production mode的情况下默认开启 无用的 CSS 如何删除掉? uncss: HTML 需要通过 jsdom 加0 码力 | 36 页 | 8.13 MB | 1 年前3
《玩转webpack》 第二章 基础篇: webpack 基础用法不不断加⼊入到依赖图中 Entry 的⽤用法 module.exports = { entry: './path/to/my/entry/file.js' }; 单⼊入⼝口:entry 是⼀一个字符串串 多⼊入⼝口:entry 是⼀一个对象 module.exports = { entry: { app: './src/app.js', adminApp: './src/adminApp.js' } }; /path/to/my/entry/file.js' output: { filename: 'bundle.js’, path: __dirname + '/dist' } }; Output 的⽤用法:多⼊入⼝口配置 module.exports = { entry: { app: './src/app.js', search: './src/search.js' }, output: { filename: js', path: __dirname + '/dist' } }; 通过占位符确保⽂文件名称的唯⼀一 核⼼心概念之 Loaders webpack 开箱即用只支持 JS 和 JSON 两种文件类型,通过 Loaders 去支持其它文 件类型并且把它们转化成有效的模块,并且可以添加到依赖图中。 本身是一个函数,接受源文件作为参数,返回转换的结果。 常⻅见的 Loaders 有哪些? Loaders0 码力 | 41 页 | 2.52 MB | 1 年前3
《玩转webpack》第七章 原理篇: 编写 Loader 和插件代码结构 module.exports = function(source) { return source; }; 定义:loader 只是一个导出为函数的 JavaScript 模块 多 Loader 时的执行顺序 多个 Loader 串行执行 顺序从后到前 module.exports = { entry: './src/index.js', output: `__webpack_public_path__ + ${JSON.stringify(url)};`; return `export default ${path}`; }; 实战开发一个自动合成雪碧图的 loader 支持的语法: background: url('a.png?__sprite'); background: url('b.png?__sprite'); background: url('sprite0 码力 | 29 页 | 4.37 MB | 1 年前3
《玩转webpack》第八章 实战篇: React 全家桶 和 webpack 开发商城项巨实战篇:React 全家桶 和 webpack 开发商城项⽬目 08 基础篇:webpack 进阶⽤用法 03 扫码试看/订阅 《玩转 webpack》视频课程 商城技术栈选型 前端 后端 商城架构设计 平台层 ⾸首⻚页 列列表⻚页 购物⻋车⻚页 商品管理理 订单管理理 ⽤用户端 管理理后台 服务层 基础设施 商品服务 订单服务 购物⻋车服务 搜索服务 ⽀支付服务 评论服务 CI/CD0 码力 | 25 页 | 5.67 MB | 1 年前3
《玩转webpack》加餐:webpack5专题2020-10-10 正式发布 官方 changelog:https://webpack.js.org/blog/2020-10-10-webpack-5-release/ webpack 5 新特性概览 最低支持的 Node.js 版本从 6 增加到 10.13.0 最⼩ Node.js 版本:10.13.0 功能清除:清理弃⽤的能⼒ 所有在 webpack 4 里面被废弃的能力都被清除,因此需要确保 import’ 给 hmr 相关的请求地址添加时间戳,避免缓存。 如:import ‘/src/App.jsx?t=1599124870589’ Vite 打包流程 – 重写模块路径 浏览器不支持 JS 中直接写 import CSS、图片、JSON 等语法。 回顾一下 webpack loader 的处理策略: • CSS:转换成 js 的模块,执行模块会在 DOM 中创建0 码力 | 40 页 | 12.03 MB | 1 年前3
《玩转webpack》 第一章 基础篇: webpack 与构建发展简史webpack 开发商城项⽬目 08 基础篇:webpack 进阶⽤用法 03 为什什么需要构建⼯工具? 转换 ES6 语法 转换 JSX 压缩混淆 ES6 module 主流浏览器器⽀支持情况 图⽚片压缩 CSS 前缀补全/预处理理器器 前端构建演变之路路 ant + YUI Tool grunt gulp fis3 webpack parcel rollup 为什什么选择0 码力 | 17 页 | 690.93 KB | 1 年前3
共 8 条
- 1













