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下:float属性会影响offsetTop的取值
Dec 22 Javascript
Javascript学习笔记4 Eval函数
Jan 11 Javascript
JavaScript 创建运动框架的实现代码
May 08 Javascript
浅谈JavaScript function函数种类
Dec 29 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
Dec 01 Javascript
纯js代码实现简单计算器
Dec 02 Javascript
location.hash保存页面状态的技巧
Apr 28 Javascript
jquery分隔Url的param方法(推荐)
May 25 Javascript
jquery实现input框获取焦点的简单实例
Jan 26 Javascript
Vue 2.x教程之基础API
Mar 06 Javascript
微信小程序实现带刻度尺滑块功能
Mar 29 Javascript
create-react-app构建项目慢的解决方法
Mar 14 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 日常开发小技巧
2009/09/23 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
封装好的省市地区联动控件附下载
2007/08/13 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
2017/09/03 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
python Event事件、进程池与线程池、协程解析
2019/10/25 Python
python 实现兔子生兔子示例
2019/11/21 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
python 如何调用远程接口
2020/09/11 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
法人授权委托书范本
2014/04/04 职场文书
雷人标语集锦
2014/06/19 职场文书
幼儿园中班区域活动总结
2014/07/09 职场文书
应聘护士求职信
2014/07/21 职场文书
新郎接新娘保证书
2015/05/08 职场文书
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS