iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > 其他 >vue为啥要使用异步组件
  • 881
分享到

vue为啥要使用异步组件

Vue异步组件 2023-05-14 21:05:45 881人浏览 独家记忆
摘要

本教程操作环境:windows7系统、vue3版,DELL G3电脑。使用异步组件的原因1.异步组件可以减少打包的结果。会将异步组件分开打包,会采用异步的方式加载组件,可以有效的解决一个组件过大的问题。不使用异步组件,如果组件功能比较多打包

vue为啥要使用异步组件

教程操作环境:windows7系统、vue3版,DELL G3电脑。

使用异步组件的原因

1.异步组件可以减少打包的结果。会将异步组件分开打包,会采用异步的方式加载组件,可以有效的解决一个组件过大的问题。不使用异步组件,如果组件功能比较多打包出来的结果就会变大。

2.异步组件的核心可以给组件定义变成一个函数,函数里面可以用import语法,实现文件的分割加载,import语法是webpack提供的,采用的就是JSONp。(学习视频分享:Vuejs入门教程、编程基础视频)

components:{
  VideoPlay:(resolve)=>import("../components/VideoPlay")
}
 
components:{
  VideoPlay(resolve) {
    require(["../components/VideoPlay"], resolve)
  }
}
 
或者使用回调函数

原理

在createComponent方法中,会有相应的异步组件处理,首先定义一个asyncFactory变量,然后进行判断,如果组件是一个函数,然后会去调resolveAsyncComponent方法,然后将赋值在asyncFactory上的函数传进去,会让asyncFactory马上执行,执行的时候并不会马上返回结果,因为他是异步的,返回的是一个promise,这时候这个值就是undefined,然后就会先渲染一个异步组件的占位,空虚拟节点。如果加载完之后会调factory函数传入resolve和reject两个参数,执行后返回一个成功的回调和失败的回调,promise成功了就会调resolve,resolve中就会调取forceRender方法强制更新视图重新渲染,forceRender中调取的就是$forceUpdate,同时把结果放到factory.resolved上,如果强制刷新的时候就会再次走resolveAsyncComponent方法,这时候有个判断,如果有成功的结果就把结果直接放回去,这时候resolveAsyncComponent返回的就不是undefined了,就会接的创建组件,初始化组件,渲染组件。

源码

src/core/vdom/create-component.js

1.createComponent方法

export function createComponent (
  Ctor: Class<Component> | Function | Object | void,
  data: ?VnodeData,
  context: Component,
  children: ?Array<VNode>,
  tag?: string
): VNode | Array<VNode> | void {
  let asyncFactory
  if (isUndef(Ctor.cid)) { // 看组件是否是一个函数
    asyncFactory = Ctor // 异步组件一定是一个函数 新版本提供了对象的写法
    Ctor = resolveAsyncComponent(asyncFactory, baseCtor) //默认调用此函数时返回undefiend
    // 第二次渲染时Ctor不为undefined
    if (Ctor === undefined) {
      //返回async组件的占位符节点
      //作为注释节点,但保留该节点的所有原始信息
      //该信息将用于异步服务器渲染和水合。
      return createAsyncPlaceholder(
        asyncFactory,
        data,
        context,
        children,
        tag
      )
    }
  }
}

2.resolveAsyncComponent方法

export function resolveAsyncComponent (
  factory: Function,
  baseCtor: Class<Component>
): Class<Component> | void {
  // 如果有错误就返回错误结果
  if (isTrue(factory.error) && isDef(factory.errorComp)) {
    return factory.errorComp
  }
  // 再次渲染时可以拿到获取的最新组件
  // 如果有成功的结果,就直接返回去
  if (isDef(factory.resolved)) {
    return factory.resolved
  }

  if (owner && !isDef(factory.owners)) {
    // forceRender 强制刷新渲染
    const forceRender = (renderCompleted: boolean) => {
      for (let i = 0, l = owners.length; i < l; i++) {
        (owners[i]: any).$forceUpdate() // 执行$forceUpdate
      }
    }
    // 成功
    const resolve = once((res: Object | Class<Component>) => {
      factory.resolved = ensureCtor(res, baseCtor)
      if (!sync) {
        forceRender(true) // 执行强制更新视图重新渲染方法
      } else {
        owners.length = 0
      }
    })
    // 失败
    const reject = once(reason => {
      if (isDef(factory.errorComp)) {
        factory.error = true
        forceRender(true)
      }
    })

    // 执行factory 将resolve方法和reject方法传入
    const res = factory(resolve, reject)

    sync = false
    return factory.loading ? factory.loadinGComp : factory.resolved // 返回结果
  }
}

3.createAsyncPlaceholder 方法

// 创建一个异步组件的占位,空虚拟节点   也就是一个注释<!-->
export function createAsyncPlaceholder (
  factory: Function,
  data: ?VNodeData,
  context: Component,
  children: ?Array<VNode>,
  tag: ?string
): VNode {
  const node = createEmptyVNode()
  node.asyncFactory = factory
  node.asyncMeta = { data, context, children, tag }
  return node
}

(学习视频分享:vuejs入门教程、编程基础视频)

以上就是vue为啥要使用异步组件的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: vue为啥要使用异步组件

