使用5+2:
1下载版本3.6.5(Vue3对应版本4.X)
npm add [email protected]
2引入
import VueRouter from 'vue-router'
3安装注册
Vue.use(VueRouter)
4创建路由对象
const router=new VueRouter()
5将路由对象注入到Vue实例中,建立关联
new Vue({
render:h=>h(App),
router
}).$mount('#app')
2个核心步骤:
1创建需要的组件(src下views目录下),配置路由规则 main.js
new VueRouter({routes:[{path:'/xxx',component:xx},{}]})
注:Find.vue报错因为find是一个单词,加name, export default{name:"FindMusic"}
2配置导航,配置路由出口,路径匹配的组件显示的位置
页面组件 src/views文件夹
复用组件 src/components文件夹
将main.js中路由模块抽离出来。src/router/index.js @直接指代src,便于写绝对路径
引入三个子网页、Vue、VueRouter
App.vue router-link标签取代a标签,to取代href,默认提供高亮类名 本质还是a标签
router-link-active模糊匹配(用得多)to="/my"可匹配/my、/my/a、/my/b
router-link-exact-active精确匹配 to="/my"仅可匹配/my
VueRouter里面linkActiveClass:'xxx',linkEXactiveActiveClass:'xxx' 直接敲link
查询参数传参 to="/path?参数名=值"
对应页面组件接收传递过来的值{{$route.query.参数名 }}
1配置动态路由path:'/searsh/:words?'(?为可选符,按需加)
2配置导航链接to="/path/参数值"
3对应页面组件接收传递过来的值{{$route.params.参数名 }}
new VueRouter({routes:[{path:'/',redirect:'/xxx'},{}]})
new VueRouter({routes:[.......{path:'*',component:NotFind},{}]})
hash路由(默认).../#/...(#很奇怪) mode:"hash"
history路由(常用) new VueRouter({routes,mode:"history"})
点击按钮跳转页面:编程式导航:用js代码来进行跳转
1path路径跳转 绑定的事件函数内this.$router.push('path')
2name命名路由跳转(路径较长时用此写法方便) new VueRouter({routes:[{name:'xxx',path:'/',redirect:'/xxx'},{}]})
绑定的事件函数内this.$router.push({name:'xxx'})
1path路径跳转传参
this.$router.push('/path?key=${{this.inpValue}}&......') 双向绑定的数据传入
this.$router.push({
path:'/path',
query:{
key=this.inpValue
}
})
动态路由传参
this.$router.push('/path/参数名')
this.$router.push({
path:'/path/参数名'
})
完整写法(更适合传参)
this.$route.push({
name:'xxx',
query:{参数名:'参数值'},
params:{参数名:'参数值'}
})