Vue-router learning01

本文介绍Vue-router的基础使用方法,包括安装、配置路由、导航制作、子菜单路由设置及参数传递等核心内容,并演示多路由区域操作及URL参数传递的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述:vue-router 是WebApp链接路径管理系统。

安装 vue-router

npm install vue-router --save-dev

路由文件 router/index.js:

import Vue from 'vue'                    //引入Vue
import Router from 'vue-router'          //引入vue-router
import Hello from '@/components/Hello'   //引入Hello.vue组件

Vue.use(Pouter)  //全局使用router
export default new Router({
  routes: [
    {                    //每一个链接都是一个对象
      path: '/', 
      name: 'Hello',     //路由名称
      component: Hello   //对应的组件模板
    }
  ]
})

添加文件components/demo.vue:

<template>
    <div class="demo">
        <h4>{{ msg }}</h4>
    </div>
</template>

<script>
    export default {
        name: 'demo',
        data() {
            return {
                 msg: 'Hello I am demo.vue'        
            }
        }
    }
</script>

引入demo组件:

import demo from ‘@components/demo'

配置路由:

{
 path: '/demo',
 name: 'demo'
 component: demo        
}

通过以上操作,我们就有了两个页面,通过改变地址栏可以看到 hello.vue 页面的内容和 demo.vue 页面的内容,接下来我们来实现导航制作。

制作导航:

<router-link to='path'>导航文字</router-link>

path为index.js中配置的path值。

通过以上代码,我们算是了解了vue-router的基本用法,接下来我们认识子菜单的路由方法。

在App.vue页面进行代码编写:

<p>导航 :
      <router-link to="/">首页</router-link> | 
      <router-link to="/dmoe">dmoe页面</router-link> |
      <router-link to="/demo/Cdemo">Cdemo页面</router-link> |
</p>

接下来编写demo页面:

<template>
    <div class="demo">
        <h4>{{ msg }}</h4>

        <router-view class='Cdemo'><router-view>
    </div>
</template>

<script>
    export default {
        name: 'demo',
        data() {
            return {
                 msg: 'Hello I am demo.vue'        
            }
        }
    }
</script>

router-view 给子模版提供插入的位置。

新建Cdemo组件模板:

<template>
  <div class="Cdemo">
    <h4>{{ msg }}</h4>
  </div>
</template>
<script>
export default {
  name: 'Cdemo',
  data () {
    return {
      msg: 'Hello I amCdemo'
    }
  }
}

引入Cdemo:

import Cdemo from '@comonents/Cdemo'

配置路由,由于Cdemo为子路由,在原有的路由配置下加入children字段:

children: {
 {path: '/',component: Cdemo}
 {path: 'Cdemo',component: Cdemo} 
}

子路由在现实中使用还是比较常用的,需要熟练的掌握。

vue-router参数传递:

name传值并被显示在模板里,路由文件中路由配置的name属性在模板中用 $router.name 接收:

<p>{{ $route.name}}</p>

<router-link>标签中的to属性传值:

<router-link :to="{name:xxx,params:{key:value}}">link</router-link>

此处需要注意to要进行绑定。name:路由配置文件中的name值。params:要传递的参数。

编写App.vue页面:

<router-link :to="{name:'Cdemo',params:{username:'momei'}}">Cdemo</router-link>

修改路由配置:

{path:'/Cdemo',name:'Cdemo',component:Cdemo},

完成上面的操作之后在Cdemo.vue中进行接收。

{{$route.params.username}}

额页面输出momei。

多路由区域操作

建立一个新项目,打开App.vue用router-view标签进行布局。

<router-view ></router-view>
<router-view class="fl_nav" name="left"></router-view>
<router-view class="fr_nav" name="right"></router-view>

页面各部分引入路由:

import Hi1 from '@/components/Hi1'
import Hi2 from '@/components/Hi2'

配置路由:

routes: [
    {
      path: '/',
      components: {
        default:Hello,
        left:Hi1,
        right:Hi2
      }
    },{
      path: '/Hi',
      components: {
        default:Hello,
        left:Hi2,
        right:Hi1
      }
    } 
  ]

‘/’根路径,‘/Hi’路径,components中,我们对三个区域定义了现实内容。

Hi1.vue页:

<template>
    <div>
        <h4>{{ msg }}</h4> 
    </div>
</template>
 
<script>
export default {
  name: 'hi1',
  data () {
    return {
      msg: 'I am Hi1 page.'
    }
  }
}
</script>

Hi2.vue页:

<template>
    <div>
        <h4>{{ msg }}</h4>
    </div>
</template>
 
<script>
export default {
  name: 'hi2',
  data () {
    return {
      msg: 'I am Hi2 page.'
    }
  }
}
</script>

在App.vue中配置link:

<router-link to="/">首页</router-link> | 
<router-link to="/hi">Hi页面</router-link> |

vue-router url的参数传递

:冒号的形式传递参数:首先配置index.js路由

{
    path:'/params/:name/:cnblogs',
     component:Params
}

新建Params组件,页面中输出name和cnblogs

<template>
    <div>
        <h2>{{ msg }}</h2>
        <p>网名:{{ $route.params.name}}</p>
        <p>博客:{{ $route.params.cnblogs}}</p>
    </div>
</template>
 
<script>
export default {
  name: 'params',
  data () {
    return {
      msg: 'params page'
    }
  }
}
</script>

App.vue加入<router-link>标签,利用url传值。

