一、关于前端工程的痛点及其对应构建工具的意义————前端需要构建工具的原因
资源作为前端的核心要素,有多种类型,例如逻辑代码JS、TS、JSX,样式代码CSS,静态资源JPEG、PNG等。而前端主要存在模块化、资源编译、产物质量和开发效率四个问题。
模块化问题:项目需要被拆分为不同模块,分别进行维护,尽管已经存在ESM、CommonJS、UMD,但前端至今没有形成统一的规范,构建工具为此提供模块加载方案; 资源编译问题:前端工程中常见的语法无法被浏览器识别,需要进行编译,前端构建工具进行如Sass、TS的高级语法转译以及图片、字体、worker的资源加载; 产物质量问题:在实际中考虑到用户体验,代码需要压缩,未使用模块需要剔除,各类移动端系统需要兼容,为此构建工具通过产物压缩、无用代码删除、语法降级来解决; 开发效率问题:在改动代码后需要构建工具提供商热更新系统以加快效果的呈现。
二、Vite简介————使用Vite的原因
作为新一代高性能、简单易用的前端构建工具,Vite由开发中的No-bundle服务和基于Rollup的bundler构成,区别于传统构建工具最大的特点是源文件无需打包,对rollup进行了深度定制和优化。项目从rollup和webpack迁移到vite后,启动速度和热更新速度都有了惊人的提升。 传统的构建工具都存在项目编译等待成本高、修改代码后不能及时更新的问题,在项目庞大后无法进行及时反馈,开发者体验问题日渐显露,从更高维度分析,bundle打包过程带来的性能开销较高,JS作为单线程语言项目优化手段较少,是两个主要瓶颈。 当前的趋势是浏览器对于原生ESM的支持较为普遍,vite的dev server基于ESM服务可以将浏览器的请求进行承接和编译,将浏览器能够识别的内容进行返回,去除了bundle开销,无需打包代码,而是按需编译,可以利用文件级别的浏览器缓存。 vite深度利用了esbuild,性能极高,可以至少达到传统工具的二十倍。 vite默认集成了非常多的工具,对常见需求进行封装。
通过本节视频的学习,对vite有了大致的了解,同时也对vite的高效便捷性能产生了兴趣,希望通过更深入的学习能够学会如何运用vite。