最新文章
Vue 發(fā)布訂閱模式
在 Vue 的使用過(guò)程中會(huì)遇到發(fā)布與訂閱的場(chǎng)景,這樣一說(shuō)大家可能不太懂,我換一個(gè)詞“數(shù)據(jù)雙向綁定” 這樣大家是不是就懂了,但是發(fā)布訂閱是怎么實(shí)現(xiàn)的呢?接下來(lái)就由石家莊網(wǎng)站建設(shè)工程師來(lái)為大家講解。
我們知道 Vue 內(nèi)部是實(shí)現(xiàn)了雙向綁定機(jī)制,使得我們不用再像從前那樣還要自己操作 DOM 了。
其實(shí) Vue 的雙向綁定機(jī)制采用數(shù)據(jù)劫持結(jié)合發(fā)布/訂閱模式實(shí)現(xiàn)的:通過(guò) Object.defineProperty() 來(lái)劫持各個(gè)屬性的 setter,getter,在數(shù)據(jù)變動(dòng)時(shí)發(fā)布消息給訂閱者,觸發(fā)相應(yīng)的監(jiān)聽回調(diào)。
我發(fā)現(xiàn)有的人把觀察者模式和發(fā)布/訂閱模式混淆一談,其實(shí)訂閱模式有一個(gè)調(diào)度中心,對(duì)訂閱事件進(jìn)行統(tǒng)一管理。而觀察者模式可以隨意注冊(cè)事件,調(diào)用事件。
一個(gè)大概的流程圖,用來(lái)說(shuō)明觀察者模式和發(fā)布/訂閱模式,如下:
這塊我會(huì)在接下的文章中詳細(xì)講到,這里先給出一個(gè)概念,感興趣的可以自己查找資料,也可等我的文章出爐。
其實(shí)我們對(duì)這種模式再熟悉不過(guò)了,但可能你自己也沒(méi)發(fā)現(xiàn):
可以思考下上面的事件綁定執(zhí)行的一個(gè)過(guò)程,你應(yīng)該會(huì)有共鳴。
以上關(guān)于發(fā)布與訂閱模式屬石家莊網(wǎng)站建設(shè)工程師的個(gè)人觀點(diǎn),大家如果對(duì)此有著不同的見解,可以關(guān)注公眾號(hào)“尚武科技派”給我留言,大家可以交流一下自己的心得體會(huì),共同學(xué)習(xí)進(jìn)步。