放肆青春的博客
首页
前端
算法
网络
面试
技术
后端
运维
杂项
数据库
工具
网址
电脑
个人
文章
  • 分类
  • 标签
  • 归档
github (opens new window)
gitee (opens new window)

放肆青春

一个前端菜鸟的技术成长之路
首页
前端
算法
网络
面试
技术
后端
运维
杂项
数据库
工具
网址
电脑
个人
文章
  • 分类
  • 标签
  • 归档
github (opens new window)
gitee (opens new window)
  • 前端

    • 前端 概览
    • 前端汇总

    • front 博文

    • front 项目总结

    • front 高级

    • front tools

  • vue

    • vue 概览
    • vue 汇总

    • vue 博文

      • vue对比
      • vue-router
      • vuex
      • vue2生命周期
      • vue组件通信
      • vue修饰符
      • vue异步组件
        • vue 异步组件
        • 异步组件的三种写法
          • 1. 工厂函数
          • 2. webpack 和 ES6 的import返回一个 Promise
          • 3. webpack 提供的 require.ensure
      • vue插槽
      • vue2 hook
    • vue 项目总结

    • vue 高级

  • html

    • html 概览
    • html 汇总

    • html 博文

  • css

    • css 概览
    • css 汇总

    • css 博文

    • sass

    • less

  • js

    • javascript 概览
    • JS 汇总

    • ES6

    • JS 博文

    • JS 工具

  • node

    • node 概览
    • node 汇总

    • node 框架

    • node 博文

  • react

    • react 概览
    • react 汇总

    • react 博文

    • react 高级

  • 微信小程序

    • 微信小程序 概览
    • 微信小程序总结
    • 微信小程序文章
    • 微信小程序 博文

    • 微信小程序 高级

  • 微信公众号

    • 微信公众号 概览
    • 微信公众号总结
    • 微信公众号文章
  • 多端开发

    • 多端开发
    • dsbridge 概览
    • jsbridge 概览
    • webview
    • uniapp

      • uniapp 概览
    • taro

      • taro 概览
    • flutter

      • flutter 概览
      • flutter 环境搭建
    • electron

      • electron 概览
  • front
放肆青春
2021-12-08

vue异步组件

# vue 异步组件

异步组件就是定义的时候什么都不做,只在组件需要渲染(组件第一次显示)的时候进行加载渲染并缓存,缓存是以备下次访问。

在大型应用中,我们可能需要将应用分割成小一些的代码块,并且只在需要的时候才从服务器加载一个模块。为了简化,Vue 允许你以一个工厂函数的方式定义你的组件,这个工厂函数会异步解析你的组件定义。Vue 只有在这个组件需要被渲染的时候才会触发该工厂函数,且会把结果缓存起来供未来重渲染。

# 异步组件的三种写法

# 1. 工厂函数

// 全局组件注册
Vue.component('Home, function (resolve) {
  // 这个特殊的 `require` 语法将会告诉 webpack
  // 自动将你的构建代码切割成多个包,这些包
  // 会通过 Ajax 请求加载
  require(['./Home'], resolve)
})


// 局部组件注册
new Vue({
  components: {
    'Home': () => resolve => { require(['./Home'], resolve) }
  }
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 2. webpack 和 ES6 的import返回一个 Promise

// 下面2行代码,没有指定webpackChunkName,每个组件打包成一个js文件。
const ImportFuncDemo1 = () => import("../components/ImportFuncDemo1");
const ImportFuncDemo2 = () => import("../components/ImportFuncDemo2");
// 下面2行代码,指定了相同的webpackChunkName,会合并打包成一个js文件。
// const ImportFuncDemo = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/ImportFuncDemo')
// const ImportFuncDemo2 = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/ImportFuncDemo2')
export default new Router({
  routes: [
    {
      path: "/importfuncdemo1",
      name: "ImportFuncDemo1",
      component: ImportFuncDemo1,
    },
    {
      path: "/importfuncdemo2",
      name: "ImportFuncDemo2",
      component: ImportFuncDemo2,
    },
  ],
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 3. webpack 提供的 require.ensure

这种情况下,多个路由指定相同的 chunkName,会合并打包成一个 js 文件。

{
    path: '/promisedemo',
    name: 'PromiseDemo',
    component: r => require.ensure([], () => r(require('../components/PromiseDemo')), 'demo')
},
{
    path: '/hello',
    name: 'Hello',
    component: r => require.ensure([], () => r(require('../components/Hello')), 'demo')
}
1
2
3
4
5
6
7
8
9
10

参考:https://www.cnblogs.com/chenmeijiao/p/13156779.html (opens new window)

更新时间: 12/8/2021, 6:11:56 PM
vue修饰符
vue插槽

← vue修饰符 vue插槽→

最近更新
01
前端权限管理
02-24
02
vue2指令
02-24
03
vue2 hook
02-24
更多文章>
Theme by Vdoing | Copyright © 2019-2022 放肆青春
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式