vite基础使用及相关配置

news2025/7/13 11:22:42

在这里插入图片描述

前言

这篇文章主要是记录前段时间公司里以vite构建的一个小项目(前端界面不多,主要功能及相关配置是在后端),挺简单的几个小页面。
说到vite,之前虽然都有学习了解及demo尝试,但因为业务等其他各方面因素也一直没有一个正式的,借这次机会特别记录下。

Vite介绍

不说废话,去官网看看

配置

环境变量

  • 根目录下创建env文件夹(也可以不创建env文件夹,直接在根目录下创建对应的环境变量文件)

  • 分别创建自己需要的环境文件及对应的配置
    在这里插入图片描述

// 类似于这种方式进行配置
NODE_ENV="develop"
VITE_APP_BASEAPI="https://www.dev.com"
  • vite.config.ts文件中进行配置
// 用于加载 .env 文件的目录。可以是一个绝对路径,也可以是相对于项目根的路径。
envDir: 'env',
  • 重启项目
  • 可以在项目中通过 import.meta.env打印当前的环境等变量相关信息
console.log('import.meta.env::', import.meta.env)
  • 参考官方文档及对应vite envDir 配置信息

配置host及port

  • 在vite.config.ts文件下server中进行配置,请参照配置代理
  • 在package.json中的scripts中进行配置
  "scripts": {
    "start": "vite --open --host=localhost --port=4000 --mode develop",
  },

配置代理

// 配置反向代理
server: {
	host: 'localhost',  // 启动后浏览器窗口输入地址就可以进行访问
	port: 4500, // 端口号
	open: true, //是否自动打开浏览器
	cors: true, //为开发服务器配置 CORS , 默认启用并允许任何源
	https: false, //是否支持http2 如果配置成true 会打开https://localhost:3001/xxx;
	strictPort: true, //是否是严格的端口号,如果true,端口号被占用的情况下,vite会退出
	hmr: true, // 开启热更新
	proxy: {
		'/api': {
			// 配置接口调用目标地址
			target: 'https://www.xxxx.com/xxxx',
			// 当进行代理时,Host 的源默认会保留(即Host是浏览器发过来的host),如果将changeOrigin设置为true,则host会变成target的值。
			changeOrigin: true,
			// 前缀 /api 是否被替换为特定目标,不过大多数后端给到的接口都是以/api打头,这个没有完全固定的答案,根据自己的业务需求进行调整
			rewrite: path => path.replace(/^\/api/, ''),
		}
	}
},

配置别名

resolve: {

	// 配置别名
	alias: {
		'@': resolve(__dirname, 'src'),
		"@c": resolve(__dirname, "src/components"),
	},
	
	// 导入时想要省略的扩展名列表
	extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json'],
},

vite.config.js中引入path报错

在这里插入图片描述

解决方法:

npm install @types/node --save-dev

# 或者

yarn add @types/node

配置第三方插件

如果项目要使用第三方插件,需要在 external 里面进行配置:

配置Less

yarn add less

配置预览

//预览设置  npm run build 打包之后,会生成dist文件 然后运行npm run preview;vite会创建一个服务器来运行打包之后的文件
preview: {
	host: 'localhost',
	port: 4200,//端口号
	open: true,//是否自动打开浏览器
	cors: true, // 配置 CORS
	proxy: { // 配置自定义代理规则
		'/api': {
			target: 'http://jsonplaceholder.typicode.com',
			changeOrigin: true,
			rewrite: (path) => path.replace(/^\/api/, '')
		}
	},
},

配置打包

// 打包配置 npm run build
build: {
	// 最终构建的浏览器兼容目标,类型:string | string[]
	target: '',
	//指定输出路径
	outDir: "dist",
	//生成静态资源的存放路径
	assetsDir: "assets",
	//小于此阈值的导入或引用资源将内联为 base64 编码,以避免额外的 http 请求。设置为 0 可以完全禁用此项
	assetsInlineLimit: 4096,
	//启用/禁用 CSS 代码拆分,如果指定了 build.lib,build.cssCodeSplit 会默认为 false
	cssCodeSplit: true,
	/*
	构建后是否生成 source map 文件, boolean | 'inline' | 'hidden'
	默认:false
	true: 创建一个独立的 source map 文件
	inline: source map 将作为一个 data URI 附加在输出文件中
	hidden: 的工作原理与 'true' 相似,只是 bundle 文件中相应的注释将不被保留
	*/
	sourcemap: false,
	//自定义底层的 Rollup 打包配置
	rollupOptions: {
		// 可以配置多个,表示多入口
		input: {
			index: resolve(__dirname, "index.html")
		},
		output: {
			chunkFileNames: 'static/js/[name]-[hash].js',
			entryFileNames: "static/js/[name]-[hash].js",
			assetFileNames: "static/[ext]/name-[hash].[ext]"
		}
	},
	//默认情况下,若 outDir 在 root 目录下,则 Vite 会在构建时清空该目录。
	emptyOutDir: true,
	//chunk 大小警告的限制
	chunkSizeWarningLimit: 500
}

