《玩转webpack》加餐:webpack5专题相对路径转绝对路径,方便浏览器请求。 补齐文件扩展名和经常被省略的 index.xxx 如:import a from ’/src/a/index.js’ 给非 js 类型(js 类型:如 js(x)/ts(x)/vue)的文件地址加上 一个叫 “import” 的 query 参数。 如:import ‘/src/style.css?import’ 给 hmr 相关的请求地址添加时间戳,避免缓存。 如:import 打包流程 – 静态资源打包策略 获取 Script 内容 如果有 style 就发送请求获取 style 的部分 发送请求获取 template 的部分 进⾏渲染 Vite 打包流程 – vue 脚本打包策略 判断是否是 .css 文件的请求 判断是否为 JS 中 import 的 CSS 进行 Sass/Less 的编译处理 基于 CSS 的源码包装成 JS 的模块 Vite 代码插入到 DOM 中 如果开启了 CSS Module,则直接导出成一个 对象,否则导出 CSS 代码 Vite 打包流程 – CSS 资源打包策略 Vite 打包流程 –模板打包策略 @vue/compiler-dom 编译 template,然后返回给浏览器0 码力 | 40 页 | 12.03 MB | 1 年前3
Rspack 基于 Rust 的高性能Web 构建工具@mdx-js/loader • @svgr/webpack • image-webpack-loader • thread-loader • source-map-loader • node-loader • vue-loader (WIP,预计 0.2 支持) • …… Rspack 有哪些特性? ??? 部分 Plugin 兼容/可替代 • html-webpack-plugin => @rspack/plugin-html tion-showcase/pulls Rspack 架构设计 ??? 核心架构脱胎于 Webpack5 Rspack 的生态与未来 Rspack 的生态与未来 1. 支持更多常用框架:Vue、Qwik 等 2. 完善插件 API,兼容更多 Webpack 生态 3. 支持 Module Federation 模块联邦 4. 支持 Lazy Compilation 懒编译 5. 支持0 码力 | 29 页 | 4.51 MB | 1 年前3
MY STORY WITH WEBPACKRELEASE SEPARATELY. • REDUCED INSTALL SIZE WHEN NOT USING THE CLI: • create-react-app, angular-cli, vue-cli, preact-cli, … FEB 2018: WEBPACK 4 LEGATO • 4.0.0 • WE FOLLOWED THE RELEASE CYCLE TOO STRICTLY0 码力 | 55 页 | 8.90 MB | 1 年前3
《玩转webpack》 第三章 基础篇 Webpack 进阶用法(source code) 会导致什什么问题? 运⾏行行代码时创建的函数作⽤用域变多,内存开销变⼤大 ⼤大量量作⽤用域包裹代码,导致体积增⼤大(模块越多越明显) 模块转换分析 结论: ·被 webpack 转换后的模块会带上⼀一层包裹 ·import 会被转换成 __webpack_require 模块 模块初始化函数 进⼀一步分析 webpack 的模块机制 分析: · 打包出来的是⼀一个 (匿匿名闭包) · modules 是⼀一个数组,每⼀一项是⼀一个模块初始化函数 · 通过 WEBPACK_REQUIRE_METHOD(0) 启动程序 · __webpack_require ⽤用来加载模块,返回 module.exports scope hoisting 原理理 原理理:将所有模块的代码按照引⽤用顺序放在⼀一个函数作⽤用域⾥里里,然后适当的重命名⼀一 些变量量以防⽌止变量量名冲突 些变量量以防⽌止变量量名冲突 对⽐比: 通过 scope hoisting 可以减少函数声明代码和内存开销 scope hoisting 使⽤用 必须是 ES6 语法,CJS 不不⽀支持 webpack mode 为 production 默认开启 module.exports = { entry: { app: './src/app.js', search: './src/search.js' }, output:0 码力 | 69 页 | 4.33 MB | 1 年前3
《玩转webpack》第七章 原理篇: 编写 Loader 和插件03 一个最简单的 loader 代码结构 module.exports = function(source) { return source; }; 定义:loader 只是一个导出为函数的 JavaScript 模块 多 Loader 时的执行顺序 多个 Loader 串行执行 顺序从后到前 module.exports = { entry: './src/index 'style-loader', + 'css-loader', + ' less-loader' + ] + } + ] + } }; 函数组合的两种情况 Unix 中的 pipline Compose(webpack采取的是这种) compose = (f, g) => (...args) => f(g(...args)); 通过一个例子验证 // 基础上下文之外的额外 loader 上下文 readResource: fs.readFile.bind(fs) // 读取资源的函数 }, function(err, result) { // err: Error? // result.result: Buffer | String }) 开发一个 raw-loader0 码力 | 29 页 | 4.37 MB | 1 年前3
《玩转webpack》 第二章 基础篇: webpack 基础用法核⼼心概念之 Loaders webpack 开箱即用只支持 JS 和 JSON 两种文件类型,通过 Loaders 去支持其它文 件类型并且把它们转化成有效的模块,并且可以添加到依赖图中。 本身是一个函数,接受源文件作为参数,返回转换的结果。 常⻅见的 Loaders 有哪些? Loaders 的⽤用法 const path = require('path'); module.exports 核⼼心概念之 Mode Mode ⽤用来指定当前的构建环境是:production、development 还是 none 设置 mode 可以使⽤用 webpack 内置的函数,默认值为 production Mode 的内置函数功能 资源解析:解析 ES6 const path = require('path'); module.exports = { entry: './src/index0 码力 | 41 页 | 2.52 MB | 1 年前3
《玩转webpack》第六章 原理篇: 通过源码掌握 webpack 打包原理//异步串行流水钩子 } = require("tapable"); Tapable 是一个类似于 Node.js 的 EventEmitter 的库, 主要是控制钩子函数的发布 与订阅,控制着 webpack 的插件系统。 Tapable库暴露了很多 Hook(钩子)类,为插件提供挂载的钩子 Tapable hooks 类型 Tapable 的使用 -new Hook https://esprima.org/demo/parse.html 复习一下 webpack 的模块机制 · 打包出来的是一个 IIFE (匿名闭包) · modules 是一个数组,每一项是一个模块初始化函数 · 通过 WEBPACK_REQUIRE_METHOD(0) 启动程序 · __webpack_require 用来加载模块,返回 module.exports 动手实现一个简易的 webpack0 码力 | 39 页 | 3.66 MB | 1 年前3
Gulp 入门指南2%) gulp 入门指南 - 16 - 本文档使用 看云 构建 使用 gulp 编译 LESS Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量、混合(mixin)、函数等功能, 让 CSS 更易维护。 安装 npm install gulp-less 基本用法 你可以 下载所有示例代码 - 或在线查看代码 // 获取 gulp var gulp = require('gulp') search, replace, distExt) watchPath(event, search, replace, distExt) 参数 参数 说明 说明 event gulp.watch 回调函数的 event search 需要被替换的起始字符串 replace 第三个参数是新的的字符串 distExt 扩展名(非必填) 此时编辑 src/js/log.js 文件并保存,命令行会出现消息,表示检测到0 码力 | 36 页 | 275.87 KB | 1 年前3
共 8 条
- 1













