vite+ts前期准备(尽量详细在更新)

news2025/1/10 17:02:47

创建和准备vite+ts项目

打开命令行或进入vscode打开终端

输入命令:npm init vite
选择vue+ts
cd 进入项目
cnpm/yarn/npm install

初次运行项目

终端输入命令:cnpm run dev

可以设置运行之后自动打开浏览器

目录打开package.json dev:vite --open 添加–open

查看环境变量

目录打开main.ts console.log(import.meta.env)
打开浏览器运行项目 查看日志

请添加图片描述

base_url:环境根路径
dev:是否为开发环境
mode:模式
prod:是否为生产环境
ssr:是否服务端渲染

打包为生产环境并查看生产环境变量

cnpm run build 编译打包到dist目录
cnpm run preview 以生产环境运行项目
运行生产环境也可以跟开发环境一样 设置自动打开浏览器和端口脚本
package.json preview: 追加 --open --port 8080

查看生产环境变量

跟查看开发环境变量一样 这里只需打开浏览器 查看日志即可

在这里插入图片描述

package.json里 build:vue-tsc --noEmit 命令

这是打包过程中检查ts语法问题的脚本,与ts配置文件里strict配置有关

自定义环境变量

根目录创建三个文件 .env .env.development .env.production
语法注意前缀大写 如:VITE_username=lisi
.env 备选文件
.env.development 开发环境下的文件
.env.production 生产环境下的文件

这里写出.env示例 其他文件类似
在这里插入图片描述

查看自定义环境变量

在env.d.ts声明文件里定义一个接口

interface ImportMetaEnv {
VITE_username: string,
VITE_age: number
}

接下来就可以查看变量

main.ts console.log(import.meta.env.VITE_username)

开发环境运行 zhangsan
在这里插入图片描述

vite开发环境和生产环境配置

安装dotenv依赖

dotenv是一个零依赖模块,将内存缓存对象环境变量列表读取到一个对象中,即将环境变量中的值放入内存中
安装:cnpm install dotenv -S

vite配置 获取当前环境

vite.config.ts 以对象或函数(推荐)形式写配置

export default defineConfig((mode) => {
  const env = mode.mode
  const envFileName:string = '.env'
  const curEnvFileName = `${envFileName}.${env}` 
  console.log("当前环境:", curEnvFileName);
  if (env === 'development') {
    console.log("开发环境");
  } else if (env === 'production') {
    console.log("生产环境");
  }
  return {
    plugins: [vue()],
  }
})

vite.config.ts 开发环境配置

准备

  1. 访问koa路由
  2. vite底层commonServerOptions应用
  3. 跨域代理访问后端
  4. dotenv加载环境文件环境变量
vite.config.ts
export default defineConfig((mode) => {
  // 基础路径
  // const base:string = '/book'
  const env = mode.mode
  const envFileName:string = '.env'
  const curEnvFileName = `${envFileName}.${env}` 
  console.log("当前环境:", curEnvFileName);
  // server服务端 继承CommonServerOptions接口 CommonServerOptions在vite模块引入
  let server:CommonServerOptions = {} // 赋值一个空对象,不然报错
  if (env === 'development') {
    server = {
      host: '127.0.0.1', // 主机
      port: 3000, // 端口
      proxy: {
        '/book': {
          target:'http://192.168.136.9:8791/'
        }
      } // 代理访问,解决后端跨域
    }
    console.log('开发环境',server)
  } else if (env === 'production') {
    console.log("生产环境");
  }
  return {
    plugins: [vue()],
    // base,
    server
  }
})

在这里插入图片描述

在环境文件中应用ts模块声明变量

安装@type/node依赖

cnpm install --D @types/node

修改.env.development文件

VITE_HOST = '127.0.0.1'
VITE_PORT = 3000
VITE_BASE_URL = '/book'
VITE_PROXY_DOMAIN = 'http://192.136.168.9:8791/'

src目录下创建一个声明文件 src/declare_/myenv.d.ts

import 'dotenv'
// 声明中合并 declare module 'dotenv'
declare module 'dotenv'{
    export interface DotenvParseOutput{
        VITE_HOST: string
        VITE_PORT: number
        VITE_BASE_URL: string
        VITE_PROXY_DOMAIN: string
    }
}

修改vite.config.ts

