Vue2全家桶之二:vue

您所在的位置:网站首页 超链接跳转的对象应该是什么类型的文件 Vue2全家桶之二:vue

Vue2全家桶之二:vue

2024-07-16 07:35| 来源: 网络整理| 查看: 265

这是我第5篇简书。

  由于Vue在开发时对路由支持的不足,于是官方补充了vue-router插件。vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统的页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,实际上就是组件的切换。路由就是SPA(单页应用)的路径管理器。再通俗的说,vue-router就是我们WebApp的链接路径管理系统。   有的小伙伴会有疑虑,为什么我们不能像原来一样直接用a标签编写链接呢?因为我们一般用Vue做的都是单页应用,只有一个主页面index.html,所以你写的标签是不起作用的,要使用vue-router来进行管理。

一、安装

如果你用vue-cli脚手架来搭建项目,配置过程会选择是否用到路由(详细见我上一篇简书),如果选择y,后面下载依赖会自动下载vue-router。 这里还是说一下安装:npm install vue-router

二、创建组件

如果在一个模块化工程中使用它,必须要通过 Vue.use() 明确地安装路由功能,用vue-cli生产了我们的项目结构,src文件目录下会有一个router文件夹,此处就是编写路由组件的地方。在src/router/index.js,这个文件就是路由的核心文件:

import Vue from 'vue' //引入Vue import Router from 'vue-router' //引入vue-router import Hello from '@/components/Hello' //引入根目录下的Hello.vue组件 Vue.use(Router) //Vue全局使用Router export default new Router({ routes: [ //配置路由,这里是个数组 { //每一个链接都是一个对象 path: '/', //链接路径 name: 'Hello', //路由名称, component: Hello //对应的组件模板 },{ path:'/hi', component:Hi, children:[ //子路由,嵌套路由 (此处偷个懒,免得单独再列一点) {path:'/',component:Hi}, {path:'hi1',component:Hi1}, {path:'hi2',component:Hi2}, ] } ] }) 三、router-link制作导航

1.router-link 是一个组件,它默认会被渲染成一个带有链接的a标签,通过to属性指定链接地址。 注意:被选中的router-link将自动添加一个class属性值.router-link-active。

[text] to:导航路径,要填写的是你在router/index.js文件里配置的path值,如果要导航到默认首页,只需要写成 to="/" , [text] :就是我们要显示给用户的导航名称。

2.router-view 用于渲染匹配到的组件。 ①.可以给router-view组件设置transition过渡(Vue2.0 Transition常见用法全解惑)。

css过渡类名: 组件过渡过程中,会有四个CSS类名进行切换,这四个类名与transition的name属性有关,比如name="fade",会有如下四个CSS类名:

fade-enter:进入过渡的开始状态,元素被插入时生效,只应用一帧后立刻删除。 fade-enter-active:进入过渡的结束状态,元素被插入时就生效,在过渡过程完成后移除。 fade-leave:离开过渡的开始状态,元素被删除时触发,只应用一帧后立刻删除。 fade-leave-active:离开过渡的结束状态,元素被删除时生效,离开过渡完成后被删除。

从上面四个类名可以看出,fade-enter-active和fade-leave-active在整个进入或离开过程中都有效,所以CSS的transition属性在这两个类下进行设置。

过渡模式mode:

in-out(mode默认in-out模式):新元素先进入过渡,完成之后当前元素过渡离开。 out-in:当前元素先进行过渡离开,离开完成后新元素过渡进入。

②.还可以配合使用,keep-alive可以缓存数据,这样不至于重新渲染路由组件的时候,之前那个路由组件的数据被清除了。比如对当前的路由组件a进行了一些DOM操作之后,点击进入另一个路由组件b,再回到路由组件a的时候之前的DOM操作还保存在,如果不加keep-alive再回到路由组件a时,之前的DOM操作就没有了,得重新进行。如果你的应用里有一个购物车组件,就需要用到keep-alive。

四、动态路由匹配

我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件。 调用router的map方法映射路由,每条路由以key-value的形式存在,key是路径,value是组件。例如:'/home'是一条路由的key,它表示路径;{component: Home}则表示该条路由映射的组件:

router.map({ '/home': { component: Home }, '/about': { component: About } })

例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染。那么,我们可以在 vue-router 的路由路径中使用『动态路径参数』来达到这个效果。

const User = { template: 'User' } const router = new VueRouter({ routes: [ // 动态路径参数 以冒号开头 { path: '/user/:id', component: User } ] })

例如: /user/foo 和 /user/bar 都将映射到相同的路由。 一个『路径参数』使用冒号 : 标记。当匹配到一个路由时,参数值会被设置到this.$route.params,可以在每个组件内使用。 你可以在一个路由中设置多段『路径参数』,对应的值都会设置到 $route.params 中。例如:

五、vue-router参数传递 1.用name传值(不推荐) 2.通过 标签中的to传参 东西里 name:就是我们在路由配置文件中起的name值。 另:命名路由就是用一个名称来标识一个路由,在定义路由的时候设置一个name属性即可。在router-link中也可以用路由的名字来链接到一个路由。 params:就是我们要传的参数,它也是对象形势,在对象里可以传递多个值。 最后用$route.params.username进行接收. 3.用url传参

上面第五点也有提到。 :冒号的形式传递参数 (1).在router路由配置文件里以冒号的形式设置参数

{ path:'/params/:newsId/:userName, component:Params }

(2).组件形式,在src/components目录下建立我们params.vue组件。 我们在页面里输出了url传递的参数。

{{ msg }}

新闻ID:{{ $route.params.newsId}}

用户名:{{ $route.params.userName}}

export default { name: 'params', data () { return { msg: 'params page' } } }

(3).标签path路径中传值



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3