博主本次性通过vite构建vue3.0项目,指在体验vite,看看vite到底有什么神奇

vite是什么

Vite,一个基于浏览器原生 ES imports 的开发服务器。利用浏览器去解析 imports,在服务器端按需编译返回,完全跳过了打包这个概念,服务器随起随用。同时不仅有 Vue 文件支持,还搞定了热更新,而且热更新的速度不会随着模块增多而变慢。针对生产环境则可以把同一份代码用 rollup 打包。虽然现在还比较粗糙,但这个方向我觉得是有潜力的,做得好可以彻底解决改一行代码等半天热更新的问题。 —-尤雨溪

特点

  • vite冷服务启动, 一个基于浏览器原生 ES imports 的开发服务器利用浏览器去解析 imports
  • 搞定了热更新,而且热更新的速度不会随着模块增多而变慢
  • 按需编译,不会刷新所有的DOM

类似于cli的2代产品

简单总结

大白话就是,vite秒启动,主要是它并不是马上编译,当开发人员打开浏览器,打入url加载的时候,当前页面所需的资源就去请求,然后vite服务就拦截http请求,再到后台服务处理编译等等,最后再返回处理好的资源。总的来说,vite只做你当前在浏览器所看到的。

焦点关注

  • 生产环境下打包是通过Rollup来完成的
  • vite原生支持TS,JSON,CSS

如何上手

  1. npm init @vitejs/app

测试-vue框架

用vite搭建的vue3.0 项目,我们可以很清晰的看到可以直接通过浏览器自身带有的modules的来进行加载(需要cli更新到最新版)

  1. $ npm init vite-app <project-name>/yarn create vite-app app_name
  2. $ cd <project-name>
  3. $ npm install
  4. $ npm run dev

Vite概述 - 图1

文件结构解析

项目的入口为 index.html,html 文件中直接使用了浏览器原生的 ESM(type="module") 能力。

Vite概述 - 图2

  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. import './index.css'
  4. createApp(App).mount('#app')

所有的 js 文件经过 vite 处理后,其 import 的模块路径都会被修改,在前面加上 /@modules/。当浏览器请求 import 模块的时候,vite 会在 node_modules 中找到对应的文件进行返回。

为什么有竞争力

早期 Webpack 刚出来的时候,是为了解决低版本浏览器不支持 ESM 模块化的问题,将各个分散的 JavaScript 模块合并成一个文件,同时将多个 JavaScrpt 脚本文件合并成一个文件,减少 HTTP 请求的数量,有助于提升页面首次访问的速度。后期 Webpack 乘胜追击,引入了 Loader、Plugin 机制,提供了各种构建相关的能力(babel转义、css合并、代码压缩),取代了同期的 Browserify、Gulp。

如今,HTTP/2 的盛行,HTTP/3 也即将发行,再加上 5G 网络的商用,减少 HTTP 请求数量起到的作用已经微乎其微,而且新版的浏览器基本已经支持了 ESM(<script module>)。

测试-react框架

从文档中得出,vite不仅仅支持vue,react也支持
那么接下来测试下react

  1. mkdir react-vite
  2. react-vite
  3. npm init vite-app --template react

image.png
同样ok

关于别名

原本:

  1. alias:{
  2. '@': resolve(__dirname, "src"),
  3. 'comps': resolve(__dirname, "src/components"),
  4. 'apis': resolve(__dirname, "src/api"),
  5. 'views': resolve(__dirname, "src/views"),
  6. }

image.png
更新调整为
image.png