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

Vue3+Vite+TS+Axios整合详细教程

1. Vite 简介

        Vite是新一代的前端构建工具,在尤雨溪开发Vue3.0的时候诞生。类似于Webpack+ Webpack-dev-server。其主要利用浏览器ESM特性导入组织代码,在服务器端按需编译返回,完全跳过了打包这个概念,服务器随起随用。生产中利用Rollup作为打包工具,号称下一代的前端构建工具。

        vite 是一种新型的前端构建工具,能够显著的提升前端开发者的体验。它主要有俩部分组成:

        一个开发服务器:它基于原生的es模块,提供了丰富的内建功能,如速度快到惊人的模块热更新HMR.

        一套构建指令:使用Rollup打包代码,并且它是预构建的,可输出用于生产环境的高度优化过的静态资源。

1.1 VS Webpack

        Webpack是近年来使用量最大,同时社区最完善的前端打包构建工具,新出的5.x版本对构建细节进行了优化,在部分场景下打包速度提升明显。Webpack在启动时,会先构建项目模块的依赖图,如果在项目中的某个地方改动了代码,Webpack则会对相关的依赖重新打包,随着项目的增大,其打包速度也会下降。

        Vite相比于Webpack而言,没有打包的过程,而是直接启动了一个开发服务器devServer。Vite劫持浏览器的HTTP请求,在后端进行相应的处理将项目中使用的文件通过简单的分解与整合,然后再返回给浏览器(整个过程没有对文件进行打包编译)。所以编译速度很快。

2. TS简介

        TypeScript是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器或Babel转译为JavaScript代码,可运行在任何浏览器,任何操作系统。

        TypeScript 是一种由微软开发的自由和开源的编程语言,它是 JavaScript 的一个超集,扩展了 JavaScript 的语法。

3. Vue3+Vite+TS 项目创建

说明: 当前使用TS,表明之前项目中使用到的js文件,需要修改为ts文件,例如:router中的index.js 需要改为 index.ts 文件,之前的main.js 文件,现在已变为 main.ts 文件。

3.1 项目创建指令

        npm create vue@latest

        例如:创建vueproject项目,执行如下:

3.2 启动项目

3.3 默认创建项目的访问页面

4. 项目初始化

4.1 相关插件安装

# 字体图标库

 npm install font-awesome

#qs是用于解析和格式化URL查询字符串的外置模块库

npm install qs

4.2 main.ts 中引入 font-awesome

4.3 TS 是不能解析 后缀vue文件的,因此,使用vue文件,必须在env.d.ts 中添加,如下命令

declare module '*.vue' {import type {DefineComponent} from 'vue';const component:DefineComponent<{},{},any>export default component;}

效果如下:

4.4 清除src/components 目录下默认的文件

4.5 清除src/App.vue中的内容,添加 router-view 组件,修改之后如下:

4.6 App.vue 的 <style> 样式中可以存放,所有页面公共的样式,如下:

<style>*{margin: 0;padding: 0;}html,body,#app{width: 100%;height: 100%;font-family: "微软雅黑";}a{text-decoration: none;}ul,ol{list-style: none;}
</style>

5. Vue3项目整合路由

5.1 安装路由插件

npm install vue-router

5.2 项目src目录下创建router目录,并在router目录下常见index.ts 文件

5.3 index.ts 内具体内容,如下:

5.4 main.ts 中配置 router

6. Vue3项目整合Axios

6.1 安装axios 插件

npm install axios

6.2 在main.ts中进行axios 基础路径的配置

7. 页面相关内容

说明:模拟功能:首页面中显示商品的类型,点击某个商品类型显示对应的商家列表,点击商品类型之后连接后台服务获取类型对应的商家列表,并将商家列表显示到页面上

7.1 在src根目录下创建views目录

7.2 在views目录下创建 Index.vue \ BusinessList.vue

7.3 创建两个页面对应的路由地址

7.4 Index.vue (核心代码:主要看vue语法糖的代码)

<template><div class="wrapper"><!--点餐分类--><ul class="foodtype"><li @click="toBusinessList(1)"><img src="../assets/dcfl01.png"/><p>美食</p></li><li @click="toBusinessList(2)"><img src="../assets/dcfl02.png"/><p>早餐</p></li><li @click="toBusinessList(3)"><img src="../assets/dcfl03.png"/><p>跑腿代购</p></li></ul><!--部分功能代码省略--></div>
</template>
<script setup>import Footer from '@/components/Footer.vue'import { useRouter } from 'vue-router';let router = useRouter()function toBusinessList(orderTypeId){router.push({path: '/businessList',query:{orderTypeId:orderTypeId}})}</script>
<style scoped>/**样式 具体代码 省略 */
</style>

7.5 BusinessList.vue(核心代码:主要看vue语法糖的代码)

