- 異步組件
在大型應(yīng)用中,我們可能需要將應(yīng)用分割成小一些的代碼塊,并且只在需要的時(shí)候才從服務(wù)器加載一個(gè)模塊。
Vue.js只在組件需要渲染時(shí)觸發(fā)工廠函數(shù),并且把結(jié)果緩存起來,用于后面的再次渲染。
工廠函數(shù)接收一個(gè)resolve回調(diào),在收到從服務(wù)器下載的組件定義時(shí)調(diào)用。也可以調(diào)用reject(reason)指示加載失敗。這里setTimeout只是為了演示異步,具體的下載邏輯可以自己決定,比如把組件配置寫成一個(gè)對象配置,通過Ajax來請求,然后調(diào)用resolve傳入配置選項(xiàng)。
所謂工廠函數(shù),就是指這些內(nèi)建函數(shù)都是類對象,當(dāng)你調(diào)用他們時(shí),實(shí)際上是創(chuàng)建了一個(gè)類實(shí)例。
1.它是一個(gè)函數(shù)
2.它用來創(chuàng)建對象
3.它像工廠一樣,“生產(chǎn)”出來的函數(shù)都是“標(biāo)準(zhǔn)件”擁有同樣的屬性
<div id="app">
<child-component></child-component>
</div>
<script>
Vue.component('child-component', function(resolve, reject) {
window.setTimeout(function () {
resolve({
template: '<div>我是異步渲染的</div>'
})
}, 2000);
})
var app = new Vue({
el: '#app'
})
</script>