当前位置: 首页 > news >正文

vite基本知识

vite的了解与使用

基本知识

开发时,并不对代码打包,而实直接采用ESM的方式运行项目一

项目部署时,再对项目进行打包

核心原理

其核心原理是利用浏览器现在已经支持ES6import,碰见import就会发送一个HTTP请求去加载文件

使用vite运行项目时,首先会用esbuild进行预构建,将所有模块转换为 ESM,不需要对我们整个项目进行编译打包,Vite 启动一个服务器,在浏览器需要加载某个模块时,它会拦截这些请求,根据请求进行按需编译,(服务器拦截对 *.vue 文件的请求,即时编译它们,然后将它们作为 JavaScript 发回)然后返回给浏览器。

特点

快速的冷启动:采用No Bundleesbuild预构建,速度远快于Webpack,Esbuild 使用 Go 语言编写,JS 本质上是单线程语言,GO 语言天生具有多线程的优势

高效的热更新:基于ESM实现,同时利用HTTP头来加速整个页面的重新加载,增加缓存策略:源码模块使用协商缓存,依赖模块使用强缓存

基于 Rollup 打包:生产环境下使用Rollup进行打包(目前rollup比较成熟,esbuild虽然快,但有些功能还在开发中)

简单上手体验

Vite 要求 Node.js 版本 >= 12.0.0

快速构建一个项目

 npm init vite@latest
# npm 6.x
npm init vite@latest my-vue-app --template vue# npm 7+, 需要额外的双横线:
npm init vite@latest my-vue-app -- --template vue

pnpm来初始化一个项目

pnpm create vite
然后按照提示完成项目的初始化:
输入项目名称
选择框架类型
选择语言类型

下面其实就和上面一样,只是一开始就将项目名称给定好了

pnpm create vite my-vue-app -- --template vue

构建命令

vite:启动开发服务器

vite build:为生产环境构建产物

vite preview:本地预览生产构建产物

  "scripts": {"dev": "vite","build": "vite build","preview": "vite preview"},

插件

和webpack类似, npm i 之后,在config文件中引入并使用

eg:legacy是一个语法转换的插件

import legacy from "@vitejs/plugin-legacy";
export default defineConfig({plugins: [legacy({targets: ["defaults", "IE 11"],}),],
});

环境变量与模式

.env文件

.env                # 所有情况下都会加载
.env.local          # 所有情况下都会加载,但会被 git 忽略
.env.[mode]         # 只在指定模式下加载
.env.[mode].local   # 只在指定模式下加载,但会被 git 忽略

import.meta.env 对象上暴露环境变量

只有以 VITE_ 为前缀的变量才会暴露给经过 vite 处理的代码

在 .env.development定义一个 VITE_APP_TITLE=‘开发环境的标题’,在 .env.test中赋值 VITE_APP_TITLE=‘测试环境的标题’,在 .env.production中赋值 VITE_APP_TITLE=‘生产环境的标题’

VITE_APP_TITLE='开发环境的标题'  

在vue文件中通过import.meta.env 就可以使用了:

const title = import.meta.env.VITE_APP_TITLE
http://www.lryc.cn/news/262232.html

相关文章:

  • 考研真题c语言
  • neuq-acm预备队训练week 9 P8604 [蓝桥杯 2013 国 C] 危险系数
  • 【BIG_FG_CSDN】*VMware17pro*Linux*Redhit6网络管理(个人向——学习笔记)
  • Nginx location+Nginx rewrite(重写)(新版)
  • uniapp实现地图电子围栏功能
  • LeetCode第376场周赛
  • 数据仓库与数据挖掘小结
  • ensp创建配置环境,实现全网互访
  • 智能优化算法应用:基于JAYA算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • ripro后台登录后转圈和图标不显示的原因及解决方法
  • android 源码编译android 12
  • CSS第二天导读
  • scroll-behavior属性使用方法
  • Python Django 连接 PostgreSQL 操作实例
  • 5.实现简化版raft协议完成选举
  • 服装管理系统 简单实现
  • 深度学习项目实战:垃圾分类系统
  • C#浅拷贝和深拷贝数据
  • 【JVM】4.运行时数据区(程序计数器、虚拟机栈)
  • 算法:程序员的数学读书笔记
  • 机器学习算法---时间序列
  • RK3568/RV1126/RV1109/RV1106 ISP调试方案
  • 【TB作品】51单片机,语音出租车计价器
  • jmeter简单压测kafka
  • 【漏洞复现】红帆OA iorepsavexml.aspx文件上传漏洞
  • 04_Web框架之Django一
  • 单机架构到分布式架构的演变
  • 1.新入手的32位单片机资源和资料总览
  • jmeter判断’响应断言‘两个变量对象是否相等
  • 【Linux基础命令使用】