在 Vue 的使用過程中會遇到發(fā)布與訂閱的場景,這樣一說大家可能不太懂,我換一個詞“數(shù)據(jù)雙向綁定” 這樣大家是不是就懂了,但是發(fā)布訂閱是怎么實現(xiàn)的呢?接下來就由石家莊網(wǎng)站建設(shè)工程師來為大家講解。
我們知道 Vue 內(nèi)部是實現(xiàn)了雙向綁定機(jī)制,使得我們不用再像從前那樣還要自己操作 DOM 了。
其實 Vue 的雙向綁定機(jī)制采用數(shù)據(jù)劫持結(jié)合發(fā)布/訂閱模式實現(xiàn)的:通過 Object.defineProperty() 來劫持各個屬性的 setter,getter,在數(shù)據(jù)變動時發(fā)布消息給訂閱者,觸發(fā)相應(yīng)的監(jiān)聽回調(diào)。
我發(fā)現(xiàn)有的人把觀察者模式和發(fā)布/訂閱模式混淆一談,其實訂閱模式有一個調(diào)度中心,對訂閱事件進(jìn)行統(tǒng)一管理。而觀察者模式可以隨意注冊事件,調(diào)用事件。
一個大概的流程圖,用來說明觀察者模式和發(fā)布/訂閱模式,如下:

這塊我會在接下的文章中詳細(xì)講到,這里先給出一個概念,感興趣的可以自己查找資料,也可等我的文章出爐。
其實我們對這種模式再熟悉不過了,但可能你自己也沒發(fā)現(xiàn):

可以思考下上面的事件綁定執(zhí)行的一個過程,你應(yīng)該會有共鳴。
以上關(guān)于發(fā)布與訂閱模式屬石家莊網(wǎng)站建設(shè)工程師的個人觀點,大家如果對此有著不同的見解,可以關(guān)注公眾號“尚武科技派”給我留言,大家可以交流一下自己的心得體會,共同學(xué)習(xí)進(jìn)步。