《玩转webpack》 第二章 基础篇: webpack 基础用法
__dirname + '/dist' } }; 通过占位符确保⽂文件名称的唯⼀一 核⼼心概念之 Loaders webpack 开箱即用只支持 JS 和 JSON 两种文件类型,通过 Loaders 去支持其它文 件类型并且把它们转化成有效的模块,并且可以添加到依赖图中。 本身是一个函数,接受源文件作为参数,返回转换的结果。 常⻅见的 Loaders 有哪些? Loaders 的⽤用法 + "watch": "webpack --watch" }, "keywords": [], "author": "", "license": "ISC" } 唯⼀一缺陷:每次需要⼿手动刷新浏览器器 ⽂文件监听的原理理分析 轮询判断⽂文件的最后编辑时间是否变化 某个⽂文件发⽣生了了变化,并不不会⽴立刻告诉监听者,⽽而是先缓存起来,等 aggregateTimeout module.export ”dev": "webpack-dev-server --open" }, "keywords": [], "author": "", "license": "ISC" } WDS 不不刷新浏览器器 WDS 不不输出⽂文件,⽽而是放在内存中 使⽤用 HotModuleReplacementPlugin插件 热更更新:使⽤用 webpack-dev-middleware const express0 码力 | 41 页 | 2.52 MB | 1 年前3《玩转webpack》第六章 原理篇: 通过源码掌握 webpack 打包原理
//返回与本地环境相关的一些信息 ]; webpack-cli 提供的不需要编译的命令 命令行工具包 yargs 介绍 提供命令和分组参数 动态生成 help 帮助信息 webpack-cli 使用 args 分析 参数分组 (config/config-args.js),将命令划分为9类: Node.js 的 EventEmitter 的库, 主要是控制钩子函数的发布 与订阅,控制着 webpack 的插件系统。 Tapable库暴露了很多 Hook(钩子)类,为插件提供挂载的钩子 Tapable hooks 类型 Tapable 的使用 -new Hook 新建钩子 Tapable 暴露出来的都是类方法,new 一个类方法获得我们需要的钩子 class 接受数组参数 options ,非必传。类方法会根据传参,接受同样数量的参数。 const hook1 = new SyncHook(["arg1", "arg2", "arg3"]); Tapable 的使用-钩子的绑定与执行 Tabpack 提供了同步&异步绑定钩子的方法,并且他们都有绑定事件和执行事件对 应的方法。 Tapable 的使用-hook 基本用法示例 const hook1 = new SyncHook(["arg1", "arg2"0 码力 | 39 页 | 3.66 MB | 1 年前3Gulp 入门指南
+ C ) 后面的章节中如果代码中存在 gulp.watch 并在命令行运行了 gulp 则需要使用 Ctrl + C 退出任务。 npm 模块管理器 如果你了解 npm 则跳过此章节 若你不了解npm 请阅读 npm模块管理器 安装 gulp npm 是 node 的包管理工具,可以利用它安装 gulp 所需的包。(在安装 node 时已经自动安装了 npm) 在命令行输入 pink; } .import a{ color: red; } gulp 入门指南 - 18 - 本文档使用 看云 构建 使用 gulp 编译 Sass Sass 是一种 CSS 的开发工具,提供了许多便利的写法,大大节省了开发者的时间,使得 CSS 的开发, 变得简单和可维护。 本章使用 ruby-sass 编译 css,若你没有安装 ruby 和 sass 请移步 使用ruby.taobao安装 gulp-autoprefixer 并将之前所有章节的内容组合起来编写一个前端项目所需的 gulp 代码。 你可以在 nimojs/gulp-demo 查看完整代码。 若你不了解npm 请务必阅读 npm模块管理器 package.json 如果你熟悉 npm 则可以利用 package.json 保存所有 npm install --save-dev gulp-xxx 模块依赖和 模块版本。 在命令行输入0 码力 | 36 页 | 275.87 KB | 1 年前3《玩转webpack》加餐:webpack5专题
和 bundless 的差异 02 Vite 的构建原理 03 Vite 发布 2.0 版本 更早实践 bundless 的⼯具:Snowpack 真的可以不⽤打包吗? 浏览器对 ESM 的⽀持情况 各浏览器在 HTTP/1.1 协议下的最大并行请求数限制 HTTP/1.1 的请求数限制 HTTP/2 越来越多的应⽤在主流⽹站 bundle bundless a.js b.js 速度不受整个项目体积影响 bundless 的单文件粒度的缓存更优 打包速度的对⽐ bundle 依赖 sourcemap bundless 调试简单 以 webpack 里面的 sourcemap 类型举例 开发体验的对⽐ ⽬ 录 CONTENTS webpack 5 新特性解析 01 bundle 和 bundless 的差异 02 Vite 的构建原理 03 Vite 构建速度快的原因 静态⽂件托管服务 文件路径:src/node/server/index.ts 处理裸导⼊(bare import)的模块路径,eg: import react from 'react'; 浏览器(只有相对路径和绝对路径)无法识别,因 此需要重写模块路径 Vite 打包流程 – 重写模块路径 文件路径:src/node/server/serverPluginModuleRewrite.ts0 码力 | 40 页 | 12.03 MB | 1 年前3《玩转webpack》 第三章 基础篇 Webpack 进阶用法
1%", "iOS 7"] + }) + ] + } + } ] } ] } }; 浏览器器的分辨率 CSS 媒体查询实现响应式布局 缺陷:需要写多套适配样式代码 @media screen and (max-width: 980px) { .header { width: 900px; //将所有的style标签合并成一个 } }, "css-loader", "sass-loader" ], }, ] }, }; 多⻚页⾯面应⽤用(MPA)概念 每⼀一次⻚页⾯面跳转的时候,后台服务器器都会给返回⼀一个新的 html ⽂文档, 这种类型的⽹网站也就是多⻚页⽹网站,也叫做多⻚页应⽤用。 多⻚页⾯面打包基本思路路 module.exports = { entry: { index: './src/index 使⽤用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 构建速度和体积优化策略
API Imagemin的优点分析 可以引入更多第三方优化插件,例如pngquant 有很多定制选项 可以处理多种图片格式 Imagemin的压缩原理 pngquant: 是一款PNG压缩器,通过将图像转换为具有alpha通道(通常比24/32位PNG 文件小60-80%)的更高效的8位PNG格式,可显著减小文件大小。 pngcrush:其主要目的是通过尝试不同的压缩级别和PNG过滤方法来降低PNG CSS 如何删除掉? uncss: HTML 需要通过 jsdom 加载,所有的样式通过PostCSS解析,通过 document.querySelector 来识别在 html 文件里面不存在的选择器 PurifyCSS: 遍历代码,识别已经用到的 CSS class 在 webpack 中如何使用 PurifyCSS? 使用 purgecss-webpack-plugin 和 mini-css-extract-plugin babel-polyfill 打包后体积:88.49k,占比 29.6% Promise 的浏览器支持情况 构建体积优化:动态 Polyfill Polyfill Service原理 识别 User Agent,下发不同的 Polyfill 构建体积优化:如何使用动态 Polyfill service polyfill.io 官方提供的服务 基于官方自建 polyfill 服务 //huayang.qq.0 码力 | 36 页 | 8.13 MB | 1 年前3《玩转webpack》 第一章 基础篇: webpack 与构建发展简史
开发商城项⽬目 08 基础篇:webpack 进阶⽤用法 03 为什什么需要构建⼯工具? 转换 ES6 语法 转换 JSX 压缩混淆 ES6 module 主流浏览器器⽀支持情况 图⽚片压缩 CSS 前缀补全/预处理理器器 前端构建演变之路路 ant + YUI Tool grunt gulp fis3 webpack parcel rollup 为什什么选择 webpack0 码力 | 17 页 | 690.93 KB | 1 年前3Rspack 基于 Rust 的高性能Web 构建工具
Rspack 的生态与未来 Rspack 是什么? Rspack 是一个基于 Rust 的高性能构建引擎, 具备与 Webpack 生 态系统的互操作性,可以从 Webpack 低成本的迁移,并提供更好 的构建性能。 https://www.rspack.dev Rspack 解决了什么问题? ???️ 开发环境性能 巨型项目中 Dev 启动时间 5-10 分钟,HMR 时间 10-200 码力 | 29 页 | 4.51 MB | 1 年前3《玩转webpack》第八章 实战篇: React 全家桶 和 webpack 开发商城项巨
Native 渲染 · 弱⽹网优化 · 使⽤用离线包、PWA 等离线缓存技术 · Webview 优化 · 打开 Webview 的同时并⾏行行的加载⻚页⾯面数据 功能开发要点 · 浏览器器端: · 服务端: · MVC 开发⽅方式,数据库基于 Sequelize · Rest API ⻛风格 ·采⽤用 JWT 进⾏行行鉴权 ·组件化,组件颗粒度尽可能⼩小 ·直接复⽤用 b0 码力 | 25 页 | 5.67 MB | 1 年前3
共 9 条
- 1