在Vue中有關於非同步組件的範例
大家都知道使用時才裝入需要的元件,可以有效的提升首次裝入頁面的速度。例如在路由切換時,以下這篇文章主要為大家介紹了關於如何實現一個簡單的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中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

vue2與vue3中生命週期執行順序區別生命週期比較vue2中執行順序beforeCreate=>created=>beforeMount=>mounted=>beforeUpdate=>updated=>beforeDestroy=>destroyedvue3中執行順序setup=>onBefore>beforeDestroy=>destroyedvue3中執行順序setup=>onBefore>beforeDestroy=>destroyedvue3中執行順序setup=>onBefore> onBeforeUpdate=>onUpdated=>onBeforeUnmount=&g

diff演算法是一種透過同層的樹節點進行比較的高效演算法,避免了對樹進行逐層搜尋遍歷。那麼大家對diff演算法嗎有多少了解呢?以下這篇文章就來帶大家深入解析下vue2的diff演算法,希望對大家有幫助!

Vue3是Vue.js最新的主要版本,與Vue2相比有許多新的功能和改進。其中一個最突出的改進之一是非同步組件的使用。在本文中,我們將深入探討Vue3中非同步組件的使用方法和技巧。什麼是非同步元件?在Vue中,元件可以透過import語句或require函數引入。這些組件被稱為同步組件,它們的程式碼在應用程式啟動時立即載入並編譯。但是,當應用程式變得越來越大

如何使用Vue的非同步元件和WebpackCodeSplitting提升應用程式效能引言:隨著Web應用越來越複雜,頁面載入速度和效能成為了開發者關注的焦點。為了提升應用的效能,我們可以利用Vue的非同步元件和Webpack的CodeSplitting功能。這兩個功能結合起來可以幫助我們減少頁面載入時間,提升使用者體驗。本文將介紹如何使用Vue的非同步元件和Web

使用非同步元件的原因:1、非同步元件可以減少打包的結果,會將非同步元件分開打包,會採用非同步的方式載入元件,可以有效的解決一個元件過大的問題。 2.非同步元件的核心可以給元件定義變成函數,函數裡面可以用import語法,實作檔案的分割載入。

這篇文章為大家帶來了關於vue2的相關知識,其中主要跟大家聊一聊帶有阻尼下拉加載的功能是怎麼在vue2中實現的,感興趣的朋友下面一起來看一下吧,希望對大家有幫助。

如何透過Vue的非同步元件和Webpack的LazyLoading提升應用效能隨著網路技術的發展,Web應用程式的效能最佳化一直是開發者關注的重點。在過去,針對Web應用的效能最佳化主要集中在前端資源的減少和後端介面的最佳化。然而,隨著Vue.js的流行,透過非同步元件和Webpack的LazyLoading可以進一步提升應用效能。 Vue是一個輕量級的Java
