- Vue.js 3.0源碼解析(微課視頻版)
- 張廷杭 仲寶才 姚鑫編著
- 567字
- 2024-12-27 21:47:03
2.1 createApp()函數(shù)
createApp()函數(shù)為Vue3的入口函數(shù),在引入框架后,系統(tǒng)會直接調(diào)用該函數(shù)。它需傳入兩個參數(shù):第一個參數(shù)為Component(組件),第二個參數(shù)為需綁定的根節(jié)點。Component實現(xiàn)內(nèi)容如下:

在Component組件中有兩種方法:data()和render(),在data()方法內(nèi)聲明響應(yīng)式數(shù)據(jù),在render()方法內(nèi)返回待渲染為真實DOM結(jié)構(gòu)的VNode,包含div標(biāo)簽、onClick()方法和this.count值。data()內(nèi)的count為響應(yīng)式數(shù)據(jù),當(dāng)單擊div后,count加1,實現(xiàn)數(shù)據(jù)的自動增加。該VNode對應(yīng)的template寫法如下:
<div onClick='()=>{this.count++}'>{{this.count}}</div>
createApp()函數(shù)內(nèi)部將data()內(nèi)的數(shù)據(jù)轉(zhuǎn)換為響應(yīng)式數(shù)據(jù),通過監(jiān)聽數(shù)據(jù)變化,執(zhí)行DOM操作,實現(xiàn)數(shù)據(jù)驅(qū)動DOM的目的。在掛載過程中,需聲明一個根節(jié)點作為組件掛載的錨點,掛載渲染完成的組件。
//此處直接綁定id為app的div節(jié)點作為掛載的根節(jié)點 createApp(Component,document.getElementById('app'))
createApp()函數(shù)內(nèi)部需要實現(xiàn)以下步驟:
(1)將數(shù)據(jù)處理為響應(yīng)式數(shù)據(jù);
(2)執(zhí)行渲染函數(shù);
(3)完成DOM元素渲染。
根據(jù)上述步驟查看createApp()函數(shù)的內(nèi)部實現(xiàn),具體代碼如下:

由圖2.1可知,該函數(shù)內(nèi)部執(zhí)行將對象轉(zhuǎn)換為響應(yīng)式數(shù)據(jù)的方法。通過watchEffect()(effect副作用函數(shù))保存待執(zhí)行的函數(shù),最后通過mount()函數(shù)將VNode轉(zhuǎn)換為真實的DOM結(jié)構(gòu),并插入id=app的div根節(jié)點內(nèi)。
注:函數(shù)副作用指函數(shù)內(nèi)部與外部互動。所謂effect副作用函數(shù),可以理解為函數(shù)被調(diào)用時,內(nèi)部需要產(chǎn)生運算以外的其他結(jié)果,此時調(diào)用副作用函數(shù)執(zhí)行預(yù)設(shè)好的回調(diào)鉤子函數(shù),觸發(fā)一系列更新等操作來產(chǎn)生其他結(jié)果。
- 深度實踐OpenStack:基于Python的OpenStack組件開發(fā)
- ASP.NET 3.5程序設(shè)計與項目實踐
- Big Data Analytics
- HTML5入門經(jīng)典
- JavaScript入門經(jīng)典
- 智能搜索和推薦系統(tǒng):原理、算法與應(yīng)用
- 響應(yīng)式Web設(shè)計:HTML5和CSS3實戰(zhàn)(第2版)
- Illustrator CC平面設(shè)計實戰(zhàn)從入門到精通(視頻自學(xué)全彩版)
- AV1視頻編解碼標(biāo)準(zhǔn):原理與算法實現(xiàn)
- Apache Solr PHP Integration
- SEO教程:搜索引擎優(yōu)化入門與進(jìn)階(第3版)
- 從零開始學(xué)Unity游戲開發(fā):場景+角色+腳本+交互+體驗+效果+發(fā)布
- 絕密原型檔案:看看專業(yè)產(chǎn)品經(jīng)理的原型是什么樣
- Java EE框架開發(fā)技術(shù)與案例教程
- Visual FoxPro程序設(shè)計