vite构建vue3+Ts项目 并配置路由router

1、创建项目: 使用 Vite 初始化一个 Vue 3 项目

npm create vite@latest vue3-project --template vue-ts

温馨提示:上述命令中,my-vue3-project是自定义的项目名称 可根据需要进行修改

2、进入项目目录:

cd my-vue3-project

3、安装依赖:

npm install

4、安装路由库:

对于 Vue 3,Vue Router 是一个单独的库,因此你需要安装它作为项目的依赖。你可以使用以下命令安装 Vue Router:

npm install vue-router@4

5、项目结构:

你的项目结构应该类似于:

vue3-project/
├── src/
│   ├── assets/
│   ├── components/
│   ├── views/
│   ├── App.vue
│   └── main.ts
├── public/
└── ...

 6、定义路由:

src 目录下创建一个名为 router 的文件夹,然后在该文件夹中创建一个名为 index.ts 的文件,定义路由配置:

// src/router/index.tsimport { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
import Home from '@/views/Home.vue';
import About from '@/views/About.vue';const routes: Array<RouteRecordRaw> = [{path: '/',name: 'Home',component: Home,},{path: '/About',name: 'About',component: About,},
];const router = createRouter({history: createWebHistory(),routes,
});// 在这里添加路由的导航守卫
router.beforeEach((to, from, next) => {console.log('Navigating to:', to.path);next();});export default router;

7、创建视图组件:src/views 目录下创建 Home.vueAbout.vue 文件:

<!-- src/views/Home.vue --><template><div class="vertical-layout"><header><h1>Home Page</h1></header><main><button @click="goToOtherPage">跳转到其他页面</button><p>Your main content goes here.</p></main><footer><p>Footer content goes here.</p></footer></div>
</template>
<script setup lang="ts">
import { useRouter } from 'vue-router';
const router = useRouter();
const goToOtherPage = () => {console.log('Clicked!');// 在这里指定你想要跳转的路径router.push('/About');
};
</script>
<style scoped>
.vertical-layout {display: flex;flex-direction: column;align-items: center;justify-content: space-between;height: 100vh; /* 设置整个布局高度为视口高度,以确保内容在竖屏中居中显示 */
}
header, main, footer {width: 80%; /* 设置宽度为80% */min-width: 800px; /* 设置最小宽度为400px */max-width: 1200px; /* 设置最大宽度为1200px */padding: 20px;box-sizing: border-box;text-align: center;background-color: #f0f0f0;margin: 10px 0;
}@media screen and (max-width: 600px) {/* 在小屏幕上,设置宽度为100% */header, main, footer {width: 100%;}
}
</style>
<!-- src/views/About.vue --><template><div class="vertical-layout"><header><h1>About Page</h1></header><main><button @click="goToOtherPage">跳转到其他页面</button><p>Your main content goes here.</p></main><footer><p>Footer content goes here.</p></footer></div>
</template>
<script setup lang="ts">
import { useRouter } from 'vue-router';
const router = useRouter();
const goToOtherPage = () => {console.log('Clicked!');// 在这里指定你想要跳转的路径router.push('/');
};
</script>
<style scoped>
.vertical-layout {display: flex;flex-direction: column;align-items: center;justify-content: space-between;height: 100vh; /* 设置整个布局高度为视口高度,以确保内容在竖屏中居中显示 */
}
header, main, footer {width: 80%; /* 设置宽度为80% */min-width: 800px; /* 设置最小宽度为400px */max-width: 1200px; /* 设置最大宽度为1200px */padding: 20px;box-sizing: border-box;text-align: center;background-color: #f0f0f0;margin: 10px 0;
}
@media screen and (max-width: 600px) {/* 在小屏幕上,设置宽度为100% */header, main, footer {width: 100%;}
}
</style>

8、引入路由:src/main.ts 文件中引入并使用路由:

// src/main.tsimport { createApp } from 'vue';
import App from './App.vue';
import router from './router';createApp(App).use(router).mount('#app');

9、运行项目:

npm run dev

10、可能出现的报错:

10.1、找不到模块“@/views/About.vue”或其相应的类型声明,这个警告说明 Vue Router 没有找到与路径 "/src/views/About" 匹配的路由。Vue Router 的路径匹配是基于配置的路由路径而不是实际文件路径

重点调整以下几个文件:

Vite 配置文件 vite.config.ts

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';// https://vitejs.dev/config/
export default defineConfig({plugins: [vue()],resolve: {alias: {'@': '/src',},},
});

TypeScript 配置文件 tsconfig.json

{"compilerOptions": {"baseUrl": ".","paths": {"@/*": ["src/*"]}}
}

10.2、如果出现路径正确 跳转以后的组件视图没有变化

检查路由配置是否正确

router/index.ts 中确保路由的配置是正确的,/About 能够正确地映射到对应的组件,确保路由的 namepathcomponent 都配置正确。

检查路由视图是否正确配置

确保在 App.vue 或父组件中包含了 <router-view>,用于显示当前路由对应的组件

<template><div><router-view></router-view></div>
</template>
<script setup lang="ts">
</script><style scoped>
.logo {height: 6em;padding: 1.5em;will-change: filter;transition: filter 300ms;
}
.logo:hover {filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {filter: drop-shadow(0 0 2em #42b883aa);
}</style>

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

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

相关文章

有方机器人 STM32智能小车 项目学习笔记1

今天开始学习有方机器人--智能小车项目&#xff0c;正点原子部分的学习先放一放&#xff0c;还是小车更有吸引力哈哈。 新建工程及工程模板搭建 新建工程须知 目前常用的 STM32 的开发方式主要有基于寄存器编程、基于标准库函数编程、基于 HAL 库编程这三种。 寄存器版本--…

阿里云国际云服务器全局流量分析功能详细介绍

进行全局流量分析时&#xff0c;内网DNS解析会作为一个整体模块&#xff0c;其他模块的边缘虚框颜色会置灰&#xff0c;示意作为一个整体进行全局分析&#xff0c;左侧Region可以展开/汇总&#xff0c;也可以单独选中某个Region模块进行分析&#xff08;这时其他Region的流量线…

基于最小二乘正弦拟合算法的信号校正matlab仿真,校正幅度,频率以及时钟误差,输出SNDR,SFDR,ENOB指标

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 最小二乘正弦拟合 4.2 SNDR、SFDR 和 ENOB 计算 4.3 校正 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..........................…

计网Lesson17 - 拥塞控制

文章目录 1. 拥塞控制1.1 什么是拥塞1.2 拥塞控制的常用算法1.2.1 慢开始1.2.2 拥塞避免1.2.3 快重传1.2.4 快恢复 1. 拥塞控制 1.1 什么是拥塞 拥塞&#xff1a;在某段时间&#xff0c;若对网络中某⼀资源的需求超过了该资源所能提供的可用部分&#xff0c;网络性能就要变坏…

node.js 用 xml2js.Parser 读 Freeplane.mm文件,生成测试用例.csv文件

Freeplane 是一款基于 Java 的开源软件&#xff0c;继承 Freemind 的思维导图工具软件&#xff0c;它扩展了知识管理功能&#xff0c;在 Freemind 上增加了一些额外的功能&#xff0c;比如数学公式、节点属性面板等。 编写 mm_xml2js_csv.js 如下 // 用 xml2js.Parser 读 F…

2023 安洵杯-PWN-【side_channel】

文章目录 side_channel libc 2.37检查IDA源码思路选择合适的syscall的gadget寻找可写入shellcode的内存区间mprotect()修改属性 exp side_channel libc 2.37 检查 禁用了write&#xff0c;能用open和read和mprotect IDA源码 __int64 __fastcall main(int a1, char **a2, cha…

第三章-Mybatis源码解析-以xml方式走流程-mapper解析(一)

讲解前&#xff0c;我们先思考几个问题&#xff1a; 1、谁来解析&#xff1f; 2、用什么解析&#xff1f; 3、解析成什么&#xff1f; 4、解析结果如何存放&#xff1f; 5、最终用途&#xff1f; 那么&#xff0c;我们顺着上面几个问题来解读源码。 3.1 XMLMapperBuilde…

人工智能、机器学习和生成式人工智能之间有什么区别?

文 | BFT机器人 在这个数字的智能时代&#xff0c;大家对人工智能、机器学习和生成式人工智能这些名词字眼很熟悉&#xff0c;有些人或许对它们还有一些了解&#xff0c;但是当他们一起出现的时候&#xff0c;大家能够区别它们是什么意思吗&#xff1f;今天小编将带你们详细解…

Ainx框架基础路由模块

&#x1f4d5;作者简介&#xff1a; 过去日记&#xff0c;致力于Java、GoLang,Rust等多种编程语言&#xff0c;热爱技术&#xff0c;喜欢游戏的博主。 &#x1f4d7;本文收录于Ainx系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏Rust初阶教程、go语言基础系列…

Vue 3, TypeScript 和 Element UI Plus:前端开发的高级技巧与最佳实践

Vue 3、TypeScript 和 Element UI Plus 结合使用时&#xff0c;可以提供一个强大且灵活的前端开发环境。以下是一些高级用法和技巧&#xff0c;帮助你更有效地使用这些技术&#xff1a; 1. Vue 3 高级特性 Composition API 使用 setup 函数: Vue 3 引入了 Composition API&am…

Linux内核队列queue.h

文章目录 一、简介二、SLIST单向无尾链表2.1 介绍2.2 操作2.3 例子 三、STAILQ单向有尾链表四、LIST双向无尾链表五、TAILQ双向有尾链表六、CIRCLEQ循环链表七、queue源码参考 一、简介 queue.h是一个非常经典的文件&#xff0c;定义了一系列宏的操作&#xff0c;它定义了一系…

MWC 2024丨美格智能推出5G RedCap系列FWA解决方案,开启5G轻量化新天地

2月27日&#xff0c;在MWC 2024世界移动通信大会上&#xff0c;美格智能正式推出5G RedCap系列FWA解决方案。此系列解决方案具有低功耗、低成本等优势&#xff0c;可以显著降低5G应用复杂度&#xff0c;快速实现5G网络接入&#xff0c;提升FWA部署的经济效益。 RedCap技术带来了…

leetcode 2.27

leetcode hot 100 哈希1.字母异位词分组2.最长连续序列 双指针1.盛最多水的容器2.和为 K 的子数组 数组1.除自身以外数组的乘积 哈希 1.字母异位词分组 49. 字母异位词分组 方法一&#xff1a;排序 由于互为字母异位词的两个字符串包含的字母相同&#xff0c;因此对两个字符…

Python入门到精通(九)——Python数据可视化

Python数据可视化 一、JSON数据格式 1、定义 2、python数据和JSON数据转换 二、pyecharts 三、折线图 四、地图 五、动态柱状图 一、JSON数据格式 1、定义 JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据JSON本质上是一个带有特定格式的字符…

vue项目从后端下载文件显示进度条或者loading

//API接口 export const exportDownload (params?: Object, peCallback?: Function) > {return new Promise((resolve, reject) > {axios({method: get,url: ,headers: {access_token: ${getToken()},},responseType: blob,params,onDownloadProgress: (pe) > {peC…

数据结构2月21日

双向链表: func函数&#xff1a; #include <stdio.h> #include <stdlib.h> …

数据分析-Pandas数据探查初步:离散点图

数据分析-Pandas数据探查初步&#xff1a;离散点图 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff…

若依前后端分离版开源项目学习

前言&#xff1a;vscode中vue代码没有高亮显示&#xff0c;可以下载vetur插件解决&#xff0c;ctrl点击无法跳转函数定义问题&#xff0c;可以下载vue-helper插件解决&#xff1b;idea中ctrl点击函数即可跳转函数定义。 一、登录 1.生成验证码 基本思路&#xff1a; 后端生…

基于HT32的智能家居demo(蓝牙上位机)

参加合泰杯作品的部分展示&#xff0c;基于HT32的智能家居&#xff0c;这里展示灯光的相关控制&#xff0c;是用蓝牙进行的数据透传&#xff0c;参考了一些资料&#xff0c;美化封装了一下之前的上位机界面。 成果展示 点击主界面的蓝牙设置&#xff0c;进行连接&#xff0c;下…

【推荐算法系列六】WideDeep模型

文章目录 参考资料 模型结构模型的记忆能力模型的泛化能力问题 参考资料 见微知著&#xff0c;你真的搞懂Google的Wide&Deep模型了吗&#xff1f;keras实现的代码参考 模型结构 它是由左侧的 Wide 部分和右侧的 Deep 部分组成的。Wide 部分的结构太简单了&#xff0c;就是…