深入理解Vue-cli4路由配置

目录
  • 前言-vue路由
  • 一、最基本路由配置
    • 1.配置router/index.js
    • 2.配置App.vue
  • 二、路由懒加载技术
  • 三、路由嵌套
  • 四、动态路由
    • 1.动态路由配置
    • 2.动态路由传参
  • 总结

前言-vue路由

Vue-router是Vue官方的路由插件,与Vue.js深度集成.
在使用了vue-router的单页面应用中,url的改变会引起组件的切换,从而达到页面切换的效果,所以如何让URL按照我们的意愿去改变和URL改变后页面去向何处是配置vue-router的两大问题.

[SPA网页]前端渲染使得单页面富应用的SPA页面得以实现,整个网页只有一个HTML页面,静态资源服务器里只有一套HTML & CSS,甚至只有一套JS.

[富应用] 得以实现依赖于发送至服务端的一个新的请求URL从服务器中获取到资源后,前端路由会负责分配资源给页面的相应组件;

[单页面] 的实现需要url在前端改变,前端路由出现后,前端路由会根据router的监听,从映射关系里找到需要改变的部分,抽取分配新的资源,并仅仅重新渲染需要改变的部分;

一、最基本路由配置

首先得安装vue-router,怎么装就不说了…
在我们安装vue-router成功后,项目文件的src内会出现一个"router"文件夹,这个文件夹内会有一个index.js,对router的配置就主要在这里完成了.

打开它,然后在 routes 数组中进行配置,一个页面的路由在这个数组里被集合为一个对象,其内部包括path和component等属性,对应着URL怎么样改变会做出怎样的反应;

1.配置router/index.js

//这是在router/index.js,全部;
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'

const routes = [
   //在此处配置路由;
]
//在router4中使用createRouter替代了new VueRouter;
const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
  //在此处引入所有页面的路由配置数组routes;
})

export default router
//导出包含着所有路由配置的router对象,
//在main.js中注入后供全局使用;

component属性:值为一个页面,这个页面控件需要提前引入.

path属性:规定URL内出现什么时跳转到component属性对应的页面.

//这是在router/index.js,末尾部分略去;
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'
import News from '../views/News.vue'
//引入3个页面控件;
const routes = [
    {
        path: '/',  /* 规定初始URL对应的页面 */
        name: 'Home',
        component: Home   /* 规定默认在Home页面 */
   },
   {
        path: '/about',/* 规定URL新增段为/about时跳转 */
        name: 'About',
        component: About  /* 跳转至About */
   },
   {
        path: '/news', /* 规定URL新增段为/news时跳转 */
        name: "News",
        component: News  /* 跳转至News */
   },
]

2.配置App.vue

前面规定好了url改变为不同字符时会怎样进行跳转,现在得想想怎么才能让URL改变了,以我们的方式改变.
因为只有App.vue会被render渲染,大家一开始看到的和仅仅能操作的都只有App.vue,所以我们对URL改变方式的规定只能在这里进行.

认识两种新的标签,他们已经在全局被注册过了.

  <router-link to="要在URL上添加的字符">XXX</router-link>
  //<router-link>会被渲染成为<a>;
  <router-view />
  //这俩需要组合使用;

App.vue里所有的页面跳转都由< router-link>通过改变URL进行驱动.

< router-view>是一个占位标签,它规定了router-link标签需要显示在什么位置
,总之你删了它,router-link就显示不了了(那都不重要,我们先说路由吧…).

<!-- 这是在App.vue中 -->
<template>
  <div id="nav">
  <!-- to属性规定如何改变URL; -->
  <!-- Tag属性规定router-link标签需要被渲染成什么HTML元素; -->
    <router-link to="/" Tag="a">Home页面</router-link> |
    <router-link to="/about" Tag="a">About页面</router-link> |
    <router-link to="/news" Tag="a">News页面</router-link> |
    <router-link to="/login" Tag="a">Login</router-link>
  </div>
  <router-view />