<template><div class="wrapper"><!--header部分--><header><p>商家列表</p></header><!--商家列表部分--><ul class="business"><li v-for="item in businessArr" @click="toBusinessInfo(item.businessId)"><div class="business-img"><img :src="item.businessImg"/></div><div class="business-info"><h3>{{item.businessName}}</h3><p>&#165;{{item.starPrice}} 起送 | &#165;{{item.deliveryPrice}} 配送</p><p>{{item.businessExplain}}</p></div></li></ul><!--底部菜单功能--><Footer></Footer></div>
</template>
<script setup>import Footer from '@/components/Footer.vue'import { onMounted,reactive, ref, toRefs } from 'vue';import { useRoute } from 'vue-router';import axios from 'axios';let route = useRoute()let businessArr = ref([])let orderTypeId = ref('')//-:获取router中query传递过来的内容orderTypeId.value = route.query.orderTypeId//-:页面先加载onMounted()方法,此方法类似于 created()方法,优先于页面渲染而执行的代码onMounted(()=>{let url = "/BusinessController/listBusinessByOrderTypeld?orderTypeId="+orderTypeId.value;//-:请求后端服务axios.get(url).then(function(response){if(response.data.code==200){businessArr.value = response.data.data}else{response.data.message;}}).catch(function(error){console.log(error)})})</script>
<style scoped>/** 具体 样式 省略*/
</style>

 启动项目,进行测试,即可。

8. 补充 qs 的使用案例

			axios.post('/OrdersController/listOrdersByUserId',qs.stringify({userId:this.user.userId})).then(response=>{let result = response.data.data;console.log(result)for(let orders of result){orders.isShowDetailet = false;}this.orderArr = result;}).catch(error=>{console.error(error);});
				//注册请求axios.post('/UserController/saveUser', qs.stringify(this.user)).then(response => {if(response.data>0){alert('注册成功!');this.$router.go(-1);}else{alert('注册失败!');}}).catch(error => {console.error(error);});

至此整理完毕。

相关文章:

Vue3+Vite+TS+Axios整合详细教程

1. Vite 简介 Vite是新一代的前端构建工具&#xff0c;在尤雨溪开发Vue3.0的时候诞生。类似于Webpack Webpack-dev-server。其主要利用浏览器ESM特性导入组织代码&#xff0c;在服务器端按需编译返回&#xff0c;完全跳过了打包这个概念&#xff0c;服务器随起随用。生产中利用…...

【深度学习入门篇 ⑨】循环神经网络实战

【&#x1f34a;易编橙&#xff1a;一个帮助编程小伙伴少走弯路的终身成长社群&#x1f34a;】 大家好&#xff0c;我是小森( &#xfe61;ˆoˆ&#xfe61; ) &#xff01; 易编橙终身成长社群创始团队嘉宾&#xff0c;橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官…...

宝塔安装RabbitMq教程

需要放开15672端口&#xff0c;默认账号密码为guest/guest...

韦东山嵌入式linux系列-驱动进化之路:设备树的引入及简明教程

1 设备树的引入与作用 以 LED 驱动为例&#xff0c;如果你要更换LED所用的GPIO引脚&#xff0c;需要修改驱动程序源码、重新编译驱动、重新加载驱动。 在内核中&#xff0c;使用同一个芯片的板子&#xff0c;它们所用的外设资源不一样&#xff0c;比如A板用 GPIO A&#xff0c…...

长轮询(Long Polling)实现原理和java代码示例

长轮询&#xff08;Long Polling&#xff09;背景 长轮询是一种在Web开发中常用的技术&#xff0c;用于实现服务器与客户端之间的即时通信或近乎实时的数据交换。在传统的轮询&#xff08;Polling&#xff09;中&#xff0c;客户端会定期向服务器发送请求以检查是否有新数据。…...

OWASP 移动应用 2024 十大安全风险

1. OWASP 移动应用 2024 十大安全风险 开放全球应用程序安全项目 &#xff08;OWASP&#xff09; 是一个非营利性基金会&#xff0c;致力于提高软件的安全性。自 2014、2016 年两次发布了移动应用的十大风险后&#xff0c;今年再次发布2024版。这对移动应用软件的检查工具有着…...

Qt界面假死原因

创建一个播放器类&#xff0c;继承QLabel&#xff0c;在播放器类中起一个线程用ffmpeg取流解码&#xff0c;将解码后的图像保存到队列&#xff0c;在gui线程中调用update()刷新显示。 当ffmpeg打开视频流失败后调用update()将qlabel刷新为黑色&#xff0c;有一定概率会使得qla…...

python调用MATLAB出错matlab.engine.MatlabExecutionError无法调用MATLAB函数报错

python调用MATLAB出错matlab.engine.MatlabExecutionError无法调用MATLAB函数报错 说明(废话)解决方案MATLAB异常乱码python矩阵转MATLAB矩阵matlab.engine.MatlabExecutionError 说明(废话) python调用MATLAB&#xff0c;调用m文件中的函数&#xff0c;刚开始都没有问题&…...

[GXYCTF2019]Ping Ping Ping1

打开靶机 结合题目名称&#xff0c;考虑是命令注入&#xff0c;试试ls 结果应该就在flag.php。尝试构造命令注入载荷。 cat flag.php 可以看到过滤了空格,用 $IFS$1替换空格 还过滤了flag&#xff0c;我们用字符拼接的方式看能否绕过,ag;cat$IFS$1fla$a.php。注意这里用分号间隔…...

成为git砖家(1): author 和 committer 的区别

大家好&#xff0c;我是白鱼。一直对 git author 和 committer 不太了解&#xff0c; 今天通过 cherry-pick 的例子搞清楚了区别。 原理 例如我克隆了著名开源项目 spdlog 的源码&#xff0c; 根据某个历史 commit A 创建了分支&#xff0c; 然后 cherry-pick 了这个 commit …...

Lianwei 安全周报|2024.07.15

新的一周又开始了&#xff0c;以下是本周「Lianwei周报」&#xff0c;我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件&#xff0c;保证大家不错过本周的每一个重点&#xff01; 政策/标准/指南最新动态 01 《人工智能全球治理上海宣言》发布 我们强调共同促…...

Linux - 基础开发工具(yum、vim、gcc、g++、make/Makefile、git、gdb)

目录 Linux软件包管理器 - yum Linux下安装软件的方式 认识yum 查找软件包 安装软件 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 vim命令模式各命令汇总 vim底行模式各命令汇总 vim的简单配置 Linux编译器 - gc…...

Git使用介绍教程

Git使用介绍教程 小白第一次写博客,内容写的可能不是很详细,仅供参考,大家一起努力 gitee网址:https://gitee.com 大部分的开发团队都以 Git 作为自己的版本控制工具,需要对 Git 的使用非常的熟悉。这篇文章中本人整理了自己在开发过程中经常使用到的 Git 命令,方便在偶…...

STM32的TIM1之PWM互补输出_死区时间和刹车配置

STM32的TIM1之PWM互补输出_死区时间和刹车配置 1、定时器1的PWM输出通道 STM32高级定时器TIM1在用作PWM互补输出时&#xff0c;共有4个输出通道&#xff0c;其中有3个是互补输出通道&#xff0c;如下&#xff1a; 通道1&#xff1a;TIM1_CH1对应PA8引脚,TIM1_CH1N对应PB13引…...

C++复习的长文指南

C复习的长文指南 一、入门语法知识1.预备1.1 main函数1.2 注释1.3 变量1.3 常量1.4 关键字1.5 标识符明明规则 2. 数据类型2.1 整型2.1.1 sizeof关键字 2.2 实型&#xff08;浮点型&#xff09;2.3 字符型2.4 转义字符2.5 字符串型2.6 布尔类型bool2.7 数据的输入 3. 运算符3.1…...

深入了解MySQL文件排序

数据准备 CREATE TABLE user_info (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT ID,name varchar(20) NOT NULL COMMENT 用户名,age tinyint(4) NOT NULL DEFAULT 0 COMMENT 年龄,sex tinyint(2) NOT NULL DEFAULT 0 COMMENT 状态 0&#xff1a;男 1&#xff1a; 女,creat…...

【JAVA基础】反射

编译期和运行期 首先大家应该先了解两个概念&#xff0c;编译期和运行期&#xff0c;编译期就是编译器帮你把源代码翻译成机器能识别的代码&#xff0c;比如编译器把java代码编译成jvm识别的字节码文件&#xff0c;而运行期指的是将可执行文件交给操作系统去执行&#xff0c; …...

贪心算法(2024/7/16)

1合并区间 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输入&#xff1a;inter…...

Python 在Word表格中插入、删除行或列

Word文档中的表格可以用于组织和展示数据。在实际应用过程中&#xff0c;有时为了调整表格的结构或适应不同的数据展示需求&#xff0c;我们可能会需要插入、删除行或列。以下提供了几种使用Python在Word表格中插入或删除行、列的方法供参考&#xff1a; 文章目录 Python 在Wo…...

Java二十三种设计模式-单例模式(1/23)

引言 在软件开发中&#xff0c;设计模式是一套被反复使用的、大家公认的、经过分类编目的代码设计经验的总结。单例模式作为其中一种创建型模式&#xff0c;确保一个类只有一个实例&#xff0c;并提供一个全局访问点。本文将深入探讨单例模式的概念、实现方式、使用场景以及潜…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...