Vue-Router基础学习笔记(小结)


Posted in Javascript onOctober 15, 2018

vue-router是一个插件包,要先用npm进行安装

1、安装vue-router

npm install vue-router
yarn add vue-router

2、引入注册vue-router

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

3、链接跳转

<router-link to='/home'></router-link>  //你可以在template中使用它实现一个可点击跳转到home.vue的 a 标签
this.$router.push('/about');  //在methods方法中跳转到about页面
this.$router.go('-1');  //在js中返回上一个页面

4、经常用到

this.$route.params.name  //在js中获取路由的参数
.router-link-active  //当前选中路由的匹配样式
$route.query  //获取查询参数
$route.hash  //哈希

5、路由配置

export default new Router({
  routes:[
    {        //第一层是顶层路由,顶层路由中的router-view中显示被router-link选中的子路由
      path:'/',
      name:'Home',
      component:'Home'
    },{
      path:'/user/:id',  //www.xxx.com/user/cai
      name:'user',  //:id是动态路径参数
      component:'user',
      children:[
        {
          path:'userInfo',  //www.xxx.com/user/cai/userInfo
          component:'userInfo'  //子路由将渲染到父组件的router-view中
        },{
          path:'posts',
          component:'posts'
        }
      ]
    }
  ]
})
Vue.use(Router);

6、路由参数方式变化时,重新发出请求并更新数据

//比如:用户一切换到用户二, 路由参数改变了,但组件是同一个,会被复用
// 从 /user/cai 切到 /user/wan

在User组件中:

//方法1:
  watch:{
    '$route'(to,from){
      //做点什么,比如:更新数据
    }
  }
//方法二:
  beforeRouteUpdate(to,from,next){
    //同上
  }

7、编程式导航

router.push({name:'user',params:{userId:'123'}})  //命名路由导航到user组件
<router-link :to='{name:'user',params:{userId:'123'}}'>用户</router-link>

router.push({path:'register',query:{plan:'cai'}})  //query查询参数
router.push({path:`/user/${userId}`})  //query

router.push(location,onComplete,onAbort)
router.replace()  //替换
router.go(-1)

8、命名视图

//当前组件中只有一个 router-view 时,子组件默认渲染到这里

<router-view class='default'></router-view>
<router-view class='a' name='left'></router-view>
<router-view class='b' name='main'></router-view>

routes:[
  {
    path:'/',
    components:{
      default:header,
      left:nav,
      main:content  //content组件会渲染在name为main的router-view中
    }
  }
]
//嵌套命名视图就是:子路由+命名视图

9、重定向与别名

const router = new VueRouter({
  routes: [
    { path: '/a', redirect: '/b' },
    { path: '/b', redirect: { name: 'foo' }},  //命名路由方式
    { path: '/c', redirect: to => {  //动态返回重定向目标
     // 方法接收 目标路由 作为参数
     // return 重定向的 字符串路径/路径对象
    }}
  ]
})

const router = new VueRouter({
  routes: [
    { path: '/a', component: A, alias: '/b' }  //别名:当访问 /b 时也会使用A组件
  ]
})

10、路由组件传参

const User={
  props:['id'],
  template:`<div>{{id}}</div>`
}
const router = new VueRouter({
  routes: [
    { path: '/user/:id', component: User, props: true },
  
    // 对于包含命名视图的路由,你必须分别为每个命名视图添加 `props` 选项:
    {
      path: '/user/:id',
      components: { default: User, sidebar: Sidebar },
      props: { default: true, sidebar: false }
    }
  ]
})

11、HTML5的History模式下服务端配置

const router = new VueRouter({
  mode: 'history',
  routes: [
    { path: '*', component: 404}
  ]
})

后端配置:

//Nginx
  location / {
   try_files $uri $uri/ /index.html;
  }
  
//Apache
  <IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /
   RewriteRule ^index\.html$ - [L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule . /index.html [L]
  </IfModule>
//Node.js
  const http = require('http')
  const fs = require('fs')
  const httpPort = 80
  http.createServer((req, res) => {
   fs.readFile('index.htm', 'utf-8', (err, content) => {
    if (err) {
     console.log('无法打开index.htm页面.')
    }
    res.writeHead(200, {
     'Content-Type': 'text/html; charset=utf-8'
    })
    res.end(content)
   })
  }).listen(httpPort, () => {
   console.log('打开: http://localhost:%s', httpPort)
  })
  
//使用了Node.js的Express
  [使用中间件][1]

解耦合

routes: [
  { path: '/user/:id', component: User, props: true },
 
 
  // 对于包含命名视图的路由,你必须分别为每个命名视图添加 `props` 选项:
  {
   path: '/user/:id',
   components: { default: User, sidebar: Sidebar },
   props: { default: true, sidebar: false }
  }
 
 ]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE DOM实现存在的部分问题及解决方法
Jul 25 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
Dec 09 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
May 29 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
Jun 16 Javascript
JavaScript-html标题滚动效果的简单实现
Sep 08 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
Dec 02 Javascript
jQuery Position方法使用和兼容性
Aug 23 jQuery
基于JavaScript实现抽奖系统
Jan 16 Javascript
vue计算属性get和set用法示例
Feb 08 Javascript
实用Javascript调试技巧分享(小结)
Jun 18 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
Nov 06 Javascript
vue安装和使用scss及sass与scss的区别详解
Oct 15 #Javascript
ndm:NPM的桌面GUI应用程序
Oct 15 #Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
Oct 15 #Javascript
vue+axios+promise实际开发用法详解
Oct 15 #Javascript
javascript中关于类型判断的一些疑惑小结
Oct 14 #Javascript
JS面试题大坑之隐式类型转换实例代码
Oct 14 #Javascript
JS中appendChild追加子节点无效的解决方法
Oct 14 #Javascript
You might like
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
TP3.2框架分页相关实现方法分析
2020/06/03 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
浏览器兼容console对象的简要解决方案分享
2013/10/24 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
js+div+css下拉导航菜单完整代码分享
2016/12/28 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
JavaScript创建对象的四种常用模式实例分析
2019/01/11 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
python实现2014火车票查询代码分享
2014/01/10 Python
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
python轮询机制控制led实例
2020/05/03 Python
Python抓包并解析json爬虫的完整实例代码
2020/11/03 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
python源文件的字符编码知识点详解
2021/03/04 Python
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
两道JAVA笔试题
2016/09/14 面试题
应届大学生自荐信格式
2013/09/21 职场文书
年度考核自我评价
2014/01/25 职场文书
应届毕业生如何写求职信
2014/02/16 职场文书
置业顾问岗位职责
2014/03/02 职场文书
销售会计岗位职责
2014/03/15 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
python 常用的异步框架汇总整理
2021/06/18 Python