分享一个Vue路由模块化方法,简单实用,好用到飞起

路由模块化

1.router/index.js  配置路由
import Vue from 'vue'
import VueRouter from 'vue-router'
import home from './home' //路由模块
import order from './order' //路由模块 Vue.use(VueRouter) const routes = [
//首页
home, //订单模块
order, //首次加载时先走登录页
{
path: '/login',
name: 'login',
component: () => {
return import("@/views/login.vue")
}
}, //路由重定向
{
path: '/',
redirect: "/login"
}
] const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
}) export default router
2.router/order.js  有子路由
/**
* 订单路由
*/
export default {
path: '/order',
name: 'order',
component: function () {
return import('@/views/order/index.vue')
},
//子路由
children: [{
path: '/orderlist',
name: 'orderlist',
component: function () {
return import('@/views/order/orderList.vue')
},
}]
}

3.router/home.js  无子路由
/**
* 首页路由
*/
export default {
path:"/home",
name:"home",
component:()=> {
return import("../views/home/index.vue")
}
}

4.main.js 


import Vue from 'vue'
import App from './App.vue'
import router from './router' //引入路由
import store from './store' Vue.config.productionTip = false new Vue({
router,
store,
render: function (h) { return h(App) }
}).$mount('#app')
5.App.vue
注:
<router-view></router-view>一定要写在App.vue页面
<template>
<div class="app" v-if="isRouterAlive">
<el-container>
<!-- 头部 -->
<el-header v-if="routeData.indexOf($route.name) === -1">后台管理系统</el-header>
<!-- 左侧菜单 -->
<el-container>
<el-aside width="200px" v-if="routeData.indexOf($route.name) === -1">
<!-- 菜单组件 -->
<Menu />
</el-aside>
<!-- 内容部分 -->
<el-main id="main">
<!-- 展示路由 -->
<router-view></router-view>
</el-main>
</el-container>
</el-container>
</div>
</template> <script>
import Menu from "@/components/element/Menu";
export default {
name: "app",
provide() {
// 注册一个方法
return {
reload: this.reload, // 页面刷新
};
},
data() {
return {
//需要占满整个屏幕的路由
routeData: ["login", "404Error", "network"],
isRouterAlive: true,
};
},
components: {
Menu,
},
methods: {
//刷新功能
reload() {
this.isRouterAlive = false;
this.$nextTick(function () {
this.isRouterAlive = true;
});
},
},
};
</script> <style lang="less" scoped>
.app {
font-size: 0.16rem;
.main {
font-size: 0.16rem;
}
}
.el-header {
color: #333;
text-align: center;
height: 0.6rem;
line-height: 0.6rem;
background-color: #3dedbe;
} .el-aside {
color: #333;
height: calc(100vh - 0.6rem);
background-color: #d3dce6;
} .el-main {
margin: 0;
padding: 0;
color: #333;
background-color: #ffffff;
height: calc(100vh - 0.6rem);
}
</style>

 

