• 技术文章 >web前端 >前端问答

    vue中异步组件和动态组件的区别是什么

    青灯夜游青灯夜游2022-08-26 18:32:19原创674

    区别:1、动态组件是Vue中一个特殊的Html元素“<component>”,它拥有一个特殊的is属性,属性值可以是“已注册组件的名称”或“一个组件的选项对象”;而异步组件不是实物,是一个概念,一个可以让组件异步加载的方式。2、动态组件用于不同组件之间进行动态切换;而异步组件用于性能优化,比如减小首屏加载时间、加载资源大小。

    大前端零基础入门到就业:进入学习

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

    异步组件

    在一些大型的Vue应用中,不管是为了代码的抽离,还是逻辑的划分,不可避免的会将应用分割成一些很小的代码块,形成我们意识上的组件,在需要的地方可以进行 import 引入,例如下面:

        import MyComponent from '../components/my-component.vue'
    
        new Vue({
            // ...
            components: {MyComponent}
        })

    这种方式引入,MyComponent 在构建的过程中,会被同步打入页面的bundle.js中

    这个时候,在某些场景中,比如:

    1、这个组件的体积很大

    2、它不是页面一开始就需要的

    那么我们在构建的过程中,就将组件代码打入页面js中,显然是不合适的

    Vue提供了一种异步组件的概念:只在需要的时候才从服务器加载

    我们可以这么定义:

        Vue.component('async-example', function (resolve, reject) {
            setTimeout(function () {
                // 向 `resolve` 回调传递组件定义
                resolve({
                    template: '<div>I am async!</div>'
                })
            }, 1000)
        })

    上面的例子,采用 setTimeout 模拟异步获取组件,真实情况,甚至可以通过ajax请求组件编译之后的template,然后调用 resolve 方法;如果加载失败,可以调用 reject 方法

    大部分情况下,我们的组件都是单独分割成一个 .vue 文件,那么我们可以这么做:

        Vue.component('async-webpack-example', function (resolve) {
            require(['./my-async-component'], resolve)
        })

    这个特殊的 require 语法将会告诉 webpack,自动将你的构建代码切割成多个包,这些包会通过 Ajax 请求加载

    那么如果你的页面没有用到这个组件,自然就不会请求组件的js包

    当然,也可以局部注册异步组件

        new Vue({
        // ...
            components: {
                'my-component': () => import('./my-async-component')
            }
        })

    动态组件

    说到异步组件,很多人就会想到另一个类似的 动态组件,并且总是会弄混两者的关系。

    其实 动态组件异步组件 完全不是一码事!!!

    直接上总结

    动态组件:是Vue中一个特殊的Html元素:<component>,它拥有一个特殊的 is 属性,属性值可以是 已注册组件的名称一个组件的选项对象,它是用于不同组件之间进行动态切换的。

    异步组件:简单来说是一个概念,一个可以让组件异步加载的方式;它一般会用于性能优化,比如减小首屏加载时间、加载资源大小。

    (学习视频分享:web前端入门vue视频教程

    以上就是vue中异步组件和动态组件的区别是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    快捷开发Web应用及小程序:点击使用

    支持亿级表,高并发,自动生成可视化后台。

    上一篇:vue2和vue3的区别是什么 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 尤雨溪:新版Vue3中文文档上线了!• 深入剖析vue2.x中diff算法的原理• 组件间怎么通信?盘点Vue组件通信方式(值得收藏)• 详解vue3中reactive和ref的区别(源码解析)• 什么是插槽(slot)?聊聊Vue3中插槽的使用方法• 什么是状态管理?聊聊怎么利用Vuex进行状态管理
    1/1

    PHP中文网