Vite
前言
vite 的笔记
Vite介绍
构建工具
市面上主流的构建工具有哪些:
- webpack
- vite
- parcel
- esbuild
- rollup
- grunt
- gulp
什么是构建工具
浏览器他只认识html、css、js文件,当项目出现其他文件需要手动编译,而构建工具会自动编译。
vite相较于webpack的优势
构建速度快
webpack支持多种模块化, 开始必须要统一模块化代码, 意味着需要将所有的依赖全部读一遍
vite的上手难度更低, webpack的配置是非常多的, loader, plugin。
vite是基于es modules的,webpack更多的关注兼容性, 而vite关注浏览器端的开发体验。
webpack 不能改的原因
1 | // webpack支持多种模块,这一段代码最终会到浏览器里去运行 |
vite 简介
模块引入
1
2
3
4import _ from "lodash"; // 直接引入文件,而不使用相对路径或绝对路径
// 浏览器不支持这种引入(如果实现会导致,包里import其他的,会无穷无尽)
// 构建工具支持(不加后缀):找寻依赖的过程是自当前目录依次向上查找的过程,
// 直到搜寻到根目录或者搜寻到对应依赖为止依赖预构建
首先vite会找到对应的依赖, 然后调用esbuild(对js语法进行处理的一个库), 将其他规范的代码转换成esmodule规范, 然后放到当前目录下的node_modules/.vite/deps, 同时对esmodule规范的各个模块进行统一集成
解决的3个问题:
- 不同的第三方包会有不同的导出格式(这个是vite没法约束人家的事情)
- 对路径的处理上可以直接使用.vite/deps, 方便路径重写
- 叫做网络多包传输的性能问题(也是原生esmodule规范不敢支持node_modules的原因之一), 有了依赖预构建以后无论他有多少的额外export 和import, vite都会尽可能的将他们进行集成最后只生成一个或者几个模块
vite脚手架和vite区别
yarn create vite如vue cli
vite对应 webpack
vite 项目体验
1 | yarn init -y // 初始化一个项目,生成package.json文件 |
vite 环境变量
1 | import {defineConfig, loadEnv} from "vite"; |
vite原理
1 | mkdir vite-dev-server // 创建 vite 项目文件夹 |
css module
1 | 1. module.css (module是一种约定, 表示需要开启css模块化) |
css 其他配置
1 | // vite配置 preprocessorOptions(配置预处理器) |
postcss
1 | // 使用postcss |
vite加载静态资源
1 | import sylasPicUrl from "sylas.png"; // 图片引入 |
直接使用svg
1 | // vite 可以直接使用svg |
vite 插件
1 | // 插件的定义 |
插件原理
1 | // 如:手写Vite-aliases其实就是抢在vite执行配置文件之前去改写配置文件 |
vite-plugin-html 插件
1 | // 作用:改变 HTML 的 title ,控制整个 html 文件中内容 |
vite-plugin-mock插件
1 | // 在 vite 中使用 mock |
vite-plugin-mock插件实现原理(手写)
1 | const fs = require("fs"); |
vite 与 TypeScript
1 | // Vite 默认支持 TS |
性能优化optimize
1 | // 分包策略 |
Vite 配置
1 | import { defineConfig } from "vite"; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 moxieBlog!
