vue中异步组件和动态组件的区别有哪些
本篇内容主要讲解“vue中异步组件和动态组件的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue中异步组件和动态组件的区别有哪些”吧!
目前创新互联建站已为上千余家的企业提供了网站建设、域名、雅安服务器托管、网站托管运营、企业网站设计、恒山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
区别:1、动态组件是Vue中一个特殊的Html元素“
”,它拥有一个特殊的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: 'I am async!' }) }, 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元素:
,它拥有一个特殊的 is
属性,属性值可以是 已注册组件的名称
或 一个组件的选项对象
,它是用于不同组件之间进行动态切换的。
异步组件
:简单来说是一个概念,一个可以让组件异步加载的方式;它一般会用于性能优化,比如减小首屏加载时间、加载资源大小。
到此,相信大家对“vue中异步组件和动态组件的区别有哪些”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
当前文章:vue中异步组件和动态组件的区别有哪些
文章源于:http://cdiso.cn/article/pepsjh.html