vue router按需加载

 1 import Vue from ‘vue‘
 2 import Router from ‘vue-router‘
 3
 4 Vue.use(Router);
 5 //按需加载,当渲染其他页面时才加载其组件,并缓存,减少首屏加载时间
 6 const Index = resolve => require([‘@/views/Index.vue‘], resolve)
 7 const Category = resolve => require([‘@/views/Category.vue‘], resolve)
 8 const CategoryMain = resolve => require([‘@/components/category/main.vue‘], resolve)
 9 const Car = resolve => require([‘@/views/Car.vue‘],resolve)
10 const User = resolve => require([‘@/views/User.vue‘], resolve)
11 const Detail = resolve => require([‘@/views/Detail.vue‘], resolve)
12 const Search = resolve => require([‘@/views/Search.vue‘], resolve)
13 const Pay = resolve => require([‘@/components/car/pay/pay.vue‘], resolve)
14 const Login = resolve => require([‘@/views/login.vue‘], resolve)
15
16
17 export default new Router({
18   routes: [{
19       path: ‘/‘,
20       name: ‘首页‘,
21       component: Index
22     }, {
23       path: ‘/category‘,
24       name: ‘分类页‘,
25       redirect: ‘/category/all‘,
26       component: Category,
27       children: [{
28         path: ‘/category/:tab‘,
29         component:CategoryMain
30       }]
31     }, {
32       path: ‘/car‘,
33       name: ‘购物车页‘,
34       component: Car
35     }, {
36       path: ‘/car/pay‘,
37       name: ‘支付页‘,
38       component: Pay
39     },
40     {
41       path: ‘/user‘,
42       name: ‘用户页‘,
43       component: User,
44       meta: {
45            requireAuth: true,  // 添加该字段,表示进入这个路由是需要登录才能进入的
46        },
47     }, {
48       path: ‘/detail‘,
49       name: ‘详情页‘,
50       component: Detail
51     }, {
52       path: ‘/search‘,
53       name: ‘搜索页‘,
54       component: Search
55     },{
56       path: ‘/login‘,
57       name: ‘登录页‘,
58       component: Login
59     }
60   ]
61 })
  1 import Vue from ‘vue‘
  2 import Router from ‘vue-router‘
  3
  4 // import Index from ‘@/components/index/index‘
  5 // import Find from ‘@/components/find/find‘
  6 // import Order from ‘@/components/order/order‘
  7 // import Mine from ‘@/components/mine/mine‘
  8 // import RestaurantDetail from ‘@/components/index/restaurant-detail/restaurant-detail‘
  9 // import RestaurantList from ‘@/components/index/restaurant-list/restaurant-list‘
 10 // import Goods from ‘@/components/index/restaurant-detail/goods/goods‘
 11 // import Ratings from ‘@/components/index/restaurant-detail/ratings/ratings‘
 12 // import Seller from ‘@/components/index/restaurant-detail/seller/seller‘
 13 // import login from ‘@/components/login/login‘
 14
 15 Vue.use(Router)
 16
 17 // 路由懒加载
 18 const Index = (resolve) => {
 19   import(‘@/components/index/index‘).then((module) => {
 20     resolve(module)
 21   })
 22 }
 23 const Find = (resolve) => {
 24   import(‘@/components/find/find‘).then((module) => {
 25     resolve(module)
 26   })
 27 }
 28 const Order = (resolve) => {
 29   import(‘@/components/order/order‘).then((module) => {
 30     resolve(module)
 31   })
 32 }
 33 const Mine = (resolve) => {
 34   import(‘@/components/mine/mine‘).then((module) => {
 35     resolve(module)
 36   })
 37 }
 38 const RestaurantDetail = (resolve) => {
 39   import(‘@/components/index/restaurant-detail/restaurant-detail‘).then((module) => {
 40     resolve(module)
 41   })
 42 }
 43 const RestaurantList = (resolve) => {
 44   import(‘@/components/index/restaurant-list/restaurant-list‘).then((module) => {
 45     resolve(module)
 46   })
 47 }
 48 const Goods = (resolve) => {
 49   import(‘@/components/index/restaurant-detail/goods/goods‘).then((module) => {
 50     resolve(module)
 51   })
 52 }
 53 const Ratings = (resolve) => {
 54   import(‘@/components/index/restaurant-detail/ratings/ratings‘).then((module) => {
 55     resolve(module)
 56   })
 57 }
 58 const Seller = (resolve) => {
 59   import(‘@/components/index/restaurant-detail/seller/seller‘).then((module) => {
 60     resolve(module)
 61   })
 62 }
 63 const login = (resolve) => {
 64   import(‘@/components/login/login‘).then((module) => {
 65     resolve(module)
 66   })
 67 }
 68
 69 export default new Router({
 70   routes: [
 71     // 根路径
 72     {
 73       path: ‘/‘,
 74       redirect: ‘/index‘,
 75       component: Index
 76     },
 77     // 首页
 78     {
 79       path: ‘/index‘,
 80       component: Index
 81     },
 82     // 登录
 83     {
 84       path: ‘/login‘,
 85       component: login
 86     },
 87     // 商家列表
 88     {
 89       path: ‘/restaurant_list‘,
 90       component: RestaurantList
 91     },
 92     // 商家模块
 93     {
 94       path: ‘/restaurant‘,
 95       redirect: ‘/restaurant/goods‘,
 96       component: RestaurantDetail,
 97       children: [
 98         {
 99           path: ‘goods‘,
100           component: Goods
101         },
102         {
103           path: ‘ratings‘,
104           component: Ratings
105         },
106         {
107           path: ‘seller‘,
108           component: Seller
109         }
110       ]
111     },
112     // 发现
113     {
114       path: ‘/find‘,
115       component: Find
116     },
117     // 订单
118     {
119       path: ‘/order‘,
120       component: Order
121     },
122     // 我的
123     {
124       path: ‘/mine‘,
125       component: Mine
126     }
127   ]
128 })

