《玩转webpack》 第三章 基础篇 Webpack 进阶用法"css-loader", "sass-loader" ], }, ] }, }; 多⻚页⾯面应⽤用(MPA)概念 每⼀一次⻚页⾯面跳转的时候,后台服务器器都会给返回⼀一个新的 html ⽂文档, 这种类型的⽹网站也就是多⻚页⽹网站,也叫做多⻚页应⽤用。 多⻚页⾯面打包基本思路路 module.exports = { entry: { index: './src/index.js', search: /src/*/index.js')), 使⽤用 source map 开发环境开启,线上环境关闭 作⽤用:通过 source map 定位到源代码 · 线上排查问题的时候可以将 sourcemap 上传到错误监控系统 · source map科普⽂文:http://www.ruanyifeng.com/blog/2013/01/javascript_source_map.html source map 关键字 使⽤用eval包裹模块代码 cheap: 不不包含列列信息 inline: 将.map作为DataURI嵌⼊入,不不单独⽣生成.map⽂文件 module:包含loader的sourcemap source map 类型 基础库分离 ·思路路:将 react、react-dom 基础 包通过 cdn 引⼊入,不不打⼊入 bundle 中 ·⽅方法:使⽤用 html-webpack- externals-plugin0 码力 | 69 页 | 4.33 MB | 1 年前3
《玩转webpack》第六章 原理篇: 通过源码掌握 webpack 打包原理Tapable 是一个类似于 Node.js 的 EventEmitter 的库, 主要是控制钩子函数的发布 与订阅,控制着 webpack 的插件系统。 Tapable库暴露了很多 Hook(钩子)类,为插件提供挂载的钩子 Tapable hooks 类型 Tapable 的使用 -new Hook 新建钩子 Tapable 暴露出来的都是类方法,new 一个类方法获得我们需要的钩子 class AST 基础知识 抽象语法树(abstract syntax tree 或者缩写为 AST),或者语法树(syntax tree),是 源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。树上的每个节点都 表示源代码中的一种结构。 在线demo: https://esprima.org/demo/parse.html 复习一下 webpack 的模块机制 · 打包出来的是一个 IIFE0 码力 | 39 页 | 3.66 MB | 1 年前3
Gulp 入门指南前端开发工作中有很多“重复工作”,比如压缩CSS/JS文件。而这些工作都是有规律的。找到这 些规律,并编写 gulp 配置代码,让 gulp 自动执行这些“重复工作”。 将规律转换为 gulp 代码 现有目录结构如下: └── js/ └── a.js 规律 1. 找到 js/目录下的所有 .js 文件 2. 压缩这些 js 文件 3. 将压缩后的代码另存在 dist/js/ 目录下 编写 2. 压缩 .pipe(uglify()) // 3. 另存 .pipe(gulp.dest('dist/js')); }); 代码执行结果 代码执行后文件结构 └── js/ │ └── a.js └── dist/ └── js/ └── a.js gulp 入门指南 - 1 - 本文档使用 看云 构建 a.js 压缩前 multipipe@0.1.2, dateformat@1.0.11) chapter2 $ 在你的文件夹中会新增一个 node_modules 文件夹,这里面存放着 npm 安装的模块。 目录结构: ├── gulpfile.js └── node_modules └── gulp-uglify 接着输入 gulp script 执行任务 gulp script [13:34:57]0 码力 | 36 页 | 275.87 KB | 1 年前3
《玩转webpack》 第二章 基础篇: webpack 基础用法__dirname + '/dist' } }; 通过占位符确保⽂文件名称的唯⼀一 核⼼心概念之 Loaders webpack 开箱即用只支持 JS 和 JSON 两种文件类型,通过 Loaders 去支持其它文 件类型并且把它们转化成有效的模块,并且可以添加到依赖图中。 本身是一个函数,接受源文件作为参数,返回转换的结果。 常⻅见的 Loaders 有哪些? Loaders 的⽤用法 配 ignored: /node_modules/, //监听到变化发生后会等300ms再去执行,默认300ms aggregateTimeout: 300, //判断文件是否发生变化是通过不停询问系统指定文件有没有变化实现的,默认每秒问1000次 poll: 1000 } } 热更更新:webpack-dev-server { "name": "hello-webpack", "version":0 码力 | 41 页 | 2.52 MB | 1 年前3
《玩转webpack》 第四章 进阶篇: 编写可维护的 webpack 构建配置a: [ 1, 2 ], b: 10, c: 20, d: 421 } 合并配置:module.exports = merge(baseConfig, devConfig); 功能模块设计 目录结构设计 + |- /test + |- /lib + |- webpack.dev.js + |- webpack.prod.js + |- webpack.ssr.js + ·alpha:是内部测试版,一般不向外部发布,会有很多 Bug。一般只有测试人员使用。 ·beta:也是测试版,这个阶段的版本会一直加入新的功能。在 Alpha 版之后推出 ·rc:Release Candidate) 系统平台上就是发行候选版本。RC 版不会再加入新的功能了,主 要着重于除错。0 码力 | 30 页 | 5.38 MB | 1 年前3
《玩转webpack》第七章 原理篇: 编写 Loader 和插件打包原理 06 原理篇:编写 Loader 和插件 07 实战篇:React 全家桶 和 webpack 开发商城项目 08 基础篇:webpack 进阶用法 03 一个最简单的 loader 代码结构 module.exports = function(source) { return source; }; 定义:loader 只是一个导出为函数的 JavaScript 模块 多 result.coordinates; result.properties; }); 插件的运行环境 插件没有像 loader 那样的独立运行环境 只能在 webpack 里面运行 插件的基本结构 基本结构: 插件使用: plugins: [ new MyPlugin() ] class MyPlugin { apply(compiler) { compiler.hooks.done0 码力 | 29 页 | 4.37 MB | 1 年前3
《玩转webpack》加餐:webpack5专题速度不受整个项目体积影响 bundless 的单文件粒度的缓存更优 打包速度的对⽐ bundle 依赖 sourcemap bundless 调试简单 以 webpack 里面的 sourcemap 类型举例 开发体验的对⽐ ⽬ 录 CONTENTS webpack 5 新特性解析 01 bundle 和 bundless 的差异 02 Vite 的构建原理 03 Vite 构建速度快的原因 development.js" 相对路径转绝对路径,方便浏览器请求。 补齐文件扩展名和经常被省略的 index.xxx 如:import a from ’/src/a/index.js’ 给非 js 类型(js 类型:如 js(x)/ts(x)/vue)的文件地址加上 一个叫 “import” 的 query 参数。 如:import ‘/src/style.css?import’ 给 hmr 相关的请求地址添加时间戳,避免缓存。0 码力 | 40 页 | 12.03 MB | 1 年前3
Rspack 基于 Rust 的高性能Web 构建工具Rspack? 5. Rspack 的架构设计 6. Rspack 的生态与未来 Rspack 是什么? Rspack 是一个基于 Rust 的高性能构建引擎, 具备与 Webpack 生 态系统的互操作性,可以从 Webpack 低成本的迁移,并提供更好 的构建性能。 https://www.rspack.dev Rspack 解决了什么问题? ???️ 开发环境性能 巨型项目中0 码力 | 29 页 | 4.51 MB | 1 年前3
共 8 条
- 1













