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











目录
相关文章
|
20天前
|
缓存 前端开发
Vite 和 Webpack 的区别
Vite 和 Webpack 的区别
63 0
|
1天前
|
缓存 JavaScript Web App开发
webpack】弄清楚webpack 与vite的区别
webpack】弄清楚webpack 与vite的区别
15 6
|
19天前
|
前端开发 测试技术 开发者
深入理解 Webpack 热更新原理:提升开发效率的关键
深入理解 Webpack 热更新原理:提升开发效率的关键
|
19天前
|
前端开发 JavaScript Go
webpack -vite(Rollup )-Gulp (一)
webpack -vite(Rollup )-Gulp (一)
23 0
|
20天前
|
API 开发工具 开发者
webpack热更新原理
Webpack的Hot Module Replacement(HMR)提升开发效率,无需刷新页面即可更新模块。开启HMR需在配置中设`devServer.hot: true`。Webpack构建时插入HMR Runtime,通过WebSocket监听并处理文件变化。当模块改变,Webpack发送更新到浏览器,HMR Runtime找到对应模块进行热替换,保持应用状态。开发者可利用`module.hot` API处理热替换逻辑。
|
20天前
|
缓存 JavaScript 前端开发
【TypeScript技术专栏】TypeScript与Webpack构建优化
【4月更文挑战第30天】本文探讨了优化TypeScript与Webpack构建性能的策略。理解Webpack的解析、构建和生成阶段是关键。优化包括:调整tsconfig.json(关闭不必要的类型检查,适配目标环境)和webpack.config.js(配置entry、output、resolve,使用压缩插件)。启用Webpack缓存和增量构建,利用代码拆分与懒加载,能有效提升构建速度和开发效率。
|
20天前
|
前端开发 JavaScript 开发者
如何在Vite和Webpack之间选择合适的构建工具?
【4月更文挑战第14天】选择Vite或Webpack取决于项目需求、团队熟悉度和场景。Vite适合快速开发,小到中型项目,Vue.js技术栈,有较简单的配置和快速冷启动。而Webpack在大型项目中占优,提供深度优化,丰富的插件生态系统,适合复杂构建需求和React项目。考虑因素还包括学习曲线和社区支持,最佳工具应满足项目当前及未来需求。
16 2
|
20天前
|
前端开发 JavaScript 开发者
vite和webpack区别
【4月更文挑战第14天】Vite与Webpack都是前端构建工具,各有特点。Vite凭借原冷启动和模块热更新,适合现代前端项目,尤其是Vue、React等。它的配置简单,但社区支持较小。相比之下,Webpack拥有强大的插件系统和广泛社区支持,能适应各种项目需求,但配置复杂,启动慢。开发者应根据项目需求选择合适的工具。
21 2
|
20天前
|
JavaScript 开发者
Vite和Webpack的区别是什么
Vite和Webpack的区别是什么
|
20天前
|
前端开发 JavaScript 容器
前端vw自适应解决方案,适用pc端以及移动端,适用webpack以及vite,适用vue以及react
前端vw自适应解决方案,适用pc端以及移动端,适用webpack以及vite,适用vue以及react
99 0