<router-link to="/params/墨 眉/http://www.cnblogs.com/momei/">params</router-link> |

 

转载于:https://www.cnblogs.com/momei/p/7255786.html

PS E:\Program Files\teaching-and-learning-vocational-achievement-tlva-vue> npm install npm error code ERESOLVE npm error ERESOLVE could not resolve npm error npm error While resolving: vue-router@4.5.0 npm error Found: vue@2.7.16 npm error node_modules/vue npm error vue@"^2.6.14" from the root project npm error peerOptional vue@"^2 || ^3.2.13" from @vue/babel-preset-app@5.0.8 npm error node_modules/@vue/babel-preset-app npm error @vue/babel-preset-app@"^5.0.8" from @vue/cli-plugin-babel@5.0.8 npm error node_modules/@vue/cli-plugin-babel npm error dev @vue/cli-plugin-babel@"~5.0.0" from the root project npm error 2 more (@vue/babel-preset-jsx, element-ui) npm error npm error Could not resolve dependency: npm error peer vue@"^3.2.0" from vue-router@4.5.0 npm error node_modules/vue-router npm error vue-router@"^4.5.0" from the root project npm error npm error Conflicting peer dependency: vue@3.5.13 npm error node_modules/vue npm error peer vue@"^3.2.0" from vue-router@4.5.0 npm error node_modules/vue-router npm error vue-router@"^4.5.0" from the root project npm error npm error Fix the upstream dependency conflict, or retry npm error this command with --force or --legacy-peer-deps npm error to accept an incorrect (and potentially broken) dependency resolution. npm error npm error npm error For a full report see: npm error C:\Users\asus\AppData\Local\npm-cache\_logs\2025-03-18T02_30_23_225Z-eresolve-report.txt npm error A complete log of this run can be found in: C:\Users\asus\AppData\Local\npm-cache\_logs\2025-03-18T02_30_23_225Z-debug-0.log
03-19
<think>嗯,用户遇到了npm安装依赖时的ERESOLVE错误,需要我来帮忙解决。首先,我得仔细看看错误信息。错误提示是关于vue-router@4.5.0和vue@2.7.16之间的版本冲突。vue-router 4.x需要Vue 3,而用户的项目里用的是Vue 2,这明显不兼容。 那用户的场景可能是一个Vue 2项目,尝试安装vue-router 4,但版本不匹配。这时候用户可能不太清楚Vue 2和Vue 3的生态差异,尤其是配套库的版本问题。他们可能刚接触Vue,或者项目是从旧版本升级过程中遇到了问题。 接下来,我需要考虑用户的需求。他们可能想要正常安装依赖,但不知道如何解决版本冲突。可能需要指导他们降级vue-router到兼容Vue 2的版本,或者升级整个项目到Vue 3。另外,用户可能对npm的参数如--force或--legacy-peer-deps不太了解,需要解释这些选项的风险。 可能的解决方案有几个方向。首先,检查vue-router的版本,确保使用Vue 2对应的vue-router 3.x版本。其次,如果确实需要Vue 3的功能,可能需要升级项目中的Vue版本和相关依赖。另外,临时解决方案是使用--legacy-peer-deps,但需要提醒用户潜在问题。 用户可能还需要知道如何修改package.json中的依赖版本,以及如何正确安装指定版本的包。例如,运行npm install vue-router@3.6.5来安装兼容版本。此外,可能需要检查其他依赖是否也兼容Vue 2,比如Vue CLI插件、Element UI等。 需要确保用户理解版本兼容性的重要性,以及强制安装可能导致的运行时错误。同时,提供清晰的步骤,让用户能够逐步操作,避免进一步的问题。还要考虑用户可能对命令行工具不够熟悉,所以指令要明确具体。</think>这个错误表明存在Vue.js版本与Vue Router的兼容性问题。以下是分步解决方案: $$ \text{Vue版本} \xrightarrow{不兼容} \text{Vue Router版本} $$ **问题根源分析:** 1. 项目当前安装的是Vue 2.x ($vue@2.7.16$) 2. 尝试安装的Vue Router 4.x ($vue-router@4.5.0$) 要求Vue 3.x ($vue@^3.2.0$) 3. 产生版本冲突:$vue@2.7.16 \nRightarrow vue-router@4.5.0$ **解决方案选择:** ▌ 方案一:安装兼容Vue2的Router版本(推荐) ```bash npm uninstall vue-router npm install vue-router@3.6.5 --save ``` *验证公式*: $$ \text{Vue 2.x} + \text{Vue Router 3.x} = \text{兼容组合} $$ ▌ 方案二:升级到Vue3生态 ```bash npm install vue@3.5.13 --save npm install vue-router@4.5.0 --save ``` *注意*:需检查项目中是否使用Vue2专属语法(如`Vue.extend`),需按Vue3规范修改 ▌ 方案三:强制安装(应急方案) ```bash npm install --legacy-peer-deps ``` *风险提示*:此操作会跳过依赖检查,可能导致运行时错误 **版本对照表:** | Vue版本 | Router版本 | 状态 | |---------|------------|------------| | 2.x | 3.x | ✔️ 兼容 | | 3.x | 4.x | ✔️ 兼容 | | 2.x | 4.x | ❌ 冲突 | **附加建议:** 1. 检查`package.json`中其他Vue相关依赖(如vuex、element-ui)的版本要求 2. 使用`npm view vue-router versions --json`查看所有可用版本 3. 推荐使用Vue CLI的官方版本管理工具: ```bash vue upgrade --next ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值