简单说说如何使用vue-router插件的方法


Posted in Javascript onApril 08, 2019

1 安装

首先,通过 npm 安装 vue-router 插件:

npm install --save vue-router

安装的插件版本是:vue-router@3.0.2

2 用法

2.1 新建 vue 组件

在 router 目录中,新建  views 目录,然后新建两个 vue 组件(一个页面就对应一个组件)。

index.vue:

<template>
  <div>首页</div>
</template>

<script>
  export default {
    name: "index.vue"
  }
</script>

<style scoped>

</style>

about.vue:

<template>
  <div>关于我们</div>
</template>

<script>
  export default {
    name: "about"
  }
</script>

<style scoped>

</style>

2.2 修改 main.js

// 引入 Vue 框架
import Vue from 'vue'
import VueRouter from 'vue-router';
//引入 hello.vue 组件
import Hello from './hello.vue'

//加载 vue-router 插件
Vue.use(VueRouter);

/*定义路由匹配表*/
const Routers = [{
  path: '/index',
  component: (resolve) => require(['./router/views/index.vue'], resolve)
},
  {
    path: '/about',
    component: (resolve) => require(['./router/views/about.vue'], resolve)
  }]

//路由配置
const RouterConfig = {
  //使用 HTML5 的 History 路由模式
  mode: 'history',
  routes: Routers
};
//路由实例
const router = new VueRouter(RouterConfig);

 

new Vue({
  el: '#app',
  router: router,
  render: h => h(Hello)
})

步骤如下:

  1. 加载 vue-router 插件。
  2. 定义路由匹配表,每个路由映射到一个组件。
  3. 配置路由。
  4. 新建路由实例。
  5. 在 Vue 实例中引用路由实例。

Routers 中的每一项,都有以下这些属性:

属性 说明
path 匹配路径
component 需要映射的组件

webpack 把每一个路由都打包成一个 js 文件。只有在请求该页面时,才会加载这个 js 文件,即按需加载。

如果需要一次性加载,那么可以这样配置:

{
    path: '/index',
    component: require('./router/views/index.vue')
}

配置了异步路由之后,编译出的页面 js 被称为 chunk,它们默认的命名格式为 0.main.js、1.main.js 等等。

可以在 webpack.config.js 中配置这个 chunk 的命名格式:

output: {
    ...
    //chunk 文件名
    chunkFilename:'[name].chunk.js'
  }

刷新页面之后,就会在调试模式看到 chunk 名称已经被改变咯:

 简单说说如何使用vue-router插件的方法

在 RouterConfig 中,我们使用了  HTML5 的 History 路由模式,即通过 "/" 来设置路径。如果不配置 mode,RouterConfig 默认是使用 “#” (锚点)来匹配路径。

注意: 生产环境中,服务端必须将所有路由都指向同一个 HTML,或设置 404 页面为这个 HTML 页面,否则刷新页面就会出现 404 错误。

2.3 配置 chunk 样式

使用了 chunk 之后,每个 *.vue 文件中所定义的样式,默认通过 Javascript 来动态创建 <style> 标签来写入样式。我们可以通过配置,把这些文件中的样式都统一写入 main.css,修改 webpack.config.js :

plugins: [//插件
    new ExtractTextPlugin({
      filename: '[name].css',
      allChunks: true
    }),
   ...
  ]

2.4 配置 History 路由指令

在 package.json 中,修改 dev 指令:

"dev": "webpack-dev-server --open --history-api-fallback --config webpack.config.js",

2.5 挂载路由组件

在根实例,挂载路由组件:

<template>
  <div>
    <router-view></router-view>
  </div>
</template>

运行时,<router-view> 会根据当前所配置的路由规则,渲染出不同的页面组件。主界面中的公共部分,比如侧边栏、导航栏以及底部版权信息栏,可以直接定义在根目录,与<router-view> 同级。这样,当切换路由时,切换的只是<router-view> 挂载的组件,其它内容不会变化。

2.6 运行

执行 npm run dev 之后,在浏览器地址栏输入不同的 URL ,就会看到挂载的不同组件信息。
http://localhost:8080/index:

简单说说如何使用vue-router插件的方法

http://localhost:8080/about:

 简单说说如何使用vue-router插件的方法

2.7 重定向

我们可以在路由配置表中,配置一项功能,当访问的页面不存在时,重定向到首页:

const Routers = [
...
  {//当访问的页面不存在时,重定向到首页
    path: '*',
    redirect: '/index'
  }
]

这样,即使只访问 http://localhost:8080/,也会自动跳转到首页啦 O(∩_∩)O~

2.8 带参数的路由

路由 path 可以带参数。比如文章 URL,路由的前半部分是固定的,后半部分是动态参数,形如:/article/xxx。它们会被路由到同一个页面,在该页面可以获取 xxx 参数,然后根据这个参数来请求数据。

首先在 main.js 中配置带参数的路由规则:

const Routers = [{
 ...
  {
    path: '/article/:id',
    component: (resolve) => require(['./router/views/article.vue'], resolve)
  }
  ...
]

然后在 router/views 下新建一个 article.vue :

<template>
  <div>{{$route.params.id}}</div>
</template>

<script>
  export default {
    name: "article",
    mounted() {
      console.log(this.$route.params.id);
    }
  }
</script>

<style scoped>

</style>

运行 npm run dev 后,在浏览器地址栏中输入 http://localhost:8080/article/123,就能访问到 article.vue 组件咯:

 简单说说如何使用vue-router插件的方法

注意: 因为配置的参数路由规则是 /article/:id,即必须带 id 参数,否则是会重定向会 /index 的哦O(∩_∩)O~

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

Javascript 相关文章推荐
表单填写时用回车代替TAB的实现方法
Oct 09 Javascript
javascript事件问题
Sep 05 Javascript
jquery等待效果示例
May 01 Javascript
Javascript中的作用域和上下文深入理解
Jul 03 Javascript
javascript合并表格单元格实例代码
Jan 03 Javascript
学习JavaScript图片预加载模块
Nov 07 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
Jul 02 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
Aug 31 Javascript
node微信开发之获取access_token+自定义菜单
Mar 17 Javascript
vue微信分享的实现(在当前页面分享其他页面)
Apr 16 Javascript
vue路由传参页面刷新参数丢失问题解决方案
Oct 08 Javascript
JS事件循环机制event loop宏任务微任务原理解析
Aug 04 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
Apr 08 #Javascript
纯javascript实现选择框的全选与反选功能
Apr 08 #Javascript
详解小程序如何避免多次点击,重复触发事件
Apr 08 #Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
Apr 08 #Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
Apr 08 #Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
Apr 08 #Javascript
微信小程序视图控件与bindtap之间的问题的解决
Apr 08 #Javascript
You might like
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
删除数组元素实用的PHP数组函数
2008/08/18 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
Python中的index()方法使用教程
2015/05/18 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
巴基斯坦购物网站:Goto
2019/03/11 全球购物
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
static关键字的用法
2013/10/07 面试题
大学生就业推荐信范文
2013/11/29 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python
python中mongodb包操作数据库
2022/04/19 Python