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

news2024/12/23 9:35:53

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);
				});

至此整理完毕。

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

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

相关文章

达梦数据库的系统视图v$sessions

达梦数据库的系统视图v$sessions 达梦数据库&#xff08;DM Database&#xff09;是中国的一款国产数据库管理系统&#xff0c;它提供了类似于Oracle的系统视图来监控和管理数据库。V$SESSIONS 是达梦数据库中的一个系统视图&#xff0c;用于显示当前数据库会话的信息。 以下…

数据结构(Java):LinkedList集合Stack集合

1、集合类LinkedList 1.1 什么是LinkedList LinkedList的底层是一个双向链表的结构&#xff08;故不支持随机访问&#xff09;&#xff1a; 在LinkedList中&#xff0c;定义了first和last&#xff0c;分别指向链表的首节点和尾结点。 每个节点中有一个成员用来存储数据&…

Oracle 物化视图详解与实践

一.视图是什么&#xff1f; 普通视图只是存放在数据字典当中的子查询&#xff0c;本身没有数据&#xff0c;数据来源于基表&#xff0c;可以把普通视图当作编译好的sql语句。 二.物化视图是什么&#xff1f; 把查询到的数据存放起来&#xff0c;为了以后再次查询使用&#xff0…

NiFi1.25版本HTTPS模式下RestAPI使用入门

Apache NiFi 是一个强大的数据流处理工具&#xff0c;通过其 REST API&#xff0c;用户可以远程管理和控制数据流处理器。本文将介绍如何使用 NiFi 1.25 版本HTTPS 模式下Rest API&#xff0c;包括获取 token、获取组件信息、启动和停止组件、以及更改组件的调度频率等操作。 …

2.2动态库

动态库的特性 位置无关代码(PIC - position independent code) 库中的符号&#xff0c;不需要提前存储在可执行文件中&#xff0c;只有当链接时&#xff0c;可执行文件才会将需要的代码函数链接到内存中。 制作动态库 编写主函数 test.c #include<stdio.h> int main…

Java 设计模式系列:解释器模式

简介 解释器模式是一种行为型设计模式&#xff0c;它提供了一种构建抽象语法树的机制&#xff0c;并定义了如何解释这棵树。解释器模式属于编译原理中的语法制导翻译的范畴。 如上图&#xff0c;设计一个软件用来进行加减计算。我们第一想法就是使用工具类&#xff0c;提供对应…

优雅单片机之STM32C8T6----------程序下载(1)

0&#xff0c;C8T6系列 若想查看视频以及讲解&#xff0c;请查看B站或者抖音视频。 1&#xff0c;入门程序的下载&#xff08;本文&#xff09; 2&#xff0c;蓝牙控制&#xff08;待定&#xff09; 3&#xff0c;蓝牙小车&#xff08;待定&#xff09; 一&#xff0c;USB转…

springboot3 web

springboot web配置 springboot web的配置有&#xff1a; SpringMvc配置的前缀为&#xff1a;spring.mvcweb场景的通用配置为&#xff1a;spring.web文件上传的配置为&#xff1a;spring.servlet.multipart服务器相关配置为&#xff1a;server 接管SpringMVC 的三种方式 方…

深圳晶彩智能JC3636W518C开发环境Arduino IDE配置

深圳晶彩智能发布了JC3636W518C 这是一款中国制造的&#xff0c;铝合金外壳&#xff0c;价格非常震撼的开发板。原创是billbill的up播主萨纳兰的黄昏设计的ESP32太极小派&#xff0c;由深圳晶彩智能批量生产。 该款 LCD 模块采用 ESP32-S3R8 芯片作为主控,该主控是双核 MCU&…

Java File类(一) -- springboot项目根目录下进行文件的读取、写入与清空内容的操作