使用感受

  • 项目启动时间:vite比webpack快(此处指小项目,大项目还没机会尝试)
  • 浏览器白屏等待时间:vite比webpack长
  • 热更新:vite比webpack快
  • vite不需要过多额外配置,因为已经集成,webpack需要自己去配置
  • 打包:vite比webpack快,打包后的体积小一丢丢(因项目本身就不大,相差也不是很大)
  • 打包后可以运行命令即可查看打包后的项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/406724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp开发APP从开发到上架全过程(一)

前端时间受朋友委托帮他开发了一款APP,综合考虑了下,没有上原生,使用了uniapp这一套技术栈来进行开发 uniapp是dcloud推出的一套跨端前端解决方案,可以通过一套代码生成小程序、安卓、IOS、H5等代码,对于中小项目来说…

vue通知提醒消息

目录 前言 一、Notification 二、Notification引用 1.全局引用 2.单独引用 三、参数说明 四、简单案例 五、项目实战 1、定义全局Notification。 2、Websocket实时接收通知。 3、消息通知 前言 最近有个项目需求就是在客户端的右上角要实时展示提醒消息,下…

vue3使用tinymce

1、安装相关依赖 npm install tinymce -S npm install tinymce/tinymce-vue -S2、下载中文包 地址 https://www.tiny.cloud/get-tiny/language-packages/ 3. 引入皮肤和汉化包 在项目public文件夹下新建tinymce文件夹, 将下载的汉化包解压到此文件夹 然后在node…

js延迟加载的六种方式

1. defer 属性 HTML 4.01 为<script>标签定义了defer属性。标签定义了defer属性元素中设置defer属性&#xff0c;等于告诉浏览器立即下载&#xff0c;但延迟执行标签定义了defer属性。 用途&#xff1a;表明脚本在执行时不会影响页面的构造。也就是说&#xff0c;脚本会…

论文阅读笔记《Nctr: Neighborhood Consensus Transformer for Feature Matching》

核心思想 本文提出一种融合邻域一致性的Transfomer结构来实现特征点的匹配&#xff08;NCTR&#xff09;。整个的实现流程和思想与SuperGlue相似&#xff0c;改进点在于考虑到了邻域一致性。邻域一致性在许多的传统图像匹配和图匹配任务中都有应用&#xff0c;他基于一个很重要…

【VUE前进之路】使用数据代理,计算属性与监视属性的妙用

1.数据代理 1.1什么是数据代理 通过一个对象代理对另一个对象中属性的操作&#xff08;读/写&#xff09; 1.Vue中的数据代理&#xff1a;通过vm对象来代理data对象中属性的操作&#xff08;读/写&#xff09; 2.Vue中数据代理的好处:更加方便的操作data中的数据 3.基本原理:…

ESLint 配置入门

大家好&#xff0c;我是前端西瓜哥&#xff0c;今天带大家了解 ESLint 的配置项。 ESLint 是一款检查 JavaScript 程序是否符合特定的规则的工具。比如字符串用单引号还是双引号&#xff0c;tab 缩进用 2 个空格还是 4 个空格还是其他&#xff0c;这些都可以用 ESLint 来规定。…

微信小程序---分包操作

有时候我们的小程序太大&#xff0c;首次打开小程序的时候回比较慢&#xff0c;这个时候我们可以试试分包操作。分包可以让用户在操作小程序的时候按需下载资源&#xff08;用户在进入某些页面的时候才去下载相应的资源&#xff0c;可以加快小程序的速度&#xff0c;优化用户体…

前端学习笔记(15)-Vue3状态管理store及Vuex的使用