</template>

然后你就可以npm run serve跑起你的项目来看看了;

可以看到依据Tag属性的规定是多了4个a标签的,我们点进去News看下,

URL依据router-link的to属性的值改变了,页面正确的跳转.
到此基本的路由配置就完成了.

二、路由懒加载技术

把不同的路由对应的组件分离,仅当某路由被触发时才会加载对应组件,会更加高效,并且第三方 & 底层支撑 & 公共App 除外, 其他的Vue页面组件都在服务器,随用随请求,确保对页面的影响最小.

其实就是改变一下router/index.js里对各个组件的引入方法啦…
通过箭头函数的方法进行.

const routes = [
  {
    path: '/about',
    name: 'About',
    component: () => import('../views/About.vue')
    //直接在这里引入了About并且赋值给了component;
  },
  {
    path: '/news',
    name: "News",
    component: () => import("../views/News.vue")
        //直接在这里引入了About并且赋值给了component;
  },
  {
    path: '/login',
    name: 'Login',
    component: () => import('../views/Login.vue')
        //直接在这里引入了About并且赋值给了component;
  },
]

三、路由嵌套

我们的子页面不能没有链接吧? 用户通过App.vue进入了一个子页面,还应该有下属的链接将他们引导到其他页面,这需要路由嵌套技术.

说简单些,就是在父页面的路由里规定子页面的路由,比如在News.vue的路由里规定NewsChild-1.vue的路由.

//这是缩减过的router/index.js;
const routes = [
  {
    path: '/news',
    name: "News",
    component: () => import("../views/News.vue"),
    children: [
      {
        path: 'NewsChild-1',
        //子路由不用在前面写"/"和上一层路径,
        //但其实解析是是会加上的;
        //规定URL出现/News/NewsChild-1时,
        //跳转至component对应的页面;
        component: () => import("../views/NewsChild-1"),
      }
    ]
  },
]

这样就规定了在News页面出现URL改变后应当进行的操作.
自然,我们还得规定News页面下要怎样改变URL,进入News.vue进行操作.

<!-- 这是News.vue; -->
<template>
  <h1>News</h1>
  //规定在被触发时URL增加/News/NewsChild-1;
  <router-link to="/News/NewsChild-1">NewsChild-1</router-link>
  <router-view></router-view>
</template>

然后来看下渲染出的页面吧:

点击链接NewsChild-1:

URL变为/News/NewsChild-1,依据router-link的to属性值.
大可再在children数组里多嵌套几个页面组件,如法炮制即可.

四、动态路由

很多时候页面需要跳转到哪里是不能由我们写程序的来确定的,这就需要程序按照需求去自己决定,让路由得以动态改变.

1.动态路由配置

说简单些,我们不把[to需要增加的URL]和[path判定跳转的URL]写死就好了,把URL里需要经常变化的部分,利用v-bind与export default中的data数据互通起来,让URL跟随数据变动.

//这是在router/index.js
import { createRouter, createWebHashHistory } from 'vue-router';

const routes = [
  {
    path: '/',
    name: 'Home',
    component: () => import('../views/Home.vue'),
  },
  {
  //我们在此处也不要把path的值写死;
    path: '/user/:userId',
    name: 'User',
    component: () => import('../views/User.vue'),
  }
];
<!-- 这是在App.vue里 -->
<template>
  <div id="app">
    <router-link to="/">Home</router-link> |
    <router-link to="/about">About</router-link> |
    <!-- 在此处使用v-bind将userId数据调用; -->
    <!-- 将/user/作为字符串拼接给userId -->
    <router-link v-bind:to="'/user/' + userId">用户</router-link>
  </div>
  <router-view />
</template>
<script>
export default {
  name: "app",
  data() {
    return {
    //在此处设定userId的数据为baixia;
      userId: "baixia",
    };
  },
};
</script>

来看下效果:

接下来点击用户:

URL成功拼接了了data里的数据UserId,即baixia.

