大家都知道使用時才裝入需要的元件,可以有效的提升首次裝入頁面的速度。例如在路由切換時,以下這篇文章主要為大家介紹了關於如何實現一個簡單的Vue非同步元件的相關資料,文中透過範例程式碼介紹的非常詳細,需要的朋友可以參考下。
前言
在大型應用程式中,我們可能需要將應用程式拆分為多個小模組,按需從伺服器下載。為了進一步簡化,Vue.js 允許將元件定義為一個工廠函數,非同步地解析元件的定義。 Vue.js 只在元件需要渲染時觸發工廠函數,並且把結果快取起來,用於後面的再次渲染。
為什麼需要非同步元件,道理和webpack的按需載入是一樣的,如果一開始就載入所有的元件,那麼是比較耗時的,所以我們可以將一些元件定義為非同步元件,在需要使用的時候再進行載入。
所以好處的話就顯而易見了:
按需加載,可以節省首次加載的時間,提高速度,也算是一個性能優化。
那麼一個元件可能會被使用多次,按需載入的話也不會載入多次,第一次載入完成就會快取下來,和webpack是一樣的,所以不用擔心
最近讀Vue文件的時候仔細看了一下非同步組件部分,第一次看的時候一臉懵逼,看第二次還是有點迷茫,第三次就有點感覺了,第四次感覺有點明白了,遂記錄一下,下面是我寫的一個簡單Vue異步組件Demo。
實例程式碼
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script> // 如果浏览器不支持Promise就加载promise-polyfill if ( typeof Promise === 'undefined' ) { var script = document.createElement( 'script' ); script.type = 'text/javascript'; script.src = 'https://cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.min.js'; document.head.appendChild( script ); } </script> <!-- 引入Vue --> <script src="https://cdn.jsdelivr.net/npm/vue"></script> </head> <body> <p id="app" style="font-size: 22px"> <!-- 异步组件async-comp --> <async-comp :list="['我是一个异步组件,','如果加载完成,','我就会在这里显示']"></async-comp> </p> <!-- 引入main.js --> <script src="/main.js"></script> </body> </html>
非同步元件Async-Comp.js,
注意,Async-Comp.js並沒有在index.html中引用,而是在下面的main.js中動態載入。
window.async_comp = { template: '\ <ol>\ <li v-for="item in list">{{ item }}</li>\ </ol>', props: { list: Array } };
main.js
var vm = new Vue( { el: '#app', components: { /* 异步组件async-comp */ 'async-comp': function () { return { /** 要渲染的异步组件,必须是一个Promise对象 */ component: new Promise( function ( resolve, reject ) { var script = document.createElement( 'script' ); script.type = 'text/javascript'; script.src = '/Async-Comp.js'; document.head.appendChild( script ); script.onerror = function () { reject( 'load failed!' ); } script.onload = function () { if ( typeof async_comp !== 'undefined' ) resolve( async_comp ); else reject( 'load failed!' ) } } ), /* 加载过程中显示的组件 */ loading: { template: '<p>loading...</p>' }, /* 出现错误时显示的组件 */ error: { template: '\ <p style="color:red;">load failed!</p>\ ' }, /* loading组件的延迟时间 */ delay: 10, /* 最长等待时间,如果超过此时间,将显示error组件。 */ timeout:3200 } } } } )
上面是我整理給大家的,希望今後會對大家有幫助。
相關文章:
#以上是在Vue中有關於非同步組件的範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

vue2与vue3中生命周期执行顺序区别生命周期比较vue2中执行顺序beforeCreate=>created=>beforeMount=>mounted=>beforeUpdate=>updated=>beforeDestroy=>destroyedvue3中执行顺序setup=>onBeforeMount=>onMounted=>onBeforeUpdate=>onUpdated=>onBeforeUnmount=&g

diff算法是一种通过同层的树节点进行比较的高效算法,避免了对树进行逐层搜索遍历。那么大家对diff算法吗有多少了解?下面本篇文章就来带大家深入解析下vue2的diff算法,希望对大家有所帮助!

Vue3是Vue.js最新的主要版本,与Vue2相比有许多新的功能和改进。其中一个最突出的改进之一是异步组件的使用。在本文中,我们将深入探讨Vue3中异步组件的使用方法和技巧。什么是异步组件?在Vue中,组件可以通过import语句或require函数引入。这些组件被称为同步组件,它们的代码在应用程序启动时被立即加载并编译。但是,当应用程序变得越来越大

使用异步组件的原因:1、异步组件可以减少打包的结果,会将异步组件分开打包,会采用异步的方式加载组件,可以有效的解决一个组件过大的问题。2、异步组件的核心可以给组件定义变成一个函数,函数里面可以用import语法,实现文件的分割加载。

如何使用Vue的异步组件和WebpackCodeSplitting提升应用性能引言:随着Web应用越来越复杂,页面加载速度和性能成为了开发者关注的焦点。为了提高应用的性能,我们可以利用Vue的异步组件和Webpack的CodeSplitting功能。这两个功能结合起来可以帮助我们减少页面加载时间,提升用户体验。本文将介绍如何使用Vue的异步组件和Web

如何通过Vue的异步组件和Webpack的LazyLoading提升应用性能随着互联网技术的发展,Web应用程序的性能优化一直是开发者关注的重点。在过去,针对Web应用的性能优化主要集中在前端资源的减小和后端接口的优化上。然而,随着Vue.js的流行,通过异步组件和Webpack的LazyLoading可以进一步提升应用性能。Vue是一个轻量级的Java

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


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能