Vue路由模块化的实现方法
分享一个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路由模块化的实现方法的更多相关文章
- Vue 路由模块化配置
博客地址:https://ainyi.com/77 企业运营后台页面很多,路由如若不区分模块化配置,所有路由挤在同一个文件将不好维护,所以路由的配置也要模块化 分享两个解决方案 -- Vue 路由配置 ...
- vue 路由模块化
第一. 在 router 文件夹下 新建个个模块的文件夹,存放对应的路由js文件 如图1: 第二.修改router文件夹下的index.js 如图2 三.在main.js 修改如下代码 图3
- VUE路由新页面打开的方法总结
平常做单页面的场景比较多,所以大部分的业务是在同一个页面进行跳转.要通过VUE路由使用新页面打开且传递参数,可以采用以下两个方法: 1.router-link的target <router-li ...
- vue路由的异步加载(懒加载)方法
vue路由的异步加载(懒加载)方法. javascriptvue.jsvue-router 阅读约 2 分钟 vue本身不多介绍.直接说问题,因为vue的所有路由都是加载在一个app.js里的,如果 ...
- vue路由传参及组件传参和组件方法调用
VUE路由和组件传参 第一种vue自带的路由传参的三种基本方式 1.通过name :id传参 子组件通过$route.name接收参数 { path: '/particulars/:id', name ...
- Vue路由vue-router
前面的话 在Web开发中,路由是指根据URL分配到对应的处理程序.对于大多数单页面应用,都推荐使用官方支持的vue-router.Vue-router通过管理URL,实现URL和组件的对应,以及通过U ...
- 14.vue路由&脚手架
一.vue路由:https://router.vuejs.org/zh/ 1.定义 let router = new VueRouter({ mode:"history/hash" ...
- 初印象至Vue路由
初印象系列为快速了解一门技术的内容,后续会推出本人应用这门技术时发现的一些认识. Vue路由和传统路由的区别: Vue路由主要是用来实现单页面应用内各个组件之间的切换,同样支持传递参数等功能.而传统路 ...
- vue进阶:vue-router(vue路由)的安装与基本使用
vue路由安装与基本使用 vue嵌套路由 vue动态路由(路由组件传参) vue路由重定向和一些其他的路由相关 官方手册:https://router.vuejs.org/zh/ 一.vue路由安装与 ...
随机推荐
- Mybatis-Plus中Wrapper的方法
public interface EntityService extends IService<TbEntity>{ }entityService.update(entity,Condit ...
- 读/写docx文件
安装 pip install python-docx 1.建立新Word文档 建立新文档需要调用Document对象的save方法,一个Document对象代表一个Word文档,该方法的参数是保存的文 ...
- Python os.major() 方法
概述 os.major() 方法用于从原始的设备号中提取设备major号码 (使用stat中的st_dev或者st_rdev field).高佣联盟 www.cgewang.com 语法 major( ...
- Python os.getcwdu() 方法
概述 os.getcwdu() 方法用于返回一个当前工作目录的Unicode对象.高佣联盟 www.cgewang.com Unix, Windows 系统下可用. 语法 getcwdu()方法语法格 ...
- C/C++编程笔记:C语言制作情侣必备《爱情电子相册》,源码解析!
今天是521,就分享一个程序员必会的——情侣回忆杀<爱情电子相册>吧!话不多说,先上思路,后接源码! 具备能力: 1.基本可视化编程 1.1 initgraph(800,600); 1.2 ...
- 5.15 牛客挑战赛40 B 小V的序列 关于随机均摊分析 二进制
LINK:小V的序列 考试的时候 没想到正解 于是自闭. 题意很简单 就是 给出一个序列a 每次询问一个x 问序列中是否存在y 使得x^y的二进制位位1的个数<=3. 容易想到 暴力枚举. 第一 ...
- C#与网络相关的两个监听的事件
今天遇到一个问题,当网络连接有问题的时候设计软件向用户发送通知,查了资料发现了两个相关的事件分享一下. 一.System.Net.NetworkInformation命名空间下的NetworkChan ...
- Redis实现商品热卖榜
Redis系列 redis相关介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合 ...
- 谈谈Spring中都用到了那些设计模式?
以下文章来源于微信公众号JavaGuide ,作者:JavaGuide JDK 中用到了那些设计模式?Spring 中用到了那些设计模式?这两个问题,在面试中比较常见.我在网上搜索了一下关于 Spri ...
- .NET三层架构各项目之间的引用关系及如何添加引用?
1.1三层之间的引用 整个.NET框架的项目创建完成之后,在开发之前,还需要建立各个项目之间的引用关系,以便在编写C#业务逻辑代码时调用相关项目的类库. 1.1.1 引用关系规则 .NET三层架构中的 ...