angular7雙向數(shù)據(jù)綁定原理 VUE數(shù)據(jù)響應(yīng)原理真的是雙向綁定嗎?效果如何?
VUE數(shù)據(jù)響應(yīng)原理真的是雙向綁定嗎?效果如何?vue2.x是以object.defineProperty來(lái)實(shí)現(xiàn)的問(wèn)題是不能檢測(cè)到數(shù)組對(duì)象內(nèi)部的數(shù)據(jù)變化 vue3.x是用的是es6的proxy來(lái)實(shí)現(xiàn)的
VUE數(shù)據(jù)響應(yīng)原理真的是雙向綁定嗎?效果如何?
vue2.x是以object.defineProperty來(lái)實(shí)現(xiàn)的
問(wèn)題是不能檢測(cè)到數(shù)組對(duì)象內(nèi)部的數(shù)據(jù)變化 vue3.x是用的是es6的proxy來(lái)實(shí)現(xiàn)的 可以檢測(cè)到數(shù)組內(nèi)部的變化 具體可以看看我寫的文章
vue2.x和vue3.x雙向數(shù)據(jù)綁定的區(qū)別一文
前端面試被問(wèn)到,vue實(shí)現(xiàn)數(shù)據(jù)雙向綁定,原理是啥?
其原理大致是這樣:
在數(shù)據(jù)渲染時(shí)使用prop渲染數(shù)據(jù)
將prop綁定到子組件自身的數(shù)據(jù)上,修改數(shù)據(jù)時(shí)修改自身數(shù)據(jù)來(lái)替代prop
watch子組件自身數(shù)據(jù)的改變,觸發(fā)事件通知父組件更改綁定到prop的數(shù)據(jù)
這樣做的好處是:父組件數(shù)據(jù)改變時(shí),不會(huì)修改存儲(chǔ)prop的子組件數(shù)據(jù),只是以子組件數(shù)據(jù)為媒介,完成對(duì)prop的雙向修改。
vue.js的優(yōu)點(diǎn)和缺點(diǎn)在哪?
vue 是目前國(guó)內(nèi)最火熱的前端 MVVM框架,其優(yōu)缺點(diǎn)如下:
一、優(yōu)點(diǎn)
- 易于開(kāi)發(fā):vue 提供了頁(yè)面數(shù)據(jù)渲染模板引擎如 v-if、v-for 等、提供事件綁定 @click等,代碼清晰明了,邏輯簡(jiǎn)單,易于上手;
 - 高性能:Vue 提出虛擬 DOM 概念,以及數(shù)據(jù)驅(qū)動(dòng) DOM 思想,減少頁(yè)面渲染成本,大幅度提高性能;
 - 生態(tài)完善:許多開(kāi)發(fā)者提供了對(duì) vue 支持的插件如 ElementUI,完善 vue 的生態(tài),故使用 vue 進(jìn)行開(kāi)發(fā),遇到的難題會(huì)較少。
 - 開(kāi)源社區(qū)活躍:這提供 vue 未來(lái)更加強(qiáng)大的可能性。
 
二、缺點(diǎn)
- SEO不好:vue 很多內(nèi)容都是基于JS,如頁(yè)面顯示的標(biāo)簽元素,都成為虛擬DOM,通過(guò)數(shù)據(jù)驅(qū)動(dòng) DOM,這樣的頁(yè)面,在搜索引擎SEO方面,不是很友好;
 - 調(diào)試?yán)щy:vue 帶來(lái)便捷的同時(shí),封裝過(guò)復(fù)雜,開(kāi)發(fā)時(shí)遇到問(wèn)題,很難排查出問(wèn)題導(dǎo)致的原因。
 
三、小結(jié)
總之,優(yōu)點(diǎn)大于缺點(diǎn),否則 vue 也不會(huì)像現(xiàn)在這么火了,2020.4 推出 vue3.0,功能更加強(qiáng)大,我們應(yīng)對(duì) vue 的未來(lái)充滿信心。
Vue被淘汰了嗎?
我今天才開(kāi)始去了解Vue-cli 3.0,著手寫了一個(gè)demo下來(lái)發(fā)現(xiàn),簡(jiǎn)直驚為天人,拋棄了2.x版本繁瑣的webpack配置,現(xiàn)在的可以說(shuō)簡(jiǎn)潔明了,你甚至不用寫vue.config.js也行,空著唄,反正無(wú)傷大雅,但如果你配置一下你會(huì)發(fā)現(xiàn)也并不麻煩。
在我知道的知識(shí)范圍內(nèi),應(yīng)該是沒(méi)有比這個(gè)腳手架更能快速直接地反應(yīng)出數(shù)組或?qū)ο笞兓牧恕?/p>
此外,語(yǔ)法糖基本沒(méi)有很大變化,以前該怎么用現(xiàn)在還怎么用,只是性能優(yōu)化和語(yǔ)法糖很多了。講真,我完全找不到vue-cli3.0致命的坑。
然后,我還看到有人為jq打抱不平,我在一年半以前基本都是用jq寫的,那時(shí)候覺(jué)得jq是js最好的框架,實(shí)在太方便了,操作dom也實(shí)在太爽了,直到我某次寫一個(gè)排課項(xiàng)目卡了殼。。。
隨后我就轉(zhuǎn)小程序了,發(fā)現(xiàn)小程序的寫法不就是vue么。。。尤其是組件的寫法。。。
講到底,vue被淘汰有點(diǎn)難,畢竟這個(gè)時(shí)代是操作數(shù)據(jù)的時(shí)代,已經(jīng)不是dom操作的天下了。
最后,我覺(jué)得你不應(yīng)該拘泥于前端框架,就算以后會(huì)出現(xiàn)更先進(jìn)的框架,充其量也還是js,我實(shí)在想不出在框架這方面還能玩出什么花了。大概es會(huì)慢慢參考這些框架,然后自己變成如此也說(shuō)不定。就比如當(dāng)年你能想到j(luò)s里面還能寫class來(lái)繼承?我第一次看到還以為是java。。。但現(xiàn)在不也就支持了么。。。
所以為什么不把目光放向后端?node都熟練了嗎?deno了解過(guò)嗎?php入門了嗎?python好歹掌握一下吧?這些語(yǔ)言我相信以后會(huì)慢慢出現(xiàn)在前端必會(huì)知識(shí)點(diǎn)里面(雖然php已經(jīng)是了,但感覺(jué)過(guò)氣了啊,說(shuō)好的php是世界上最好的語(yǔ)言呢。。。)