import { defineConfig,CommonServerOptions } from 'vite'
import vue from '@vitejs/plugin-vue'
import * as fs from 'fs'
import dotenv,{DotenvParseOutput} from 'dotenv'
export default defineConfig((mode) => {
  // 基础路径
  // const base:string = '/book'
  const env = mode.mode
  const envFileName:string = '.env'
  const curEnvFileName = `${envFileName}.${env}` 
  let server:CommonServerOptions = {} // 赋值一个空对象,不然报错
  const envData = fs.readFileSync(curEnvFileName)
  const envMap:DotenvParseOutput = dotenv.parse(envData) // 解析为key-value对象 dotenv.DotenvParseOutput泛型 需要声明合并 并引入
  console.log(envMap);
  console.log("当前环境:", curEnvFileName);
  // server服务端 继承CommonServerOptions接口 CommonServerOptions在vite模块引入
  if (env === 'development') {
    server = {
      host: envMap.VITE_HOST, // 主机
      port: envMap.VITE_PORT, // 端口
      proxy: {
        [envMap.VITE_BASE_URL]: {
          target: envMap.VITE_PROXY_DOMAIN
        }
      } // 代理访问,解决后端跨域
    }
    console.log('开发环境',server)
  } else if (env === 'production') {
    console.log("生产环境");
  }
  return {
    plugins: [vue()],
    // base,
    server
  }
})

在这里插入图片描述

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

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

相关文章

Latex IEEE模板导入中文问题

IEEE模板下载 下载IEEE的conference的latex模板文件: conference:https://www.ieee.org/conferences/publishing/templates.html 模板包括以下文件 编译 IEEE模板需要用pdflatex编译,否则英文的粗体等无法正常显示。 使用pdflatex编译 …

select......for update会锁表还是锁行?

select查询语句是不会加锁的,但是select .......for update除了有查询的作用外,还会加锁呢,而且它是悲观锁。 那么它加的是行锁还是表锁,这就要看是不是用了索引/主键。 没用索引/主键的话就是表锁,否则就是是行锁。…

Flutter组件--TabBar使用详情(分段控制器)

TabBar介绍 一个显示水平行选项卡的Widget。 通常创建为 AppBar 的 AppBar.bottom 部分并与 TabBarView 结合使用 在什么情况下使用TabBar 当你的app内容类别比较多的时候,我们常常会用到TabBar,例如网易新闻、京东、B站等,所以TabBar是一…

CentOS7 设置 MySQL 主备同步

文章目录环境准备修改配置文件创建同步数据账户设置主库信息测试参考资料本文主要介绍在 MySQL 的主备同步设置方法。环境准备 Linux:Centos 7 MySQL:5.7 主节点:192.168.210.18 备节点:192.168.210.19 主备节点 MySQL 均支持…

2022 Android 高级进阶学习资料与高频精选面试题精讲(圆梦大厂)

序言 可能每个技术人都有个大厂梦,我也不例外。最近准备跳槽,前一阵子在准备各种面试,也面了几个大厂,其中包括字节、阿里 就以字节面试为例,面试总共花费了 20 天左右,包含了 4 轮电话面试、1 轮笔试、1 轮…

锐捷OSPF基础实验配置

目录 配置基础的邻居建立 配置Area4的虚链路 配置OSPF特殊区域 配置路由重分发 配置OSPF汇总 下发缺省路由 配置OSPF邻居认证 配置OSPF的网络类型 配置基础的邻居建立 以R1和R2建立邻居为例子(其余设备邻居建立配置相同) R1配置 int g0/0 no swi…

安泰测试-矢量网络分析仪有哪些应用?

网络分析仪可用于表征射频(RF)器件。尽管最初只是测量 S 参数,但为了优于被测器件,现在的网络分析仪已经高度集成,并且非常先进。 射频电路需要独特的测试方法。在高频内很难直接测量电压和电流,因此在测量高频器件时&#xff0c…

电话语音控件:AddTapi.NET 6.0 Crack

关于 AddTapi.NET 轻松地将电话 (TAPI) 功能添加到您的 C#、VB.NET 或 C 应用程序。 AddTapi.NET 支持 Microsoft 电话应用程序编程接口 (TAPI) 1.3 - 3.1,并适用于所有与 TAPI 兼容的电话硬件,从语音调制解调器到高级电话板再到与 TAPI 兼容的 PBX 系统…

