初识 Vite | 青训营笔记

124 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 16 天

课程重点:

  • Vite 介绍
  • Vite 实战

知识点介绍:

Vite 是什么

实际上,Vite 和 Webpack 的作用是类似的,都是用于大型项目的构建打包。Vite 有两大部分组成,一部分是 No-bundle 的开发服务,源文件无需打包,启动和热更新速度都极快。另一部分是生产环境,基于 Rollup。

Vite 相对于 Webpack 来说,开发环境启动速度和生产构建速度都有极大幅度的提升。

由于浏览器支持了 ESM 模块的加载,所以 Vite 只需要在浏览器请求模块时,编译相应文件并发给浏览器即可。由于模块的支持,vite在开发环境无需打包项目源代码,且天然按需加载,可以利用文件级的浏览器缓存。

并且在编译上,vite使用了golang写esbuild,编译速度是其他同类产品的几倍。

Vite 安装

Vite 推荐使用 pnpm 作为包管理器

npm i -g pnpm

# 在新版nodejs中,也可直接使用
corepack enable

运行 vite 初始化程序

pnpm create vite

初始化程序会让你选择使用的框架(vue/react等),使用的语言(TypeScript/JavaScript)

安装依赖

pnpm install

启动项目

pnpm dev

使用 scss

在 vite 中使用 scss(sass) 非常方便,只需要安装依赖即可

pnpm add -D sass

引入资源

在 vite 中提供了非常多引入资源的方式

// 引入 css (会直接注入页面)
import styles from './foo.css'

// 引入图片url
import imgUrl from './img.png'

// 加载资源为一个 URL 
import assetAsURL from './asset.js?url'

// 以字符串形式加载资源 
import assetAsString from './shader.glsl?raw'

// 加载为 Web Worker
import Worker from './worker.js?worker'

// 在构建时 Web Worker 内联为 base64 字符串 
import InlineWorker from './worker.js?worker&inline'

对于json文件,vite也有特殊处理

// 导入整个对象 
import json from './example.json' 

// 对一个根字段使用具名导入
import { field } from './example.json'

vite也支持glob导入方法,在一些例如路由/插件/中间件的自动加载中非常好用

const modules = import.meta.glob('./dir/*.js')