Vite2 — 初体验

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Vite2 — 初体验

image.png


尤大在知乎上说过,很多人会抛弃 webpack 开始使用 vite ,一起来体验下吧。

一、vite 介绍

Vite 是一种开发构建工具,开发过程中它利用浏览器的 native ES Module 特性按需导入源码,预打包依赖。Vite 需要 Node.js版本 >= 12.0.0

vite 两大特点:

  • 启动快 :vite 启动项目的速度是非常快的,这个速度和项目的大小是没有关系的,因为它不会像 webpack 一样会对整个项目进行打包编译等操作之后在进行启动
  • 更新快

二、创建 vite 项目

npm init @vitejs/app 

可以看到 vite 已经内置支持了一些相关的框架:vue 、react 、svelte,在这笔者就选择 vue-ts 的选项

image.png

大概的项目结构

image.png

三、vite 带来的变化

使用 vite 创建项目之后,其内容是有所变化的,首先 index.html 文件中引入 main.ts 的方式变成了 <script type="module" src="/src/main.ts"></script>,这意味着浏览器在引入这个 main.ts 文件时就会使用 ES 的方式,并且会对 main.ts 中所依赖的文件进行按需加载,就不需要像 webpack 一样需要进行打包了:

image.png

3.1 将资源引入为 URL

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

<img alt="Vue logo" src="./assets/logo.png" /> 解析为  /src/assets/logo.png

甚至我们可以通过使用变量的方式

image.png

下面是通过浏览器显示给我们的结果

image.png

3.2 样式相关的使用

  • 除了最常用的 全局样式局部样式 之外,我们也可以使用 css module 的方式:

image.png

这样模块化的 css 的优点是,它会对我们的 class 名称做一个 hash 处理,这也使得我们的 class 名称在全局是唯一的,不会破坏 css 中 class 名称的深度,它不像 scope css 那样会被解析成对应的属性选择器,改变了 class 的深度。

image.png

也可以将模块化的 css 样式抽离出去,在引入时需要我们通过 import xx from 'xx.css' 的方式为当前的 css module 具名化,就不需要像上图一样使用 $style.xx 的形式进行访问

image.png

  • 使用 sass 、less 等当项目变大时,我们需要使用更多的样式时,我们需要先安装对应的 预处理器,以 sass 为例:在当前项目下安装 npm i sass -D , 然后就可以在项目中进行使用了,因为 vite 主张开箱即用,它的功能都是基于插件来实现的,安装了对应的开发依赖以后,我们不需要像 webpack 那样在安装对应的 loader 然后又得去做 loader 的相关配置。

3.3 设置路径别名

image.png

3.4 配置代理

image.png

3.5 mock 数据

安装依赖: npm i mockjs -S & npm i vite-plugin-mock -D , 并添加配置

image.png

在项目根路径下 新增 mock 文件夹,注意这里默认支持了 .ts 文件类型

image.png

四、vite 插件

vite 插件可以扩展 vite 的能力,比如解析用户自定义的文件输入,在打包代码前转译代码,或者查找第三方模块。

image.png

image.png

vite 插件的形式

即便 vite 已经拥有了自己的 系统插件【橘色部分】,也有了一些 用户插件【绿色部分】,但是针对不同的场景,vite 不能全部都替实现,或者需要我们去改写一些其他已存在的插件,因此需要我们实现对应的插件。

插件钩子

开发时,Vite创建一个插件容器按照顺序调用各个钩子。

plugins: [vue({config:xxx,configResolved:xxx,...}), viteMockServe({})],

  • config:修改Vite配置
  • configResolved:Vite配置确认
  • configureServer:用于配置dev server
  • transformIndexHtml:用于转换宿主页
  • resolveId:创建自定义确认函数,常用语定位第三方依赖
  • load:创建自定义加载函数,可用于返回自定义的内容
  • transform:可用于转换已加载的模块内容
  • handleHotUpdate:自定义HMR更新时调用自定义 vite 插件,例如:

image.png

image.png


目录
相关文章
|
6月前
|
JavaScript 搜索推荐
VueCLI 脚手架I
VueCLI 脚手架I
|
6月前
|
存储 JavaScript 前端开发
VueCLI 脚手架II
VueCLI 脚手架II
|
前端开发 JavaScript API
Vite学习(1)
最近前端团队升级了技术栈,开始使用vue3来开发新的需求。所以vue3的全家桶都要安排上了。今天先来学习一下全新的构建工具vite。
Vite学习(1)
|
3月前
|
JSON 前端开发 JavaScript
使用vite搭建一个React项目!真香!
【8月更文挑战第13天】使用vite搭建一个React项目!真香!
408 3
使用vite搭建一个React项目!真香!
|
5月前
|
存储 JavaScript 前端开发
vue 快速入门+vite前端构建工具
vue 快速入门+vite前端构建工具
85 0
|
JavaScript
为老的vueCli项目添加vite支持
为老的vueCli项目添加vite支持
130 0
为老的vueCli项目添加vite支持
|
资源调度 JavaScript 前端开发
nuxt2-storybook-vite:环境搭建、基础使用 / nuxt项目组件库
nuxt2-storybook-vite:环境搭建、基础使用 / nuxt项目组件库
316 0
|
JavaScript 前端开发
Vite学习(2)
最近前端团队升级了技术栈,开始使用vue3来开发新的需求。所以vue3的全家桶都要安排上了。今天先来学习一下全新的构建工具vite。
Vite学习(2)
|
JSON 前端开发 数据格式
从零搭建 Vite + React 开发环境 #112
从零搭建 Vite + React 开发环境 #112
305 0
|
资源调度 JavaScript
vite 教程
首先先介绍一下vite,vite这个名字起源于法语就是很快的意思。应为他是冷服务不打包 用es6 import 来引入对应 的js。其次就是使用rollup 去打包。开发中有热更新等。
355 0
vite 教程