@[TOC](分享一个Vue路由模块化方法,简单实用,好用到飞起)
# 路由模块化### 1. router/index.js```jsimport Vue from 'vue'import VueRouter from 'vue-router'import home from './home'  //路由模块import order from './order'  //路由模块
Vue.use(VueRouter)
const routes = [  //首页  home,
  //订单模块  order,
  //首次加载时先走登录页  {    path: '/login',    name: 'login',    component: () => {      return import("@/views/login.vue")    }  },
  //路由重定向  {    path: '/',    redirect: "/login"  }]
const router = new VueRouter({  mode: 'history',  base: process.env.BASE_URL,  routes})
export default router```### 2. router/home.js  无子路由```js/** * 首页路由 */export default {    path:"/home",    name:"home",    component:()=> {        return import("../views/home/index.vue")    }}```### 3. router/order.js  有子路由```js/** * 订单路由 */export default {    path: '/order',    name: 'order',    component: function () {        return import('@/views/order/index.vue')    },    //子路由    children: [{        path: '/orderlist',        name: 'orderlist',        component: function () {            return import('@/views/order/orderList.vue')        },    }]}```### 4.main.js```jsimport Vue from 'vue'import App from './App.vue'import router from './router'  //引入路由import store from './store'
Vue.config.productionTip = false
new Vue({  router,  store,  render: function (h) { return h(App) }}).$mount('#app')```### 5.App.vue
注:`` <router-view></router-view>``一定要写在App.vue页面```js<template>  <div class="app" v-if="isRouterAlive">    <el-container>      <!-- 头部 -->      <el-header v-if="routeData.indexOf($route.name) === -1">后台管理系统</el-header>      <!-- 左侧菜单 -->      <el-container>        <el-aside width="200px" v-if="routeData.indexOf($route.name) === -1">          <!-- 菜单组件 -->          <Menu />        </el-aside>        <!-- 内容部分 -->        <el-main id="main">        <!-- 展示路由 -->          <router-view></router-view>        </el-main>      </el-container>    </el-container>  </div></template>
<script>import Menu from "@/components/element/Menu";export default {  name: "app",  provide() {    // 注册一个方法    return {      reload: this.reload, //  页面刷新    };  },  data() {    return {      //需要占满整个屏幕的路由      routeData: ["login", "404Error", "network"],      isRouterAlive: true,    };  },  components: {    Menu,  },  methods: {    //刷新功能    reload() {      this.isRouterAlive = false;      this.$nextTick(function () {        this.isRouterAlive = true;      });    },  },};</script>
<style lang="less" scoped>.app {  font-size: 0.16rem;  .main {    font-size: 0.16rem;  }}.el-header {  color: #333;  text-align: center;  height: 0.6rem;  line-height: 0.6rem;  background-color: #3dedbe;}
.el-aside {  color: #333;  height: calc(100vh - 0.6rem);  background-color: #d3dce6;}
.el-main {  margin: 0;  padding: 0;  color: #333;  background-color: #ffffff;  height: calc(100vh - 0.6rem);}</style>```
**以上就是路由模块化的写法 自己总结的经验 若有不足 请大神指点**

Vue路由模块化的实现方法的更多相关文章

  1. Vue 路由模块化配置

    博客地址:https://ainyi.com/77 企业运营后台页面很多,路由如若不区分模块化配置,所有路由挤在同一个文件将不好维护,所以路由的配置也要模块化 分享两个解决方案 -- Vue 路由配置 ...

  2. vue 路由模块化

    第一. 在 router 文件夹下 新建个个模块的文件夹,存放对应的路由js文件 如图1: 第二.修改router文件夹下的index.js  如图2 三.在main.js 修改如下代码 图3

  3. VUE路由新页面打开的方法总结

    平常做单页面的场景比较多,所以大部分的业务是在同一个页面进行跳转.要通过VUE路由使用新页面打开且传递参数,可以采用以下两个方法: 1.router-link的target <router-li ...

  4. vue路由的异步加载(懒加载)方法

    vue路由的异步加载(懒加载)方法. javascriptvue.jsvue-router  阅读约 2 分钟 vue本身不多介绍.直接说问题,因为vue的所有路由都是加载在一个app.js里的,如果 ...

  5. vue路由传参及组件传参和组件方法调用

    VUE路由和组件传参 第一种vue自带的路由传参的三种基本方式 1.通过name :id传参 子组件通过$route.name接收参数 { path: '/particulars/:id', name ...

  6. Vue路由vue-router

    前面的话 在Web开发中,路由是指根据URL分配到对应的处理程序.对于大多数单页面应用,都推荐使用官方支持的vue-router.Vue-router通过管理URL,实现URL和组件的对应,以及通过U ...

  7. 14.vue路由&脚手架

    一.vue路由:https://router.vuejs.org/zh/ 1.定义 let router = new VueRouter({ mode:"history/hash" ...

  8. 初印象至Vue路由

    初印象系列为快速了解一门技术的内容,后续会推出本人应用这门技术时发现的一些认识. Vue路由和传统路由的区别: Vue路由主要是用来实现单页面应用内各个组件之间的切换,同样支持传递参数等功能.而传统路 ...

  9. vue进阶:vue-router(vue路由)的安装与基本使用

    vue路由安装与基本使用 vue嵌套路由 vue动态路由(路由组件传参) vue路由重定向和一些其他的路由相关 官方手册:https://router.vuejs.org/zh/ 一.vue路由安装与 ...

随机推荐

  1. java图片压缩工具类(指定压缩大小)

    1:先导入依赖 <!--thumbnailator图片处理--> <dependency> <groupId>net.coobird</groupId> ...

  2. Day02_SpringCloud

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...

  3. 因为不知道Java的CopyOnWriteArrayList,面试官让我回去等通知

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

  4. PHP boolval() 函数

    boolval 函数用于获取变量的布尔值.高佣联盟 www.cgewang.com 版本要求:PHP 5 >= 5.5.0, PHP 7. 语法 boolean boolval ( mixed ...

  5. centos7与centos6命令差异

    技术群: 816227112 查看ip centos6 : ifconfigcentos7 : ip addr 修改hostname centos6 : 修改/etc/sysconfig/networ ...

  6. [转]new一个对象的过程中发生了什么?

    来自:沉默哥 | 公号 :程序员小乐 链接:cnblogs.com/JackPn/p/9386182.html Java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就 ...

  7. JQuery插件,轻量级表单模型验证(续 一)

    之前的代码结构,不方便扩展多结构的模型验证 重新结构设计了一下验证模型核心 var validateForm = (function(model) { model.Key = "[data- ...

  8. ios 版本更新提示-硬更新/软更新

    实现: 强制更新:每次弹框 非强制更新:一天提示一次 代码如下: 步骤一: 将检测更新写到APPDelegate的applicationDidBecomeActive中 步骤二: 检测是否需要更新 步 ...

  9. JQury的选择器

    jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法 $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个 ...

  10. 【项目实战】sass使用基础篇(上)

    Sass是一种CSS预处理语言.CSS预处理语言是一种新的专门的编程语言,编译后形成正常的css文件,为css增加一些编程特性,无需考虑浏览器的兼容性(完全兼容css3),让css更加简洁.适应性更强 ...