原文地址:https://www.cnblogs.com/1032473245jing/p/8984641.html

时间: 2024-07-29 09:45:32

vue router按需加载的相关文章

webpack和vue的按需加载组件、console、抓包

1.webpack和vue的按需加载组件 webpack特有的懒加载文件的方式,很大的提升了webpack打包SPA应用的在性能方面. 而从webpack2以后require.ensure已经被import()替换. const Recommend = (resolve) => { import('components/recommend/recommend').then((module) => { resolve(module) }) } export default new Router(

React Router 按需加载+服务器渲染的闪屏问题

伴随着React协议的『妥协』(v16采用MIT),React为项目的主体,这个在短期内是不会改变的了,在平时使用过程中发现了如下这个问题: 在服务器渲染的时候,刷新页面会出现闪屏的现象(白屏一闪而过) 作为努力最求极致的我,是不能容忍的,而这一现象是半道出现的,也就是在添加按需加载之后.要说清楚这个问题,得从React的服务器渲染开始说起,(急于寻求问题解决方案的,可以直接去文章后半部分) 服务器渲染(SSR)基础原理 React的虚拟DOM是其可被用于服务端渲染的关键.其原理简单的来说就是首

Vue Router 路由懒加载

将异步组件定义为一个返回Promise 的工厂函数. 函数样式的import()语法,是JavaScript新增加的模块加载语法,提案正处于TC39委员会的第四阶段.它返回一个Promise. 一 路由配置 import Vue from "vue"; import Router from "vue-router"; const Home = () => import(/*webpackChunkName:"home"*/ "./

Vue按需加载提升用户体验

Vue官方文档异步组件: 在大型应用中,我们可能需要将应用拆分为多个小模块,按需从服务器下载.为了让事情更简单, Vue.js 允许将组件定义为一个工厂函数,动态地解析组件的定义.Vue.js 只在组件需要渲染时触发工厂函数,并且把结果缓存起来,用于后面的再次渲染. 原图文来自http://www.cnblogs.com/Kummy/p/5254754.html vue 按需加载  相关文章: 1: http://cn.vuejs.org/guide/components.html#异步组件 2

vue项目优化之按需加载组件-使用webpack require.ensure

vue项目优化之按需加载组件-使用webpack require.ensure 使用 vue-cli构建的项目,在 默认情况下 ,执行 npm run build  会将所有的js代码打包为一个整体, 打包位置是 dist/static/js/app.[contenthash].js 类似下面的路由代码 router/index.js  路由相关信息,该路由文件引入了多个 .vue组件 import Hello from '@/components/Hello' import Province

vue中路由按需加载的几种方式

使用vue-cli构建项目后,我们会在Router文件夹下面的index.js里面引入相关的路由组件,如: import Hello from '@/components/Hello' import Boy from '@/components/Boy' import Girl from '@/components/Girl' 普通加载的缺点: webpack在打包的时候会把整个路由打包成一个js文件,如果页面一多,会导致这个文件非常大,加载缓慢 1.require.ensure()实现按需加载

vue按需加载组件-webpack require.ensure

使用 vue-cli构建的项目,在 默认情况下 ,执行 npm run build 会将所有的js代码打包为一个整体, 打包位置是 dist/static/js/app.[contenthash].js 类似下面的路由代码 router/index.js 路由相关信息,该路由文件引入了多个 .vue组件 import Hello from '@/components/Hello'import Province from '@/components/Province'import Segment

vue 按需加载2

vue异步组件技术 vue-router配置路由,使用vue的异步组件技术,可以实现按需加载.这种方式下一个组件生成一个js文件 用例: { path: '/promisedemo', name: 'PromiseDemo', component: resolve => require(['../components/PromiseDemo'], resolve) } es提案的import() (推荐) webpack官方文档:webpack中使用import() vue官方文档:路由懒加载(

vue学习指南:第十二篇(详细) - Vue的 路由 第二篇 ( 路由按需加载(懒加载))

各位朋友 因 最近工作繁忙,小编停更了一段时间,快过年了,小编祝愿 大家 事业有成 学业有成 快乐健康 2020开心过好每一天.从今天开始 我会抽时间把 Vue 的知识点补充完整,以及后期会带给大家更完善的知识体系!!! 路由的按需加载(懒加载) 我们都知道 vue的路由是我们必学的,也是不可分离的一部分,我们传统引入路由的方式是这样的, import Home from '@/components/home/Home' 但是在真正项目的开发中,这种现象是杜绝的,是不建议使用这种传统方式引入的.