本文链接: https://www.lsjlt.com/news/205858.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue为啥要使用异步组件
    本教程操作环境:windows7系统、vue3版,DELL G3电脑。使用异步组件的原因1.异步组件可以减少打包的结果。会将异步组件分开打包,会采用异步的方式加载组件,可以有效的解决一个组件过大的问题。不使用异步组件,如果组件功能比较多打包...
    99+
    2023-05-14
    Vue 异步组件
  • Vue异步组件怎么使用
    本篇内容主要讲解“Vue异步组件怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue异步组件怎么使用”吧!1、前置要求建议使用webpack;Browserify在默认情况下不支持;2、...
    99+
    2023-07-04
  • Vue中如何使用异步组件
    Vue中如何使用异步组件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、前置要求建议使用webpack;Browserify在默认情况下...
    99+
    2024-04-02
  • Vue动态组件与异步组件怎么使用
    这篇“Vue动态组件与异步组件怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue动态组件与异步组件怎么使用”文章吧...
    99+
    2023-07-05
  • Vue异步组件怎么用
    这篇文章将为大家详细讲解有关Vue异步组件怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、引入我们在讲异步组件之前,我们再来回顾一下webpack打包时的分包操作。我们可以使用import()异步...
    99+
    2023-06-29
  • vue组件中data为啥是函数
    本教程操作环境:windows7系统、vue3版,DELL G3电脑。一、实例和组件定义data的区别vue实例的时候定义data属性既可以是一个对象,也可以是一个函数const app = new Vue({ el:"#...
    99+
    2023-05-14
    vue3 Vue
  • vue使用异步组件的原因有哪些
    本篇内容主要讲解“vue使用异步组件的原因有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue使用异步组件的原因有哪些”吧!使用异步组件的原因:1、异步组件可以减少打包的结果,会将异步组件...
    99+
    2023-07-04
  • 关于Vue的异步组件
    基本用法​ 在大型项目中,我们可能需要拆分应用为更小的块,并仅在需要时再从服务器加载相关组件。Vue 提供了defineAsyncComponent方法来实现此功能: import ...
    99+
    2023-05-17
    Vue异步 Vue组件
  • Vue组件开发之异步组件详解
    目录一、引入二、vue中的异步组件三、异步组件和suspense总结一、引入 我们在讲异步组件之前,我们再来回顾一下webpack打包时的分包操作。我们可以使用import()异步加...
    99+
    2024-04-02
  • 剖析 VUE 异步组件的异步生命周期
    加载和显示过程 mounted():组件首次挂载到 DOM 时调用。对于异步组件,mounted() 在初始数据加载之前执行。 beforeResolve()(可选):在异步请求发送之前调用。它提供了一个在请求开始之前执行自定义逻辑的机...
    99+
    2024-04-02
  • VUE 异步组件的异步世界:深入理解
    异步组件的加载 异步组件是通过 import() 语法加载的,它返回一个 Promise。在解析成功后,组件被动态地添加到 Vue 实例中。这种方式可防止阻塞初始渲染,并使应用程序更加响应。 使用异步组件的好处 代码分割: 异步组件允许...
    99+
    2024-04-02
  • Vue浅析讲解动态组件与缓存组件及异步组件的使用
    目录1.什么是动态组件2.如何实现动态组件渲染3.如何实现缓存组件4.异步组件1.什么是动态组件 当我们希望页面中的某个地方,在不同组件之间进行动态切换,这时候除了条件渲染,还可以使...
    99+
    2024-04-02
  • Vue3异步组件Suspense怎么使用
    今天小编给大家分享一下Vue3异步组件Suspense怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Suspense...
    99+
    2023-07-06
  • Vue3异步组件suspense使用详解
    目录结合elementui 使用 vue在解析我们的组件时, 是通过打包成一个 js 文件,当我们的一个组件 引入过多子组件是,页面的首屏加载时间 由最后一个组件决定 优化的一种方式...
    99+
    2022-12-28
    Vue3 异步组件 suspense Vue3 组件 suspense
  • Vue3异步组件Suspense如何使用
    这篇文章主要介绍了Vue3异步组件Suspense如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue3异步组件Suspense如何使用文章都会有所收获,下面我们一起来看看吧。Suspense组件官网中...
    99+
    2023-07-05
  • vue组件非单文件组件的使用步骤
    目录一,什么是组件二,非单文件组件2.1使用组件的三大步骤1.创建组件2.注册组件3.使用组件4.关于写法的注意点2.2组件的嵌套关于VueComponent 一,什么是组件 实现应...
    99+
    2023-01-11
    vue非单文件组件 vue组件
  • Vue动态组件与异步组件超详细讲解
    目录何为动态组件何为异步组件示例解析动态组件异步组件总结何为动态组件 动态组件是根据数据的变化,可以随时切换不同的组件,比如咱们现在要展示一个文本框和输入框,我们想要根据我们data...
    99+
    2023-03-19
    Vue动态组件与异步组件 Vue动态组件 Vue异步组件
  • Vue中怎么异步加载about组件
    Vue中怎么异步加载about组件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。异步加载about组件about.jsVue.compon...
    99+
    2024-04-02
  • VUE 异步组件实战指南:掌握异步加载的艺术
    异步组件加载可以显著提升应用程序性能,主要优势如下: 按需加载:组件仅在需要时加载,避免浪费资源加载不必要的组件。 降低初始加载时间:应用程序启动时只需要加载必要的组件,显著缩短加载时间。 提高交互响应:异步加载可以防止页面因加载大型组...
    99+
    2024-03-09
    异步组件的优势
  • 使用 VUE 异步组件实现动态且响应式应用程序
    异步组件 异步组件是一种 Vue 组件,其定义被存储在一个 Promise 中。当该 Promise 被解析时,组件的实际实现就会被加载。这使得开发人员可以在需要时延迟加载组件,从而减少初始页面加载的时间。 实现方式 使用 Vue 异步组...
    99+
    2024-03-09
    引言 在现代 Web 开发中 构建动态且响应式的应用程序至关重要 以提供流畅的用户体验。Vue.js 提供了异步组件 允许开发者在需要时按需加载组件 从而优化应用程序性能和用户交互。
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作