就我的目前所知,Vue中切换组件有两种方式:html
:is
属性绑定)<component v-bind:is="currentTabComponent"></component>
vue
查看官网介绍vue-cli
查看官网示例api
注意:框架
component:is
的组件必须是局部注册 | 全局注册 | 组件初始对象。惊喜:async
keep-alive
更配哟,切换到另外一组件时,能够保存当前组件状态。keep-alive要注意,切换回来的时候,不会再触发created、mounted生命周期ui
详见下述...this
若是经过vue-cli
脚手架初始化的项目,会在src/router/
目录下有一个已建立好的路由配置:url
export default new Router({ routes: [ { path: '/', name: 'HelloWorld', component: HelloWorld } ] })
这里有两个概念,也是在程序中路由使用常常碰到的实例对象this.$router
、this.$route
:
this.$router
:
能够简单的理解为new Router
建立的路由实例,包含了全部路由(route
)的配置信息。
this.$route
:
能够简单的理解为routes
中的当前所在路由的全部配置信息,如path
、params
、query
、name
...
指定路由切换的方式有两种,二选一便可:
to
属性绑定字符串路径:<router-link to="/path"></router-link>
或
:to
动态绑定route
对象:<router-link :to="{ path:'/path' }"></router-link>
注意:
route
对象中配置了params
属性,则目标跳转路径不能经过path
指定,而要经过路由配置中的name
指定,示例:to="{name:'HelloWorld',params:{id:'1234'}}"
。不爽之处:
router-link
方法切换路由,若是想在该连接上绑定其它事件,不能直接经过@click
,而须要@click.native
。在程序中进行路由跳转的方式和HTML
中差很少,只须要在须要跳转的位置,使用this.$router.push('/path')
或
this.$router.push({ path:'/path' })
便可。
组件比较挑食,在某些状况下,我是禁止进入你进入个人家门的,怎么禁止呢?
beforeRouteEnter(to,from,next){ if(...){ ... next(false); //不准进; } }
component:is
经过该方法进行组件切换的,不是Url的变更,不会触发路由生命周期;
'/user/:id'
动态路径参数的变更,不会触发beforeRouteEnter
生命周期,能够经过beforeRouteUpdate
来监听变化。
Hash模式是指路由配置中的path
不是进行页面的跳转,而是经过#
链接的,框架内部处理的组件切换。
History模式,没有#
,URL显示与正常的URL同样,须要后台配合一些配置项(我的没怎么用过(^_^))。