目录 1.存储的位置 2.FileOperationUtil工具类源代码 1.存储的位置 2.FileOperationUtil工具类源代码 import org.springframework.util.FileCopyUtils; import java.io.*; import java.nio.charset.StandardCharsets;/*** @ClassName FileOperationUtil* @Description 文件…

卡码网KamaCoder 101. 孤岛的总面积

题目来源&#xff1a;101. 孤岛的总面积 C题解&#xff1a;在卡码网KamaCoder 100. 岛屿的最大面积-CSDN基础上加了个孤岛flg进行修改 #include <iostream> #include <vector> #include <queue>#include <stdio.h> using namespace std;int res 0, t…

【2024_CUMCM】时间序列3-一元时间序列分析的模型

目录 时间序列的平稳性 弱平稳 白噪声序列 序列图 差分方程 滞后算子 AR(p)模型 概念 平稳 例子 MA(q)模型 ARMA(p,q) 自回归移动平均模型 平稳性 ACF自相关系数 PACF偏自相关函数 AR(1)模型图 MA(1)与AR(2)图 ARMA(1,1)图 ARMA模型的识别 ARMA模型的估计…

【计算机视觉】3D重建:使用MeshLab进行表面重建(以泊松重建为例)

一、MeshLab 1、简介 MeshLab是一款功能强大的开源三维网格处理软件&#xff0c;主要用于编辑、修复、简化和可视化三维三角形网格和点云数据。它支持PLY、STL、OBJ、3DS、COLLADA等多种常用的3D文件格式&#xff0c;提供了网格清理、修复、简化、纹理映射、参数化、布尔运算等…

多平台内网穿透工具-frp配置(下载安装、开机自启)

✨本教程使用Windows做客户端&#xff0c;Ubuntu做服务端。服务端需要能公网访问&#xff0c;可以去腾讯或者阿里购买vps。 本教程所采用的工具可在蓝奏云中下载。下载地址&#xff1a;https://wwt.lanzoue.com/b0fomaeta密码:1k1u frp官方文档地址&#xff1a;https://gofrp.o…

基于SSM的校园一卡通管理系统的设计与实现

摘 要 本报告全方位、深层次地阐述了校园一卡通管理系统从构思到落地的整个设计与实现历程。此系统凭借前沿的 SSM&#xff08;Spring、Spring MVC、MyBatis&#xff09;框架精心打造而成&#xff0c;旨在为学校构建一个兼具高效性、便利性与智能化的一卡通管理服务平台。 该系…

【问题项目】freeswitch的web界面YouPBX —— 筑梦之路

开源地址&#xff1a;GitHub - JoneXiong/YouPBX: A great GUI manager for FreeSwitch 说明&#xff1a;该项目是基于python 2.7django开发 这里主要记录下搭建使用过程 # 拉取代码git clone https://github.com/JoneXiong/YouPBX.gitgit clone https://github.com/JoneX…

Spring Web MVC入门(2)(请求1)

目录 请求 1.传递单个参数 2.传递多个参数 3.传递对象 4.后端参数重命名(后端参数映射) 非必传参数设置 5.传递数组 请求 访问不同的路径就是发送不同的请求.在发送请求时,可能会带一些参数,所以学习Spring的请求,主要是学习如何传递参数到后端及后端如何接收. 1.传递单…

局域网如何进行内网连接和外网连接

这里写目录标题 什么是局域网什么是内网和外网为什么使用局域网内网连接 --- 小型局域网数据发送过程交换机知道IP地址对应的MAC地址&#xff08;一对一单播&#xff09;交换机不知道IP地址对应的MAC地址&#xff08;一对多广播&#xff09;数据接收过程 外网连接中型或大型局域…

SpringCoud组件

一、使用SpringCloudAlibaba <dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2023.0.1.0</version><…

【Python】数据处理(mongodb、布隆过滤器、索引)

数据 数据预处理 df pd.read_csv(file_path, encodingANSI) csv的编码方式一定要用 ANSI。要不然会出现各种报错 import pandas as pd from datetime import datetime# 读取CSV文件 file_path book_douban.csv df pd.read_csv(file_path, encodingANSI)# 定义一个函数来…