2.动态路由传参

动态路由也是Vue传递数据的方式之一,利用$route来进行Vue页面组件(即vue文件)间的通信.
先来认识两个变量:
$router: index.js末尾利用createRouter创建的路由对象
$route: 当前正处于活跃状态下的路由对象,其中有一个params属性,全称parameters,利用它,可以取到我们URL里使用v-bind传的值.

比如User.vue需要获取App.vue的data中的userId数据:

<!-- 在App.vue中(发方) -->
<template>
  <div id="app">
    <router-link v-bind:to="'/user/' + userId">用户</router-link>
  </div>
  <router-view />
</template>
<script>
export default {
  name: "app",
  data() {
    return {
      userId: "baixia",
    };
  },
};
</script>
//在user.vue中(收方)
export default {
    name:"user",
    computed: {
        userId() {
            return this.$router.params.userId
//将this.$router.param.userId的值,
//即App.vue的router-link里传入的userId返回,
//以作为计算属性userID()的值
        }
    }
}

User.vue里为了获取用户信息而使用的params,其获取哪个属性依赖于index.js里的path,的如果path:'/user/:abc',那么User.vue的< script>里应当为:

export default {
    name:"user",
        computed: {
            userId() {
            //这里也应为获取abc属性;
                return this.$router.params.abc
           }
        }
}

总结

昨天拿到通知,说咱HTML5设计大赛拿了一等奖…
就挺离谱的,做的算是中规中矩吧个人感觉.这几天要赶赶Vue的进度了.

