 《玩转webpack》加餐:webpack5专题代码。 两种设置⽅式:5 =< ecmaVersion <= 11 或 2009 =< ecmaVersion <= 2020 开创性的特性:模块联邦 发明者:Zack Jackson 基本解释:使 ⼀个JavaScript 应⽤在运⾏过程中可以动态加载另⼀个应⽤的代码,并⽀持共享依赖(CDN)。不再需要 本地安装 npm 包。 • Remote:被依赖⽅,被 Host 消费的 webpack 和 bundless 的差异 02 Vite 的构建原理 03 Vite 发布 2.0 版本 更早实践 bundless 的⼯具:Snowpack 真的可以不⽤打包吗? 浏览器对 ESM 的⽀持情况 各浏览器在 HTTP/1.1 协议下的最大并行请求数限制 HTTP/1.1 的请求数限制 HTTP/2 越来越多的应⽤在主流⽹站 bundle bundless a.js b.js 静态⽂件托管服务 文件路径: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》加餐:webpack5专题代码。 两种设置⽅式:5 =< ecmaVersion <= 11 或 2009 =< ecmaVersion <= 2020 开创性的特性:模块联邦 发明者:Zack Jackson 基本解释:使 ⼀个JavaScript 应⽤在运⾏过程中可以动态加载另⼀个应⽤的代码,并⽀持共享依赖(CDN)。不再需要 本地安装 npm 包。 • Remote:被依赖⽅,被 Host 消费的 webpack 和 bundless 的差异 02 Vite 的构建原理 03 Vite 发布 2.0 版本 更早实践 bundless 的⼯具:Snowpack 真的可以不⽤打包吗? 浏览器对 ESM 的⽀持情况 各浏览器在 HTTP/1.1 协议下的最大并行请求数限制 HTTP/1.1 的请求数限制 HTTP/2 越来越多的应⽤在主流⽹站 bundle bundless a.js b.js 静态⽂件托管服务 文件路径:src/node/server/index.ts 处理裸导⼊(bare import)的模块路径,eg: import react from 'react'; 浏览器(只有相对路径和绝对路径)无法识别,因 此需要重写模块路径 Vite 打包流程 – 重写模块路径 文件路径:src/node/server/serverPluginModuleRewrite.ts0 码力 | 40 页 | 12.03 MB | 1 年前3
 Gulp 入门指南+ C ) 后面的章节中如果代码中存在 gulp.watch 并在命令行运行了 gulp 则需要使用 Ctrl + C 退出任务。 npm 模块管理器 如果你了解 npm 则跳过此章节 若你不了解npm 请阅读 npm模块管理器 安装 gulp npm 是 node 的包管理工具,可以利用它安装 gulp 所需的包。(在安装 node 时已经自动安装了 npm) 在命令行输入 目录下的所有 js 文件,压缩它们,将压缩后的文件存放在 dist/js/ 目录下。 gulp 代码 你可以 下载所有示例代码 或 在线查看代码 建议 建议:你可以只阅读下面的代码与注释或同时阅读代码解释 gulp 的所有配置代码都写在 gulpfile.js 文件。 一、新建一个 一、新建一个 gulpfile.js gulpfile.js 文件 文件 chapter2 └── gulpfile 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 Gulp 入门指南+ C ) 后面的章节中如果代码中存在 gulp.watch 并在命令行运行了 gulp 则需要使用 Ctrl + C 退出任务。 npm 模块管理器 如果你了解 npm 则跳过此章节 若你不了解npm 请阅读 npm模块管理器 安装 gulp npm 是 node 的包管理工具,可以利用它安装 gulp 所需的包。(在安装 node 时已经自动安装了 npm) 在命令行输入 目录下的所有 js 文件,压缩它们,将压缩后的文件存放在 dist/js/ 目录下。 gulp 代码 你可以 下载所有示例代码 或 在线查看代码 建议 建议:你可以只阅读下面的代码与注释或同时阅读代码解释 gulp 的所有配置代码都写在 gulpfile.js 文件。 一、新建一个 一、新建一个 gulpfile.js gulpfile.js 文件 文件 chapter2 └── gulpfile 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》 第三章 基础篇 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: 渲染: HTML + CSS + JS + Data -> 渲染后的 HTML 服务端: 所有模板等资源都存储在服务端 内⽹网机器器拉取数据更更快 ⼀一个 HTML 返回所有数据 浏览器器和服务器器交互流程 ⽤用户层现 客户端渲染 vs 服务端渲染 ����� ����� �� ����(HTML, ���) 1��� ���� HTML&������ 1�����HTML&��0 码力 | 69 页 | 4.33 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: 渲染: HTML + CSS + JS + Data -> 渲染后的 HTML 服务端: 所有模板等资源都存储在服务端 内⽹网机器器拉取数据更更快 ⼀一个 HTML 返回所有数据 浏览器器和服务器器交互流程 ⽤用户层现 客户端渲染 vs 服务端渲染 ����� ����� �� ����(HTML, ���) 1��� ���� HTML&������ 1�����HTML&��0 码力 | 69 页 | 4.33 MB | 1 年前3
 《玩转webpack》 第二章 基础篇: webpack 基础用法+ "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 express WDM 将 webpack 输出的⽂文件传输给服务器器 适⽤用于灵活的定制场景 热更更新的原理理分析 Webpack Compile: 将 JS 编译成 Bundle HMR Server: 将热更更新的⽂文件输出给 HMR Rumtime Bundle server: 提供⽂文件在浏览器器的访问 HMR Rumtime: 会被注⼊入到浏览器器, 更更新⽂文件的变化 bundle.js:0 码力 | 41 页 | 2.52 MB | 1 年前3 《玩转webpack》 第二章 基础篇: webpack 基础用法+ "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 express WDM 将 webpack 输出的⽂文件传输给服务器器 适⽤用于灵活的定制场景 热更更新的原理理分析 Webpack Compile: 将 JS 编译成 Bundle HMR Server: 将热更更新的⽂文件输出给 HMR Rumtime Bundle server: 提供⽂文件在浏览器器的访问 HMR Rumtime: 会被注⼊入到浏览器器, 更更新⽂文件的变化 bundle.js:0 码力 | 41 页 | 2.52 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 com/FullHuman/purgecss-webpack-plugin 构建体积优化:动态 Polyfill babel-polyfill 打包后体积:88.49k,占比 29.6% Promise 的浏览器支持情况 构建体积优化:动态 Polyfill Polyfill Service原理 识别 User Agent,下发不同的 Polyfill 构建体积优化:如何使用动态 Polyfill service0 码力 | 36 页 | 8.13 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 com/FullHuman/purgecss-webpack-plugin 构建体积优化:动态 Polyfill babel-polyfill 打包后体积:88.49k,占比 29.6% Promise 的浏览器支持情况 构建体积优化:动态 Polyfill Polyfill Service原理 识别 User Agent,下发不同的 Polyfill 构建体积优化:如何使用动态 Polyfill service0 码力 | 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 年前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 年前3
 《玩转webpack》第八章 实战篇: React 全家桶 和 webpack 开发商城项巨Native 渲染 · 弱⽹网优化 · 使⽤用离线包、PWA 等离线缓存技术 · Webview 优化 · 打开 Webview 的同时并⾏行行的加载⻚页⾯面数据 功能开发要点 · 浏览器器端: · 服务端: · MVC 开发⽅方式,数据库基于 Sequelize · Rest API ⻛风格 ·采⽤用 JWT 进⾏行行鉴权 ·组件化,组件颗粒度尽可能⼩小 ·直接复⽤用 b0 码力 | 25 页 | 5.67 MB | 1 年前3 《玩转webpack》第八章 实战篇: React 全家桶 和 webpack 开发商城项巨Native 渲染 · 弱⽹网优化 · 使⽤用离线包、PWA 等离线缓存技术 · Webview 优化 · 打开 Webview 的同时并⾏行行的加载⻚页⾯面数据 功能开发要点 · 浏览器器端: · 服务端: · MVC 开发⽅方式,数据库基于 Sequelize · Rest API ⻛风格 ·采⽤用 JWT 进⾏行行鉴权 ·组件化,组件颗粒度尽可能⼩小 ·直接复⽤用 b0 码力 | 25 页 | 5.67 MB | 1 年前3
 《玩转webpack》第六章 原理篇: 通过源码掌握 webpack 打包原理用来加载模块,返回 module.exports 动手实现一个简易的 webpack 可以将 ES6 语法转换成 ES5 的语法 可以分析模块之间的依赖关系 生成的 JS 文件可以在浏览器中运行 ·通过 babylon 生成AST ·通过 babel-core 将AST重新生成源码 · 通过 babel-traverse 的 ImportDeclaration 方法获取依赖属性0 码力 | 39 页 | 3.66 MB | 1 年前3 《玩转webpack》第六章 原理篇: 通过源码掌握 webpack 打包原理用来加载模块,返回 module.exports 动手实现一个简易的 webpack 可以将 ES6 语法转换成 ES5 的语法 可以分析模块之间的依赖关系 生成的 JS 文件可以在浏览器中运行 ·通过 babylon 生成AST ·通过 babel-core 将AST重新生成源码 · 通过 babel-traverse 的 ImportDeclaration 方法获取依赖属性0 码力 | 39 页 | 3.66 MB | 1 年前3
共 8 条
- 1













