真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

面試問Vue2與Vue3的區(qū)別怎么回答

這篇文章主要講解了“面試問Vue2與Vue3的區(qū)別怎么回答”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“面試問Vue2與Vue3的區(qū)別怎么回答”吧!

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),龍湖企業(yè)網(wǎng)站建設(shè),龍湖品牌網(wǎng)站建設(shè),網(wǎng)站定制,龍湖網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,龍湖網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

Vue 內(nèi)部根據(jù)功能可以被分為三個大的模塊:響應(yīng)性 reactivite、運(yùn)行時 runtime、編輯器 compiler,以及一些小的功能點(diǎn)。那么要說 vue2vue3 的區(qū)別,我們需要從這三個方面加小的功能點(diǎn)進(jìn)行說起。

首先先來說 響應(yīng)性 reactivite

vue2 的響應(yīng)性主要依賴 Object.defineProperty 進(jìn)行實現(xiàn),但是 Object.defineProperty 只能監(jiān)聽 指定對象的指定屬性的 getter 行為和 setter 行為,那么這樣在某些情況下就會出現(xiàn)問題。

什么問題呢?

比如說:我們在 data 中聲明了一個對象 person ,但是在后期為 person 增加了新的屬性,那么這個新的屬性就會失去響應(yīng)性。想要解決這個問題其實也非常的簡單,可以通過 Vue.$set 方法來增加 指定對象指定屬性的響應(yīng)性。但是這樣的一種方式,在 Vue 的自動響應(yīng)性機(jī)制中是不合理。

所以在 Vue3 中,Vue 引入了反射和代理的概念,所謂反射指的是 Reflect,所謂代理指的是 Proxy。我們可以利用 Proxy 直接代理一個普通對象,得到一個 proxy 實例 的代理對象。在 vue3 中,這個過程通過 reactive 這個方法進(jìn)行實現(xiàn)。

但是 proxy 只能實現(xiàn)代理復(fù)雜數(shù)據(jù)類型,所以 vue 額外提供了 ref 方法,用來處理簡單數(shù)據(jù)類型的響應(yīng)性。ref 本質(zhì)上并沒有進(jìn)行數(shù)據(jù)的監(jiān)聽,而是構(gòu)建了一個 RefImpl 的類,通過 setget 標(biāo)記了 value 函數(shù),以此來進(jìn)行的實現(xiàn)。所以 ref 必須要通過 .value 進(jìn)行觸發(fā),之所以要這么做本質(zhì)是調(diào)用 value 方法

接下來是運(yùn)行時 runtime

所謂的運(yùn)行時,大多數(shù)時候指的是 renderer 渲染器,渲染器本質(zhì)上是一個對象,內(nèi)部主要三個方法 render、hydrate、createApp ,其中 render 主要處理渲染邏輯,hydrate 主要處理服務(wù)端渲染邏輯,而 createApp 就是創(chuàng)建 vue 實例的方法。

這里咱們主要來說 render 渲染函數(shù),vue3 中為了保證宿主環(huán)境與渲染邏輯的分離,把所有與宿主環(huán)境相關(guān)的邏輯進(jìn)行了抽離,通過接口的形式進(jìn)行傳遞。這樣做的目的其實是為了解綁宿主環(huán)境與渲染邏輯,以保證 vue 在非瀏覽器端的宿主環(huán)境下可以正常渲染。

再往下是 編輯器 compiler

vue 中的 compiler 其實是一個 DSL(特定領(lǐng)域下專用語言編輯器) ,其目的是為了把 template 模板 編譯成 render 函數(shù)。 邏輯主要是分成了三大步: parse、transform 和 generate。其中 parse 的作用是為了把 template 轉(zhuǎn)化為 AST(抽象語法樹)transform 可以把 AST(抽象語法樹) 轉(zhuǎn)化為 JavaScript AST,最后由 generateJavaScript AST 通過轉(zhuǎn)化為 render 函數(shù)。轉(zhuǎn)化的過程中會涉及到一些稍微復(fù)雜的概念,比如 有限自動狀態(tài)機(jī)這個就不再這里展開說了。

除此之外,還有一些其他的變化。比如 vue3 新增的 composition API。 composition APIvue3.0vue3.2 中會有一些不同的呈現(xiàn),比如說:最初的 composition APIsetup 函數(shù)作為入口函數(shù), setup 函數(shù)必須返回兩種類型的值:第一是對象,第二是函數(shù)。

當(dāng) setup 函數(shù)返回對象時,對象中的數(shù)據(jù)或方法可以在 template 中被使用。當(dāng) setup 函數(shù)返回函數(shù)時,函數(shù)會被作為 render 函數(shù)。

但是這種 setup 函數(shù)的形式并不好,因為所有的邏輯都集中在 setup 函數(shù)中,很容易出現(xiàn)一個巨大的 setup 函數(shù),我們把它叫做巨石(屎山)函數(shù)。所以 vue 3.2 的時候,新增了一個 script setup 的語法糖,嘗試解決這個問題。目前來看 script setup 的呈現(xiàn)還是非常不錯的。

除此之外還有一些小的變化,比如 Fragment、Teleport、Suspense 等等,這些就不去說了.

感謝各位的閱讀,以上就是“面試問Vue2與Vue3的區(qū)別怎么回答”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對面試問Vue2與Vue3的區(qū)別怎么回答這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!


分享標(biāo)題:面試問Vue2與Vue3的區(qū)別怎么回答
本文網(wǎng)址:http://weahome.cn/article/pchesd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部