Vue Vue-route (5)

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue-route History模式和路由懒加载

目录

History模式

设置history模式

后端配置

Apache

路由懒加载

配置

总结


History模式

设置history模式

Vue-route默认hash模式------使用URL的hash来模拟一个完整的URL,

于是当URL改变时,页面不会重新加载。

如果不想要很丑的hash,如下:

可以用路由的history模式,设置index.js中的mode。

这种模式充分利用history.pushStateAPI来完成URL跳转而无需重新加载页面。

示例如下:

当使用history模式时,URL就像正常的URL,例如http://www.xxx.com/user/id,相比原来要好看一些。

不过这种模式,需要后台配置支持。因为我们的应用是个单页客户端应用,如果后台没有正确的配置,当用户在浏览器直接访问http://www.xxx.com/user/id 就会返回404。

效果:

后端配置

后端服务器配置示例。

Apache

Nginx

路由懒加载

首屏加载过慢,单页面应用中。所有的js合并为一个大文件js时应用。

如果这是看首页,也需要等待全部js下载下来体感是很不好的。

当打包构建应用时,js包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。

结合Vue的异步组件和webpack的代码分割功能,轻松实现路由组件的懒加载。

配置

首先,将异步组件定义为返回一个promise的工厂函数

(该函数返回的promise应该resolve组件本身):

第二,在webpack2中,我们可以使用动态import语法来定义代码分块点

结合这两者,这就是如何定义一个能够被webpack自动代码分割的异步组件。

路由配置中不需要改变,只需要像往常一个使用。

router/index.js中 路由配置修改

javascript 复制代码
{
    path: '/center',
    name: 'center',
    component: () => import('@/views/centerView'),
    meta: {
      isLoginRequired: true
    }
  },

总结

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue-route History模式和路由懒加载