1.状态管理 2.用响应式API做简单状态管理 3.Vuex基础 4.Vuex 核心概念 5. VuexsessionStorage实现数据存储1.状态管理理论上来说&#xff0c;每一个 Vue 组件实例都已经在“管理”它自己的响应式状态了。我们以一个简单的计数器组件为例&#xff1a;<script setup> impor…

最新小程序反编译详细教程,亲测可用

小程序因为触手可及、自带推广等的特点&#xff0c;自诞生以来&#xff0c;实现了很多的商业场景&#xff0c;同时取代了App的大部分市场份额。其实小程序的开发和网页开发类似&#xff0c;同样使用的是JavaScript开发的&#xff0c;属于前端&#xff0c;所以借助一些程序的帮助…

html+css唯美登录页面,代码提供(效果展示)

文章目录效果图所有代码效果图 所有代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" cont…

vue脚手架报错:“Component name “***“ should always be multi-word”解决方法

出现的问题 在我们写完脚手架运行 npm run serve 后控制台报错 页面报错 报错的原因 在为自定义组件命名的时候未按照官方代码规范进行命名&#xff0c;根据 ESLint 官方代码风格指南&#xff0c;除了根组件&#xff08;App.vue&#xff09;以外&#xff0c;其他自定义组件命名…

若依框架登录后跳转其他页面获取不同的菜单登录进入后跳转至动态路由的第一个路由

最近碰到的需求是登录进入后,先跳转至一个自己定义的页面,在这个页面选择一个系统后,进入若依的系统,根据选择的系统获取相应的菜单,进入页面后默认跳转至后端返回的动态路由的第一个路由 1.首先在登录页面login.vue做如下改动 写成你要跳转过去的页面:(这个路由如果是自己定…

蓝桥杯冲击-02约数篇(必考)

文章目录 前言 一、约数是什么 二、三大模板 1、试除法求约数个数 2、求约数个数 3、求约数之和 三、真题演练 前言 约数和质数一样在蓝桥杯考试中是在数论中考察频率较高的一种&#xff0c;在省赛考察的时候往往就是模板题&#xff0c;难度大一点会结合其他知识点考察&#x…

安装element ui

安装element ui记录 步骤 1.先在dev控制台输入npm i element-ui --save 2.出现警告 F:\vue_test\src> npm i element-ui --save npm WARN deprecated core-js2.6.12: core-js<3.23.3 is no longer maintained and not recommended for usage due to the number of is…

Vue项目实战——实现一个任务清单(学以致用,两小时带你巩固和强化Vue知识点)

Vue2.x 项目实战&#xff08;一&#xff09; 内容参考链接Vue2.x全家桶Vue2.x 全家桶参考链接Vue2.x项目&#xff08;一&#xff09;Vue2.x 实现一个任务清单Vue2.x项目&#xff08;二&#xff09;Vue2.x 实现GitHub搜索案例Vue3.x项目&#xff08;三&#xff09;Vue3.x 实现一…

Vue 高德地图(@amap/amap-jsapi-loader)的基本使用:添加标记、POI关键字搜索、路线规划...(方法一)

高德地图的基本事件与使用前言&#xff1a; 引入并初始化渲染地图1、初始化地图2、地图鼠标点击事件3、添加标记、 移除标记点4、搜索服务——POI关键字搜索 [AMap.PlaceSearch]5、驾车路线规划服务5.1 可拖拽驾车路线规划 [AMap.DragRoute]5.2 途经点 &#xff08;起点 终点 途…

在vue3+ts项目里使用query和params传参

一 query 传参 &#xff08;类似get请求&#xff09; query 传参方式① 传递方组件 home.vue <template><div classc><p>query传参</p><el-button type"success" click"toList"> to list</el-button> </div>…

LayUI框架的使用步骤实现登录页面

目录 一、LayUI的简介 二、下载安装 三、引入并且测试 四、自定义模块 四、利用LayUI实现一个登录页面 一、LayUI的简介 1.1 什么是LayUI&#xff1f; Layui&#xff08;谐音&#xff1a;类 UI) 是一套开源的 Web UI 解决方案&#xff1b; 由国人开发&#xff08;作者贤心…

Python人脸识别

#头文件&#xff1a;import cv2 as cvimport numpy as npimport osfrom PIL import Imageimport xlsxwriterimport psutilimport time#人脸录入def get_image_name(name):name_map {f.split(.)[1]:int(f.split(.)[0]) for f in os.listdir("./picture")}if not name…