1、浅谈构建工具
- 1.1前端为何要使用构建工具?
随着前端发展,涉及到的资源是越来越多,如何搞笑快速的进行资源管理问题避无可避,正是由于传统的资源管理方式所带来的一系列弊端,推荐了构建工具的诞生。
- 1.2构建工具从四个方面进行描述:
-
模块化:ESM、CommonJs、UMD
模块化方案
-
提供模块加载方案
-
兼容不同模块规范
-
-
资源编译: 高级语法的编译
语法转译
-
高级语法转译:如Sass、TypeScript
-
资源加载:如图片、字体、worker
-
-
产物质量: 代码体积、代码性能
方案: 产物压缩、无用代码删除、语法降级
-
开发效率: 热更新
2、Vite概要介绍
- 2.1Vite是什么?Why Vite?
定位: 新一代前端构架工具
两大组成部分:
- No-bundle开发服务,源文件无需打包
- 生产环境基于Rollup的Bundler
核心特征:
- 高性能,dev启动速度和热更新速度非常快
- 简单易用,开发者体验好
传统构架工具遇到的问题
- 缓慢的启动=>项目编译等待成本高
- 缓慢的热更新=>修改代码后不能实时更新
瓶颈
- bundle带来的性能开销
- JS语言的性能瓶颈
3、Vite上手实战
- 3.1、Vite项目初始化
# 提前安装 pnpm (需管理员权限)
npm i -g pnpm
# 初始化命令
pnpm create vite
# 安装依赖
pnpm install
# 项目启动
npm run dev
- 3.2、使用Sass/Scss & Css Modules
安装Sass
pnpm i sass -D
目录结构
index.module.scss
.header {
color: red;
}
index.tsx
import styles from './index.module.scss';
export function Header(){
return <p className={styles.header}>This is Header</p>
}
- 3.3、生产环境 Tree Shaking
Tree Shaking 在Vite中无需配置,默认开启!
优化原理
-
基于ESM的import/export 语句依赖关系,与运行时状态无关
-
在构建阶段将未使用的代码进行删除
4、Vite整体架构
- 关键技术:依赖预打包
为什么要进行预打包?
- 避免node_moudles过多的文件请求
- 将COmmonJs格式转换为ESM格式
实现原理:
- 服务器启动前扫描代码中用到的依赖
- 用Esbuild对依赖代码进行滚预打包
- 改写import语句,指定依赖为预构建产物路径
//改写前
import React from "react";
//改写后
import React from '/node_nodules/.vite/react.js'
- 关键技术:单文件编译
- 关键技术:代码压缩
- 关键技术:插件机制
5、Vite进阶路线
- 深入双引擎
- Esbuild
- Rollup
-
推荐学习顺序:
- 先了解基本使用,动手尝试各项常用配置
- 然后学习其插件开发
-
为什么需要插件机制?
-
抽离核心逻辑
-
易于拓展
-
-
Vite插件开发
-
参考资料
Vite插件开发文档
复杂度较低的插件:json加载插件
复杂度中等的插件:Esbuild接入插件
复杂度较高的插件:官方React插件
-
代码分割(拆包)
-
JS编译工具(Bable)
-
出现原因:
- JS语法标繁多,浏览器支持程度不一
- 开发者需要用到高级语法 参考资料:babe官方站点、bable插件手册
-
语法安全降级
-
如何避免
- 上层解决方案:@vite.js/plugin-legacy
- 底层解决
- 借助Bable进行语法自动降级
- 提前注入Polyfill实现,如core-js,regenerator-runtime
参考资料
- @bable/preset-env文档
- Vite官方降级插件文档
- 服务器渲染(SSR)
一种常见的渲染模式,用于提升首屏性能和SEO优化
- 深入了解底层标准
6、小结
1. 基本概念: 了解 Vite 的基本概念是使用它的前提。这包括了对Vite的工作原理、开发模式和构建模式的理解。Vite采用了基于ES模块的开发模式,通过原生ES模块的特性实现了快速的冷启动和热模块替换。
2. 安装和配置: 学习如何安装和配置Vite是使用它的第一步。Vite可以通过npm或yarn进行安装,并且提供了一些配置选项,例如自定义端口、代理设置、构建选项等。
3. 开发环境: 了解如何在 Vite 中进行开发是非常重要的。Vite支持热模块替换(HMR),可以实时更新修改的代码,提供了快速的开发反馈。此外,Vite还支持在开发过程中使用TypeScript、CSS预处理器(如Sass、Less)和模块化的CSS。
4. 构建和优化: 学习如何使用Vite进行构建和优化是提高项目性能的关键。Vite使用Rollup作为底层构建工具,可以生成高效的生产构建。此外,Vite还提供了代码分割、按需加载、预渲染等优化功能,以提高应用程序的加载速度和性能。
5. 插件系统: 了解Vite的插件系统可以帮助扩展其功能。Vite的插件系统基于Rollup插件生态系统,可以通过编写自定义插件来实现各种功能,例如添加自定义的构建步骤、处理特定类型的文件、优化代码等。
6. 生态系统和工具链: 了解Vite的生态系统和与其他工具的集成是使用Vite的一部分。Vite与常用的前端框架(如Vue、React、Angular)和工具(如ESLint、Prettier)有良好的集成,可以与它们无缝配合使用。
7. 部署和发布: 学习如何将Vite构建后的应用程序部署到生产环境是使用Vite的最后一步。Vite生成的构建产物可以通过静态文件服务器进行部署,也可以与后端服务器集成。