- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Vite
下一代web开发工具
个人介绍
•李奎-前端工程师
•Github@underfin
Vite是什么?
•源文件以ESM(ECMAScriptModules)加载,无需打包的开发服务器
•基于Rollup的生产构建
为什么需要Vite?
快,更流畅的开发体验
•随着项目变大,项目的模块越来越多
•打包工具的启动时间变长,HMR时间变长,显著降低了开发效率以及体验
零配置开发Web应用
有多快?
•15万行的React项目从Webpack迁移
用户反馈
•链接
BundlerDevServer是如何工作的?
•扫描项目入口,分析模块依赖
•将整个项目打包之后,启动静态服务等待访问
Bundle-BasedDevServer性能瓶颈
项目启动
•需要等待所有模块分析构建完成,包括分片的模块
HMR(模块热更新)
•模块更新会触发重新打包
ESM(ECMAScriptModules)
•ES6引入的模块化能力,现已经被主流浏览器支持
•当import模块时,浏览器就会加载被导入的模块
ViteDevServer如何改进?
项目启动
•直接启动Server,利用浏览器ESM特性加载模块,并且按需编译
HMR(模块热更新)
•模块更新不会触发重新打包
ViteDevServer模块兼容问题
TS/JSX/CSS等非ESM模块兼容
•将非ESM模块转换成ESM
BroswerESM不能加载Node模块
•重写Node模块的引入路径
ViteDevServer性能问题
模块转换性能问题
•性能高效的工具,如esbuild
•浏览器缓存+模块转换缓存
Node模块文件较多,影响页面加载性能
•项目启动前对Node模块打包成单个文件(依赖预优化)
Vite依赖预优化
工具
•esbuild
识别依赖
•用户配置
•依赖扫描
ViteESMHMR(模块热更新)
•HMRAPI借鉴于WebpackHMRAPI
•通过分析依赖,构建模块依赖图
•当模块发生变更时,查找需要更新的边界,然后通知更新
为什么需要生产构建?
•更好的加载性能
•代码体积优化(Tree-shaking(摇树优化)/minify)
•模块合并分割
为什么选用Rollup进行生产构建?
•基于ESM(Tree-shaking)
•成熟的社区生态
•灵活的插件API设计
•体积更小、运行速度更快的构建产物
Rollup劣势
•Web框架支持度较低
•配置Web应用较为复杂
内置插件
•TS/JSX
•PostCSS/CSSModules/CSSPre-processors
•Assets/JSON
•WebWorker
•ModuleResolver/ModuleAlias/ModuleGlobImport
框架支持
•Vue3(@vitejs/plugin-vue)
•React(@vitejs/plugin-react-refresh)
•Svelte/Preact…
插件API
•继承了Rollup插件API
•兼容社区已有的Rollup插件
•进行了一些拓展(SSR、HMR支持等)
插件兼容开发服务器
•受WMR启发
•对文件请求使用PluginContainer模拟打包时插件行为
SSR(服务端渲染)
•无需打包的开发服务器
•Node加载ESM,支持HMR(模块热更新)+插件
Node如何加载ESM(ECMAScriptModules)?
•转换ESM,提供API加载依赖
•对于Comm
您可能关注的文档
- 永安在线生鲜电商拉新场景业务安全测评报告19页.pdf
- 杜澎-新华三混合云BaaS平台架构GOTC深圳会场38页.pdf
- 樊冰新-XuperChain技术实现与应用实践-4.0GOTC深圳会场34页.pdf
- 冯若航-老树发新芽开箱即用的开源PG发行版PigstyGOTC深圳会场94页.pdf
- 高洪涛-云原生的可观测性与ApacheSkyWalking_GOTC深圳会场31页.pdf
- 郭寒军-我的Linux内核开发和应用的十年-v1GOTC深圳会场11页.pdf
- 韩鹏-融合的本质区块链在技术融合中的体现GOTC深圳会场15页.pdf
- 何民雄-开源分布式数据库人才培养GOTC深圳会场18页.pdf
- 何守芬-EasyFaaS从一个函数计算单机引擎说起GOTC深圳会场12页.pdf
- 何涛-Vineyard开源分布式内存数据管理引擎GOTC深圳会场23页.pdf
最近下载
- 统编版高中历史选择性必修1第六单元 基层治理与社会保障 综合检测试卷(含答案解析).docx VIP
- 公务员管理有关业务流程图.pdf VIP
- GB50045-95高层民用建筑设计防火规范97年版.pdf VIP
- 《建筑结构平法识图》课程标准.doc VIP
- 《税法》课程思政说课.pdf VIP
- 2025款比亚迪秦PLUS DM-i智驾版_用户手册驾驶指南车主车辆说明书电子版.pdf VIP
- 易飞ERP操作手册.pdf VIP
- 统编版高中历史选择性必修1第五单元 货币与赋税制度 综合检测试卷(含答案解析).docx VIP
- 网络安全等级保护(等保2.0)3级建设内容设计方案 .pdf VIP
- 不动产登记代理人《不动产权利理论与方法》题库(含答案).docx VIP
文档评论(0)