解決vue的component標(biāo)簽渲染問題_第1頁
解決vue的component標(biāo)簽渲染問題_第2頁
解決vue的component標(biāo)簽渲染問題_第3頁
解決vue的component標(biāo)簽渲染問題_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第解決vue的component標(biāo)簽渲染問題component標(biāo)簽渲染問題

最近遇到一個問題,就是通過LoadJs方法加載的組件怎么通過component實(shí)現(xiàn)熱加載問題

vue的component標(biāo)簽是個虛擬dom,在真實(shí)dom樹上需要vue進(jìn)行渲染,顯示。而我最近遇到的問題,我通過LoadJS方法,從A項(xiàng)目讀取B項(xiàng)目的對象,頁面并已組件的形式渲染到A項(xiàng)目頁面上,組件沒法渲染。

我第一反應(yīng)是this.$forceUpdate(),渲染一下就是,可是并沒有成功。

然后想到一個問題VUE如何識別加載虛擬DOM和如何識別路由里綁定的頁面?import對象和require對象有什么區(qū)別,什么時候用

想了一堆這類的問題,實(shí)際上import和require的區(qū)別,好多文章都有說明,而且解釋的很好。個人看來最大的區(qū)別就是一個是靜態(tài)編譯和一個動態(tài)編譯。也就是一個腳本運(yùn)行完后編譯。

所以我這里應(yīng)該是動態(tài)編譯,因?yàn)橥獠縅s文件在是一個blob對象,無法根據(jù)import,指定路徑,運(yùn)行時候在訪問對應(yīng)的Js文件。也就是這個路徑是個虛擬的,無法真實(shí)找到的時候,不要用import。

vue如何識別import對象和require對象

require是CommonJs的語法(AMD規(guī)范引入方式),CommonJs的模塊是對象。

import是es6的一個語法標(biāo)準(zhǔn)(瀏覽器不支持,本質(zhì)是使用node中的babel將es6轉(zhuǎn)碼為es5再執(zhí)行,import會被轉(zhuǎn)碼為require),es6模塊不是對象

require是運(yùn)行時加載整個模塊(即模塊中所有方法),生成一個對象,再從對象上讀取它的方法(只有運(yùn)行時才能得到這個對象,不能在編譯時做到靜態(tài)化),理論上可以用在代碼的任何地方

import是編譯時調(diào)用,確定模塊的依賴關(guān)系,輸入變量(es6模塊不是對象,而是通過export命令指定輸出代碼,再通過import輸入,只加載import中導(dǎo)的方法,其他方法不加載),import具有提升效果,會提升到模塊的頭部(編譯時執(zhí)行)

export和import可以位于模塊中的任何位置,但是必須是在模塊頂層,如果在其他作用域內(nèi),會報錯

這算解決了一個問題,可是component的Is屬性時可以識別require和import對象,我直接丟進(jìn)去,可是還是不行。

然后注意到一個點(diǎn),VUE的生命周期!

然后發(fā)現(xiàn)我實(shí)在mounted導(dǎo)入的對象。。。。。。

提醒一下自己和看到的人,請不要在mounteds使用require和import,我改到created里面執(zhí)行函數(shù)就可以。理論來說beforeCreated和beforeMounted也可以使用。未嘗試過。

還有提醒一下,思考一個問題,不要鉆牛角尖,換個思路,說不定豁然開朗,就像我這個問題。其實(shí)主要問題就是,導(dǎo)入對象的時期和導(dǎo)入的方法選擇,而不是渲染。

component組件嵌套,導(dǎo)致頁面重復(fù)渲染,重復(fù)請求的bug

因詳情頁面,有多個tab選項(xiàng)卡考慮頁面多處重復(fù)使用,而且有多個頁面組成,最終決定使用組件方式來引用頁面。

因項(xiàng)目采用的UI組件是element-ui,剛好看到有一個樣式很類似于tab選項(xiàng)卡,就采用了element的tabs組件,可是沒想到問題就是出現(xiàn)這兒。

el-tabs>

因?yàn)樯鲜霾捎昧藅abs選項(xiàng)卡,而且也使用v-for循環(huán)(沒辦法,主要是tabs是動態(tài)的),導(dǎo)致每個頁面不僅沒有辦法緩存,反而一直重復(fù)發(fā)送請求。自己百度了好久,最后沒辦法尋求幫助,在大佬們遠(yuǎn)程幫助下最終發(fā)現(xiàn)的是tabs下的v-for導(dǎo)致。

因?yàn)閏omponent寫在v-for循環(huán)中,每次循環(huán)都會創(chuàng)建一個對象,導(dǎo)致創(chuàng)建很多的組件,點(diǎn)擊一次tabs循環(huán)后的所有的component都發(fā)送了請求,每次點(diǎn)擊一次后,都會減少一次請求(因?yàn)閗eep-alive緩存的問題)。

最終解決的方法,不在element-ui的tabs組件,自己手寫頁面,反正

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論