vue-router路由基础入门
2017-10-12 09:09
921 查看
首先使用脚手架工具vue-cli快速创建vue项目时,可以直接安装vue-router。
项目创建完成后,项目文件src/router/index.js是设置路由的核心文件。其中引入Vue、vue-router和组件,数组routes来配置路由。
HelloWorld组件:
TestRouter组件:
App组件:
其中设置了俩个路由,内容在App.vue中的<router-view>组件来渲染,然后App组件挂载到index.html页面的id为app的div上。
此时运行程序,浏览器显示如下:
当访问http://localhost:8080/#/时,<router-view>渲染的是HelloWorld组件,所以页面显示Hello World!
当访问http://localhost:8080/#/test时,<router-view>渲染的是TestRouter组件,所以页面显示Testing Router!
现在已经可以通过修改地址来访问不同的页面内容了,那能不能通过导航链接的方式来访问不同的页面内容呢?
<router-link>组件就是为其而生的,通过to属性指定目标地址。
在App组件中添加
<router-link to="/">hello</router-link>
<router-link to="/test">test</router-link>
实现路由的切换。浏览器展示如下:
<router-link>被渲染成了带有正确链接的a标签,目标路由成功激活后,a链接自动添加了表示激活的css类名。
router-link-active是<router-link>默认激活class类名的默认值,router-link-exact-active是<router-link>默认精确激活class类名的默认值。可以通过设置router-link-exact-active的样式来呈现选中状态下的路由样式。
路由的简单思路基本实现了,但是其中还是有几个问题先提出来,后续来解决:
1、http://localhost:8080/#/test地址中为什么会有#?
2、设置路由时name有什么作用,其实我们根本没用到?
3、<router-link>中的to属性是否有其他的书写形式?如果目标链接上有参数时如何书写?
本文参考 技术胖博客 vue-router官网
项目创建完成后,项目文件src/router/index.js是设置路由的核心文件。其中引入Vue、vue-router和组件,数组routes来配置路由。
import Vue from 'vue' import Router from 'vue-router' import HelloWorld from '@/components/HelloWorld' import TestRouter from '@/components/TestRouter' Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'Hello', component: HelloWorld }, { path: '/test', name: 'test', component: TestRouter } ] })
HelloWorld组件:
<template> <div class="hello"> <h1>{{ msg }}</h1> </div> </template> <script> export default { name: 'HelloWorld', data () { return { msg: 'Hello World!' } } } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> h1, h2 { font-weight: normal; } ul { list-style-type: none; padding: 0; } li { display: inline-block; margin: 0 10px; } a { color: #42b983; } </style>
TestRouter组件:
<template> <div class="test"> <h1>{{msg}}</h1> </div> </template> <script type="text/ecmascript-6"> export default { data () { return { msg: 'Testing Router!' } } } </script> <style> </style>
App组件:
<template> <div id="app"> <img src="./assets/logo.png"> <router-view/> </div> </template> <script> export default { name: 'app' } </script> <style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } </style>
其中设置了俩个路由,内容在App.vue中的<router-view>组件来渲染,然后App组件挂载到index.html页面的id为app的div上。
此时运行程序,浏览器显示如下:
当访问http://localhost:8080/#/时,<router-view>渲染的是HelloWorld组件,所以页面显示Hello World!
当访问http://localhost:8080/#/test时,<router-view>渲染的是TestRouter组件,所以页面显示Testing Router!
现在已经可以通过修改地址来访问不同的页面内容了,那能不能通过导航链接的方式来访问不同的页面内容呢?
<router-link>组件就是为其而生的,通过to属性指定目标地址。
在App组件中添加
<router-link to="/">hello</router-link>
<router-link to="/test">test</router-link>
实现路由的切换。浏览器展示如下:
<router-link>被渲染成了带有正确链接的a标签,目标路由成功激活后,a链接自动添加了表示激活的css类名。
router-link-active是<router-link>默认激活class类名的默认值,router-link-exact-active是<router-link>默认精确激活class类名的默认值。可以通过设置router-link-exact-active的样式来呈现选中状态下的路由样式。
路由的简单思路基本实现了,但是其中还是有几个问题先提出来,后续来解决:
1、http://localhost:8080/#/test地址中为什么会有#?
2、设置路由时name有什么作用,其实我们根本没用到?
3、<router-link>中的to属性是否有其他的书写形式?如果目标链接上有参数时如何书写?
本文参考 技术胖博客 vue-router官网
相关文章推荐
- Vue-router路由基础总结(一)
- 路由vue-router基础
- Weex入门教程之10,vue-router 路由
- Vue的路由功能(1)简单路由与vue-router的基础使用(同步/异步组件)
- Vue-router路由基础总结(二)
- Vue的路由功能(1)简单路由与vue-router的基础使用(同步/异步组件)
- Vue的路由功能(1)简单路由与vue-router的基础使用(同步/异步组件)
- vue.js路由vue-router(一)——简单路由基础
- vue-router 路由基础简单介绍
- vue-router路由的基础使用
- Vue的路由功能(1)简单路由与vue-router的基础使用(同步/异步组件)
- vue-router路由的基础使用
- vue-router 路由基础的详解
- vue-router路由的基础使用
- 【vuejs路由】vuejs 路由基础入门实战操作详细指南
- vue从入门到进阶:vue-router路由功能(九)
- vue基础动态路由,嵌套路由router-link切换
- vue成长之路+实战+Vue2+VueRouter2+webpack(一)vue-router路由入门
- Vue中的 this.$router.push() 参数获取 (通过路由传参)
- VUE 入门基础(6)