到此这篇关于深入理解Vue-cli4路由配置的文章就介绍到这了,更多相关Vue-cli4路由配置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于vue-cli 路由 实现类似tab切换效果(vue 2.0)

    1,更改main.js 2,在App.vue中,写入两个跳转链接(router-link),分别跳转到"home""About" (home.About即分别是两个组件) ----其中,为什么要使用<router-link></router-link>, 请移步:http://router.vuejs.org/zh-cn/api/router-link.html ----router-view路由视图(必须) ----css可以使用外部样式

  • Vue-CLI项目中路由传参的方式详解

    一.标签传参方式:<router-link></router-link> 第一种 router.js { path: '/course/detail/:pk', name: 'course-detail', component: CourseDetail } 传递层 <!-- card的内容 { id: 1, bgColor: 'red', title: 'Python基础' } --> <router-link :to="`/course/detail

  • 在vue-cli脚手架中配置一个vue-router前端路由

    前言 这篇文章给大家讲解的是在vue-cli脚手架中如何配置vue-router前端路由的相关内容,分享出来供打击参考学习,下面来一起看看详细的介绍: 首先你需要一个main.js文件 //然后引入vue-router import VueRouter from 'vue-router'; //使用路由 Vue.use(VueRouter); //当然如果需要有组件进来的时候也是需要引入的 import Home from '../components/Home.vue'; import New

  • vue-cli实现多页面多路由的示例代码

    项目下载地址 vue-cli多页面多路由项目示例:vue+webpack+vue-router+vuex+mock+axios Usage This is a project template for vue-cli. github上找到某大神的一个基于vue-cli模板的vueAdmin后台管理的模板,根据项目需求改成一个多页面多路由的vue项目. PC端:后台管理页面,单独的页面入口,单独的路由. 移动端:业务展示页面,单独的页面入口,单独的路由. 踩了无数的坑,终于是初见效果了,随后继续优

  • 详解windows下vue-cli及webpack 构建网站(四) 路由vue-router的使用

    windows下vue-cli及webpack 构建网站(一)环境安装 windows下vue-cli及webpack 构建网站(二)导入bootstrap样式 windows下vue-cli及webpack 构建网站(三)使用组件 1.本篇文章是建立在以上三篇文章的基础上的. 2.安装 vue-router 插件,运行cmd进入到项目目录下面,运行以下命令: cnpm install vue-router --save-dev 3.在src文件夹下面新建一个文件夹page用于存放模板文件,然后

  • VUE : vue-cli中去掉路由中的井号#操作

    vue-cli项目中,如果想去掉url地址栏中的"#"我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面. 只需要在路由表中,加入一行代码即可. 补充知识:vue 打包部署去掉#注意事项 示例基于vue cli2.0脚手架生成的项目 1.vue项目中config文件下index.js中打包配置: build: { // Template for index.html index: path.res

  • 详解在vue-cli中使用路由

    1.首先npm中是否有vue-router 一般在vue-cli的时候就已经下载好了依赖包了 2.使用vue的话正常的需要涉及这几个文件 demo/src/router/index.js import Vue from 'vue' import Router from 'vue-router' import Hello from '../components/Hello'//首页 import Test from '../components/test'//需要跳转的页面 给组件重新命名 Vue

  • vue-cli 默认路由再子路由选中下的选中状态问题及解决代码

    vue-cli是Vue.js官方脚手架命令行工具,我们可以用它快速搭建Vue.js项目,vue-cli最主要的功能就是初始化项目,既可以使用官方模板,也可以使用自定义模板生成项目,而且从2.8.0版本开始,vue-cli新增了build命令,能让你零配置启动一个Vue.js应用. 因项目需求,需要在默认路由下面的两个子路由进行切换,当开始以为不就是路由切换?so easy!就看一下遇到的问题吧! {path: '/',component: resolve => require(['@/compo

  • 搭建Vue从Vue-cli到router路由护卫的实现

    别的不多说,开始动爪把, 首先安装vue-cli  mac: sudo npm install -g @vue/cli github: https://github.com/XinYueXiao/vue-routes 1.Vue-cli基础使用 1.1 创建测试项目 vue create vue-routes 1.2 创建成功,启动项目 yarn serve 在 http://localhost:8080/ 就可以看到欢迎:clap:页面了 1.3 搞点自定义配置,新建vue.config.js

  • vue动态路由配置及路由传参的方式

    动态路由: 当我们很多个页面或者组件都要被很多次重复利用的时候,我们的路由都指向同一个组件,这时候从不同组件进入一个"共用"的组件,并且还要传参数,渲染不同的数据 这就要用到动态路由跟路由传参了! 首先我们来了解下router-link这个组件: 简单来说,它是个导航器,利用to属性导航到目标组件,并且在渲染的时候会自动生成一个a标签,当然官方也有说明,加个tag标签属性就可以渲染不同的标签,可以浏览器端查看到 并且当一个导航器被激活的时候,会自动加上一个css的激活样式,可以全局在路

  • Vue结合路由配置递归实现菜单栏功能

    前言 在日常开发中,项目中的菜单栏都是已经实现好了的.如果需要添加新的菜单,只需要在路由配置中新增一条路由,就可以实现菜单的添加. 相信大家和我一样,有时候会跃跃欲试自己去实现一个菜单栏.那今天我就将自己实现的菜单栏的整个思路和代码分享给大家. 本篇文章重在总结和分享菜单栏的一个递归实现方式,代码的优化.菜单权限等不在本篇文章范围之内,在文中的相关部分也会做一些提示,有个别不推荐的写法希望大家不要参考哦. 同时可能会存在一些细节的功能没有处理或者没有提及到,忘知晓. 最终的效果 本次实现的这个菜

  • VUE.CLI4.0配置多页面入口的实现

    为何需要配置多页面? 在实际工作中,肯定会遇到大型项目,往往一个架构里面会开发多个应用,而这些应用又没有太大的关联,但有可能会共用一些组件或者是样式表等,那么就会出现一个问题,打包的时候会将这些互不相关的应用全部打包. 而因为脚手架VueCli所以构建的项目属于单页面应用,因此我们就需要手动去配置,搭建一个多入口,多应用的体系 需求 首页显示各个应用名称,点击进去各自应用 实现 使用vue/cli生成一个vue项目 npm install -g @vue/cli 个人不建议直接全局安装,因为可能

  • vue cli4.0 如何配置环境变量

    目录 1.创建不同环境变量文件 2.给.env文件添加内容 3.在package.json中添加不同环境对应的执行语句 4.使用 温馨提示:本文只适用于vue-cli 3.0及以上的版本哦~ ------------------正文开始------------------ 开发项目时,经常会需要在不同环境中切换.那么我们如何配置不同的环境变量呢? 为了更加方便消化本文章,建议先看下官方文档: 环境变量和模式 看完官方的文档如果还没有明白,可以参考本文. 在vue-cli构建的项目中,默认有3种模

  • vue cli4中mockjs在dev环境和build环境的配置详情

    目录 mockjs在dev和build环境的配置 cli4中环境配置 自定义配置环境 mockjs在vue cli4开发环境的配置及使用 vue中mockjs搭建使用说明 安装 项目搭建 项目配置 项目测试 开发流程 mockjs在dev和build环境的配置 cli4中环境配置 这里参考了这位的文章: vue-cli4.0多环境配置,变量与模式.写的很详细,大家可以移步去康康~~~ 默认情况下,Vue cli有三种开发模式:development,production,test. 自定义配置环

  • 深入理解vue路由的使用

    vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用.vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来.传统的页面应用,是用一些超链接来实现页面切换和跳转的.在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换. 本文将以示例的形式来介绍vue-router的各个特性,一共包含6个示例,每个示例都有乞丐版,前5个示例有皇帝版. 乞丐版是将所有代码混杂在一起的HTML页面,皇帝版是基于vue-w

  • 详解如何写出一个利于扩展的vue路由配置

    前言 从历往经验来看,开发一个新项目,往往在刚开始部署项目,到项目的正式交付,以及交付后的后续维护,功能增强等过程,都需要对项目的一些已有结构和逻辑进行调整. 因此,如果有些内容刚建项目时不考虑好未来的可扩展性,后续调整会很麻烦. 这里先来说,在vue项目中,如何写路由配置,更利于未来可扩展. vue-router的基本配置 为了方便新学者的阅读与理解.先来看一下最基本的路由是如何配置的 // 0. 导入Vue和VueRouter脚本,如果使用模块化机制编程,要调用 Vue.use(VueRou

  • 深入理解Vue-cli4路由配置

    目录 前言-vue路由 一.最基本路由配置 1.配置router/index.js 2.配置App.vue 二.路由懒加载技术 三.路由嵌套 四.动态路由 1.动态路由配置 2.动态路由传参 总结 前言-vue路由 Vue-router是Vue官方的路由插件,与Vue.js深度集成. 在使用了vue-router的单页面应用中,url的改变会引起组件的切换,从而达到页面切换的效果,所以如何让URL按照我们的意愿去改变和URL改变后页面去向何处是配置vue-router的两大问题. [SPA网页]

  • 快速理解Vue路由导航守卫

    目录 一.全局守卫 1.全局前置守卫 2.全局解析守卫 3.全局后置钩子 三.路由独享的守卫 四.组件内的守卫 五.一个完整的导航解析流程 概念: "导航"表示路由正在发生变化 vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航.有多种机会植入路由导航过程 中:全局的, 单个路由独享的, 或者组件级的. 导航守卫:包括全局导航守卫和局部导航守卫 一.全局守卫 vue-router全局有三个守卫 router.beforeEach :全局前置守卫,进入路由之前 ro

  • @vue/cli4.x版本的vue.config.js常用配置方式

    目录 @vue/cli4.x的vue.config.js常用配置 vue-cli4.*配置vue.config.js文件配置内容不生效 解决 @vue/cli4.x的vue.config.js常用配置 设置访问端口号.访问IP地址.跨域代理,路径别名 const path = require('path') const CompressionPlugin = require('compression-webpack-plugin') // compression-webpack-plugin插件

随机推荐