简单说说如何使用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 相关文章推荐
你的 mixin 真的兼容 ECMAScript 5 吗?
Apr 11 Javascript
你必须知道的JavaScript 变量命名规则详解
May 07 Javascript
关于删除时的提示处理(确定删除吗)
Nov 03 Javascript
解析URI与URL之间的区别与联系
Nov 22 Javascript
js 处理数组重复元素示例代码
Dec 27 Javascript
JavaScript设置body高度为浏览器高度的方法
Feb 09 Javascript
防止Node.js中错误导致进程阻塞的办法
Aug 11 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
Sep 08 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
Sep 21 Javascript
详解Ubuntu安装angular-cli遇到的坑
Sep 08 Javascript
javascript的delete运算符知识点总结
Nov 19 Javascript
js利用拖放实现添加删除
Aug 27 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
PHP mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
PHP中如何调用webservice的实例参考
2013/04/25 PHP
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
json 定义
2008/06/10 Javascript
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
2016/10/27 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
微信小程序开发探究
2016/12/27 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
Python中强大的命令行库click入门教程
2016/12/26 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
python3个性签名设计实现代码
2018/06/19 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
python判断一个数是否能被另一个整数整除的实例
2018/12/12 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
Python使用Pygame绘制时钟
2020/11/29 Python
建筑工程技术应届生求职信
2013/11/17 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP