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

vue3项目,main.ts中设置router,在各个页面上还用引用vue-router吗

在 Vue 3 项目中,如果你已经在 main.ts 中通过 app.use(router) 将路由实例注册到了全局应用中,那么:

在这里插入图片描述

结论:

在各个页面组件中,你不需要再“引用” vue-router 来“使用”路由功能,但如果你要在 <script> 中调用路由方法(如 router.pushuseRouteuseRouter),则仍需要导入相应的 API。


📌 详细解释

1. 在模板 <template> 中可以直接使用 <router-link>$route / $router

因为你在 main.ts 中执行了:

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

这会将 router 实例通过 app.use() 注册为全局插件,因此:

  • <router-link><router-view> 可以直接在模板中使用,无需导入
  • 在模板中也可以访问 {{ $route }} 或调用 @click="$router.push('/home')"不需要额外引入

✅ 示例(无需导入 vue-router):

<template><div><!-- 1. router-link 直接可用 --><router-link to="/home">首页</router-link><!-- 2. $router 在模板事件中可用 --><button @click="$router.push('/about')">跳转到关于</button><!-- 3. $route 获取当前路由信息 --><p>当前路径: {{ $route.path }}</p></div>
</template><script setup>
// 这里不需要导入 vue-router,模板中已自动注入
</script>

2. <script setup>setup() 中使用 Composition API 时,需要导入 useRouteruseRoute

Vue 3 的 Composition API 中,useRouteruseRoute 是函数,必须显式导入才能使用。

❌ 错误写法(不导入):

// ❌ 报错:useRouter is not defined
const router = useRouter()
router.push('/home')

✅ 正确写法:

<script setup>
import { useRouter, useRoute } from 'vue-router'const router = useRouter()
const route = useRoute()// 使用
function goToHome() {router.push('/home')
}// 获取当前路由参数
console.log(route.params.id)
</script>

🔁 总结:是否需要引用 vue-router

使用场景是否需要 import说明
<template> 中使用 <router-link><router-view>❌ 不需要全局注册后自动可用
<template> 中使用 $router$route❌ 不需要自动注入到模板上下文
<script setup> 中使用 useRouter()useRoute()✅ 需要必须从 vue-router 导入函数
<script setup> 中使用 router.push() 等方法✅ 需要前提是先 import { useRouter }

💡 小贴士:自动导入(推荐)

你可以使用 unplugin-auto-import 插件,自动导入 vue-router 的常用函数,避免手动写 import

// vite.config.ts
import AutoImport from 'unplugin-auto-import/vite'export default {plugins: [AutoImport({imports: ['vue', 'vue-router'],dts: 'src/auto-imports.d.ts'})]
}

配置后,你就可以直接使用 useRouter()useRoute()无需手动导入


最终建议:

  • main.ts 中注册 router 是必须的。
  • 模板中无需导入,可直接使用路由相关功能。
  • Script 中使用 Composition API 时,必须导入 useRouter / useRoute,或通过自动导入插件简化。
http://www.lryc.cn/news/626512.html

相关文章:

  • 性能测试报告深度解析:从冰冷数据到火热洞察
  • Flink学习
  • 详解flink java table api基础(三)
  • 2.3 Flink的核心概念解析
  • 24V降12V电源芯片WD5030,电路设计
  • linux 内核 - 内存管理单元(MMU)与地址翻译(一)
  • Flink Stream API - 顶层Operator接口StreamOperator源码超详细讲解
  • 软件测试中,JMeter 的作用以及优缺点是什么?
  • 【报错】Please do not run this script with sudo bash
  • three.js学习记录(第四节:材质外观)
  • Git 新手完全指南(二):在vscode中使用git
  • 【图像算法 - 19】慧眼识苗:基于深度学习与OpenCV的大棚农作物生长情况智能识别检测系统
  • PostgreSQL 中的金钱计算处理
  • K8S-Secret资源对象
  • 从零开始学AI——13
  • 机器学习(Machine Learning, ML)
  • mysql数据恢复
  • iOS App 上架实战 从内测到应用商店发布的全周期流程解析
  • QT聊天项目DAY20
  • java17学习笔记
  • 【Tech Arch】Apache HBase分布式 NoSQL 数据库
  • idea maven 设置代理
  • FastAPI初学
  • 《深度解析PerformanceObserverAPI: 精准捕获FID与CLS的底层逻辑与实践指南》
  • 【STM32】HAL库中的实现(六):DAC (数模转换)
  • 调用海康威视AI开放平台接口实现人体关键点检测
  • Java毕业设计选题推荐 |基于SpringBoot+Vue的知识产权管理系统设计与实现
  • langchain-ds的报告生成提示词
  • 结构化 OCR 技术:破解各类检测报告信息提取难题
  • Objective-C 版本的 LiveEventBus 效果