Vite | 青训营笔记

87 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第4天

一、什么是Vite?

vite是下一代前端开发与构建工具。 Vite意在提供开箱即用的配置,同时它的插件API和JavaScript API 带来了高度的可扩展性,并有完整的类型支持。

Vite 提供了一套原生ESM的HMR API。 具有HMR功能的框架可以利用该API提供即时、准确的更新,而无需重新加载页面或清除应用程序状态。Vite 内置了HMR到Vue.js单文件组件(SFC)和React Fast Refresh 中。

二、Vite的使用

(1) 安装

npm i -g pnpm

(2) 输入初始化参数

Project name: vite-project

Select a framework: > react

Select a variant: >-Use arrow-keys.Return to submit.

React

react-ts

三、使用Sass/Scss&CSS Modules

(1) 安装

pnpm i sass -D

(2) 配置

import styles from '. /index.module.scss';

//使用 CSS Modules 模块化方案, 防止 className 命名冲突export

function Header() {
    return <p className = {
        styles.header
    } > This is Header </p>
};

//引入Header

import {
    Header
} from "./components/Header";

function App() {
    return ( <div><Header/></div>);
    }
export default App;

四、Vite 静态资源处理

(1) 将资源引入为 URL

服务时引入一个静态资源会返回解析后的公共路径:

import imgUrl from './img.png'

document.getElementById('hero-img').src = imgUrl

(2) 显式 URL 引入

未被包含在内部列表或 assetsInclude 中的资源,可以使用 ?url 后缀显式导入为一个 URL。

import workletURL from 'extra-scalloped-border/worklet.js?url'

CSS.paintWorklet.addModule(workletURL)

(3) 将资源引入为字符串

资源可以使用 ?raw 后缀声明作为字符串引入。

import shaderString from './shader.glsl?raw'

(4) 导入脚本作为 Worker

脚本可以通过 ?worker 或 ?sharedworker 后缀导入为 web worker。
// 在生产构建中将会分离出 chunk

import Worker from './shader.js?worker'

const worker = new Worker()

// sharedworker

import SharedWorker from './shader.js?sharedworker'

const sharedWorker = new SharedWorker()

// 内联为 base64 字符串

import InlineWorker from './shader.js?worker&inline'

五、Vite的特性

  • 支持HMR。
  • 生产环境使用Rollup进行打包,以便使用tree-shaking、懒加载和 chunk 分割等优化。
  • 支持vue、React、Lit-element、svelte等框架及其对应的TS版本。
  • 内部使用esbuild将TS转译为JS,但是不进行类型检查,可安装tsc、vue-tsc进行检查。
  • index.html为项目的入口文件,会自动解析其中引入的JS和CSS,进行路径转换。支持多个.html,即多页应用。
  • 得益于rollup,有丰富的插件支持。