2.9 Python 流程控制

文章目录1. 流程控制2. 顺序结构3. 伪代码4. 流程图4.1 顺序结构4.2 分支结构4.3 多分支结构4.4 循环结构1. 流程控制 流程控制: 控制程序按照一定的结构进行执行. 流程控制指的是代码的运行逻辑, 分支走向, 循环控制, 能真正体现程序执行顺序的操作.* 1966年计算机科学家 C.B…

pikachu---暴力破解(burpsuite)

没有设置认证策略的情况下,口令猜测就是尝试,永无尽头的尝试 符号的排列组合试到最后,总能得出最终结果,人类大脑和生理的限制,需要使用工具来尝试。 前言 浅学,借鉴,暂无代码分析。 基于表…

中职生学习动机的激发与培养研究-以汽车运用与维修专业为例

目 录 摘 要 I Abstract II 一、绪论 1 (一)选题背景及意义 1 (二)国内外研究现状 1 1.国外发展现状及趋势 1 2.国内发展现状及趋势 3 (三)研究思路及方法 3 二、学习动机的含义及基本类型 5 (一…

python之requests的高级用法

上一篇我们说了requests的简单用法,知道了如何发送请求,今天我们更深层次的来学习requests。我们看看高级一点的操作,比如讲文件上传,cookies设置,代理设置之类的。 1.文件上传 我们知道requests可以模拟提交一些数据…

UE5笔记【七】Nanite虚化几何-虚化几何简介;创建Nanite对象。

简书上有一篇文章:《【UE5】Nanite解析》 Epic外放的两大特性Nanite跟Lumen,构成了UE版本升级的基石,关于这两大技术,已经有了众多的分享,不过这些分享在结构和内容上难以构成整个方案的全貌,因此尝试先通…

Zero Time Waste: Recycling Predictions in Early Exit Neural Networks 论文阅读笔记

这是NIPS2021的一篇论文。论文的主题是解决early exit失败的时候IC的运算被浪费掉的问题。 背景介绍 early exit 是一个提高推理速度的研究方向。主要做法就是在网络的浅层特征上插入一些分支的分类器(Internal Classifier)。当以某个简单样本为输入的时…

SpringBoot项目实现发布订阅模式

文章目录自己实现观察者模式观察者被观察者测试利用Spring精简观察者实现类:定义成Bean被观察者:自动注入BeanSpring Event实现发布/订阅模式自定义事件事件监听者实现ApplicationListener接口使用EventListener注解异步和自定义线程池异步执行自定义线程…

SSM框架-Spring(二)

目录 1 手写spring框架 2 Spring IoC注解式开发 2.1 回顾注解 2.2 声明Bean的注解 2.3 Spring注解的使用 2.4 选择性实例化Bean 2.5 负责注入的注解 2.5.1 Value 2.5.2 Autowired与Qualifier 2.5.3 Resource 2.6 全注解式开发 3 JdbcTemplate 3.1 环境准备 3.2 新…

深化服务成工业品电商角逐新焦点

配图来自Canva可画 随着产业互联网的持续深入,TO B赛道就变得愈发火热起来,除了时下比较兴盛的各类SaaS应用之外,工业品电商赛道也再次汇集了外界的众多关注。据日前发布的《中国工业品数字化发展白皮书2022》显示,2022年上半年工…

应急响应-日志分析

Windows日志分析 日志概述在Windows系统中,日志文件包括:系统日志、安全性日志、应用程序日志: 在Windows Vista/windwos 7/windows 8/windows 10/windows server 2008及以上版本中: 系统日志的存放位置:%SystemRoot%\System32\…

【多线程 (一)】实现多线程的三种方式、线程休眠、线程优先级、守护线程

文章目录多线程1.1简单了解多线程1.2并发和并行1.3进程和线程1.4实现多线程方式一:继承 Thread类1.5实现多线程的方式二:实现 Runnable接口1.6实现多线程方式三:实现Callable接口1.7三种实现方式的对比1.8设置和获取线程名称1.9线程休眠1.10线…

电商网站运营的 7 大关键指标

本文介绍电商网站用户运营转化的相关指标体系,通过对这些指标的统计、监测和分析,可以及时发现电商运营的问题,以便有效及时改进和优化,提升电商转化率和销售额。 其中,不同类别指标对应电商运营的不同环节&#xff0…