webpack拓展篇(六十九):vite 的构建原理(完结)

简介: webpack拓展篇(六十九):vite 的构建原理(完结)

说明

玩转 webpack 学习笔记



Vite 构建速度快的原因


预构建使用 ESBuild (冷启动快的原因) :https://github.com/evanw/esbuild

因为 esbuild 里面使用的是 Golang 语言去进行打包,它是静态语言

063aead954c444b9947938737248feb7.png

Vite 打包流程


创建构建服务

文件路径: src/node/server/index.ts

30bccbeaa6df44bbbb02ed8b45934ff9.png

静态文件托管服务

文件路径:src/node/server/index.ts


0bc69c55e2234788b240c894191488d6.png


重写模块路径

文件路径: src/node/server/index.ts


e91708be03364c8799bf7050e3f00478.png

文件路径:src/node/server/serverPluginModuleRewrite.ts

38f1188a2e3141d9ab72b0e603127444.png



对于 bare import,把模块名替换为这个模块的 entry path,并在 path 的开头补上一个 /@modules 的标识符。


   如: import React from "/@modules/@pika/react/source.development.js"

相对路径转绝对路径,方便浏览器请求。


补齐文件扩展名和经常被省略的 index.xxx


   如:import a from '/src/a/index.js'

给非 js 类型( js 类型:如 js(x)/ts(x)/vue)的文件地址加上一个叫 "import" 的 query 参数。

给 hmr 相关的请求地址添加时间戳,避免缓存。


   如: import '/src/App.jsx?t=1599124870589'



静态资源打包策略

浏览器不支持 JS 中直接写 import CSS、图片、JSON 等语法。.


webpack loader 的处理策略:


   CSS:转换成 js 的模块,执行模块会在 DOM 中创建 <style> 标签并且插入CSS内容

   图片:转换成图片路径

   JSON:转化成 js 模块, default export = json


vue 脚本打包策略


遇到 .vue 文件


   获取 Script 内容

   如果有 style 就发送请求获取 style 的部分

   发送请求获取 template 的部分

   进行渲染


6eead29f1d3f48f4ab731acd91d2e8ef.png


CSS 资源打包策略


  • 将 CSS 源码加工成 JS 模块
  • updateStyle 会通过 CSS Style Shee API 后者直接创建 <style> 标签
  • 将 CSS 代码插入到 DOM 中
  • 如果开启了CSS Module,则直接导出成一个对象,否则导出 CSS 代码


08ed6fae03d447abb4631b2015ed090a.png


模板打包策略

@vue/compiler-dom 编译 template,然后返回给浏览器


9da0b4001b5746c39a34853ce84264c1.png











目录
相关文章
|
8天前
|
前端开发 JavaScript 开发者
工程化(webpack+vite)
在现代前端开发中,工程化是提高开发效率和项目质量的关键。UniApp 结合 Webpack 和 Vite,提供强大的工程化支持。Webpack 功能强大,支持复杂项目的构建;Vite 则利用现代浏览器的 ESM 特性,提供快速的开发体验。开发者可根据项目需求选择合适的工具,显著提升开发效率和项目质量。
|
18天前
|
监控 前端开发 JavaScript
Webpack 中 HMR 插件的工作原理
【10月更文挑战第23天】可以进一步深入探讨 HMR 工作原理的具体细节、不同场景下的应用案例,以及与其他相关技术的结合应用等方面的内容。通过全面、系统地了解 HMR 插件的工作原理,能够更好地利用这一功能,为项目的成功开发提供有力保障。同时,要不断关注技术的发展动态,以便及时掌握最新的 HMR 技术和最佳实践。
|
18天前
|
缓存 前端开发 JavaScript
Webpack 动态加载的原理
【10月更文挑战第23天】Webpack 动态加载通过巧妙的机制和策略,实现了模块的按需加载和高效运行,提升了应用程序的性能和用户体验。同时,它也为前端开发提供了更大的灵活性和可扩展性,适应了不断变化的业务需求和技术发展。
|
18天前
|
缓存 监控
webpack 提高构建速度的方式
【10月更文挑战第23天】需要根据项目的具体情况和需求,综合运用这些方法,不断进行优化和改进,以达到最佳的构建速度和效果。同时,随着项目的发展和变化,还需要持续关注和调整构建速度的相关措施,以适应不断变化的需求。
|
18天前
|
存储 缓存 前端开发
利用 Webpack 5 的持久化缓存来提高构建效率
【10月更文挑战第23天】利用 Webpack 5 的持久化缓存是提高构建效率的有效手段。通过合理的配置和管理,我们可以充分发挥缓存的优势,为项目的构建和开发带来更大的便利和效率提升。你可以根据项目的实际情况,结合以上步骤和方法,进一步优化和完善利用持久化缓存的策略,以达到最佳的构建效果。同时,不断探索和实践新的方法和技术,以适应不断变化的前端开发环境和需求。
|
18天前
|
缓存 前端开发 JavaScript
webpack 原理
【10月更文挑战第23天】Webpack 原理是一个复杂但又非常重要的体系。它通过模块解析、依赖管理、加载器和插件的协作,实现了对各种模块的高效打包和处理,为现代前端项目的开发和部署提供了强大的支持。同时,通过代码分割、按需加载、热模块替换等功能,提升了应用程序的性能和用户体验。随着前端技术的不断发展,Webpack 也在不断演进和完善,以适应不断变化的需求和挑战。
|
21天前
|
前端开发 JavaScript 开发者
工程化(webpack+vite)
工程化(webpack+vite)
|
1月前
|
缓存 前端开发 JavaScript
Webpack 打包的基本原理
【10月更文挑战第5天】
|
5月前
|
缓存 JavaScript 前端开发
探讨如何通过一系列优化策略来提升TypeScript与Webpack的构建性能。
【6月更文挑战第11天】本文探讨了优化TypeScript与Webpack构建性能的策略。理解Webpack的解析、构建和生成阶段是关键。优化包括:调整tsconfig.json(如关闭不必要的类型检查)和webpack.config.js选项,启用Webpack缓存,实现增量构建,代码拆分和懒加载。通过这些方法,可以提升构建速度,提高开发效率。
79 0
|
2月前
|
前端开发 JavaScript 开发者
工程化(webpack+vite)
工程化(webpack+vite)