懒加载lazy-loading
路由懒加载
当打包构建应用时,Javascript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。
结合 Vue 的 异步组件 和 Webpack 的 code splitting feature, 轻松实现路由组件的懒加载。
我们要做的就是把路由对应的组件定义成异步组件:
const Foo = resolve => {
// require.ensure 是 Webpack 的特殊语法,用来设置 code-split point
// (代码分块)
require.ensure(['./Foo.vue'], () => {
resolve(require('./Foo.vue'))
})
}
这里还有另一种代码分块的语法,使用 AMD 风格的 require,于是就更简单了:
const Foo = resolve => require(['./Foo.vue'], resolve)
不需要改变任何路由配置,跟之前一样使用 Foo
:
const router = new VueRouter({
routes: [
{ path: '/foo', component: Foo }
]
})
把组件按组分块
有时候我们想把某个路由下的所有组件都打包在同个异步 chunk 中。只需要 给 chunk 命名,提供 require.ensure
第三个参数作为 chunk 的名称:
const Foo = r => require.ensure([], () => r(require('./Foo.vue')), 'group-foo')
const Bar = r => require.ensure([], () => r(require('./Bar.vue')), 'group-foo')
const Baz = r => require.ensure([], () => r(require('./Baz.vue')), 'group-foo')
Webpack 将相同 chunk 下的所有异步模块打包到一个异步块里面 —— 这也意味着我们无须明确列出 require.ensure
的依赖(传空数组就行)。
- 加入Vue.js社区-join
- 从 Vue Router 0.7.x 迁移-migration-vue-router
- 从 Vue 1.x 迁移-migration
- 状态管理-state-management
- 路由-routing
- 插件-plugins
- 混合-mixins
- 过渡状态-transitioning-state
- 过渡效果-transitions
- 表单控件绑定-forms
- 事件处理器-events
- Class 与 Style 绑定-class-and-style
- 计算属性-computed
- vuejs介绍
- 与Vue.js相关的精彩开发案例 vuejs开发例子
- 对组件注入component-injections
- Router 实例router-instance
- Router 构造配置options
- 路由信息对象route-object
- router-viewrouter-view
- router-linkrouter-link
- 懒加载lazy-loading
- 滚动行为scroll-behavior
- 数据获取data-fetching
- 过渡动效transitions
- 路由元信息meta
- 导航钩子navigation-guards
- HTML5 History 模式history-mode
- 重定向 和 别名redirect-and-alias
- 命名视图named-views
- 命名路由named-routes
- 编程式导航navigation
- 嵌套路由nested-routes
- 动态路由匹配dynamic-matching
- 开始getting-started
- 安装installation
- Introductionzh-cn