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中 路由配置修改
{path: '/center',name: 'center',component: () => import('@/views/centerView'),meta: {isLoginRequired: true}},
总结
Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue-route History模式和路由懒加载