欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Vue如何實現(xiàn)發(fā)布訂閱模式

小編這次要給大家分享的是Vue如何實現(xiàn)發(fā)布訂閱模式,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

創(chuàng)新互聯(lián)公司長期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為南和企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),南和網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

vue項目中不同組件間通信一般使用vuex,通常情況下vuex和EventBus不應(yīng)該混用,不過某些場景下不同組件間只有消息的交互,這時使用EventBus消息通知的方式就更合適一些。

圖解

Vue如何實現(xiàn)發(fā)布訂閱模式

Vue如何實現(xiàn)發(fā)布訂閱模式

html

<body>
 <script src="./Dvue.js"></script>
 <script>
  const app = new DVue({
   data: {
    test: "I am test",
    foo: {
     bar: "bar"
    }
   }
  })

  app.$data.test = "hello world!"
  // app.$data.foo.bar = "hello!"
 </script>
</body>

Dvue.js

class DVue {
 constructor(options) {
  this.$options = options

  // 數(shù)據(jù)響應(yīng)化
  this.$data = options.data
  this.observe(this.$data)

  // 模擬一下watcher創(chuàng)建
  // 激活get 并將依賴添加到deps數(shù)組上
  new Watcher()
  this.$data.test
  new Watcher()
  this.$data.foo.bar
 }

 observe(value) {
  // 判斷value是否是對象  
  if (!value || typeof value !== 'object') {
   return
  }
  
  // 遍歷該對象
  Object.keys(value).forEach(key => {
   this.defineReactive(value, key, value[key])
  })
 }

 // 數(shù)據(jù)響應(yīng)化
 defineReactive(obj, key, val) {
  // 判斷val內(nèi)是否還可以繼續(xù)調(diào)用(是否還有對象)
  this.observe(val) // 遞歸解決數(shù)據(jù)嵌套

  // 初始化dep
  const dep = new Dep()

  Object.defineProperty(obj, key, {
   get() {
    // 讀取的時候 判斷Dep.target是否有,如果有則調(diào)用addDep方法將Dep.target添加到deps數(shù)組上
    Dep.target && dep.addDep(Dep.target)
    return val
   },
   set(newVal) {
    if (newVal === val) {
     return;
    }
    val = newVal
    // console.log(`${key}屬性更新了:${val}`)
    dep.notify() // 更新時候調(diào)用該方法
   }
  })
 }
}


// Dep: 用來管理Watcher
class Dep {
 constructor() {
  // 這里存放若干依賴(watcher) |一個watcher對應(yīng)一個屬性
  this.deps = [];
 }

 // 添加依賴
 addDep (dep) {
  this.deps.push(dep)
 }

 // 通知方法
 notify() {
  this.deps.forEach(dep => dep.update())
 }
}

// Watcher
class Watcher {
 constructor () {
  // 將當前watcher實例指定到Dep靜態(tài)屬性target上
  Dep.target = this  // 當前this就是Watcher對象
 }

 update() {
  console.log('屬性更新了')
 }
}

看完這篇關(guān)于Vue如何實現(xiàn)發(fā)布訂閱模式的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。

網(wǎng)站題目:Vue如何實現(xiàn)發(fā)布訂閱模式
網(wǎng)站網(wǎng)址:http://chinadenli.net/article44/jggohe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、定制網(wǎng)站、建站公司、網(wǎng)站營銷、標簽優(yōu)化、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
91欧美日韩一区人妻少妇| 久久精视频免费视频观看| 伊人色综合久久伊人婷婷| 亚洲一区二区三区四区| 中文字幕日韩欧美一区| 日韩高清一区二区三区四区| 午夜精品国产精品久久久| 东京干男人都知道的天堂| 欧洲一区二区三区自拍天堂| 91后入中出内射在线| 精品日韩欧美一区久久| 久久机热频这里只精品| 日本免费一本一二区三区| 国产美女精品人人做人人爽| 色无极东京热男人的天堂| 国产综合香蕉五月婷在线| 欧美日韩精品久久亚洲区熟妇人| 亚洲精品国男人在线视频| 麻豆视传媒短视频在线看| 好吊妞视频只有这里有精品| 午夜国产精品福利在线观看| 加勒比人妻精品一区二区| 91久久精品国产一区蜜臀| 人妻中文一区二区三区| 欧美一区二区三区性视频| 中文字幕日韩欧美亚洲午夜| 欧美日韩一级aa大片| 欧美韩国日本精品在线| 男人和女人草逼免费视频| 麻豆在线观看一区二区| 黄色av尤物白丝在线播放网址| 国产精品欧美一区两区| 国产欧洲亚洲日产一区二区| 少妇人妻精品一区二区三区| 好吊色欧美一区二区三区顽频| 免费在线成人激情视频| 日韩精品一区二区亚洲| 午夜精品一区二区av| 欧美三级不卡在线观线看| 美女被啪的视频在线观看| 免费一级欧美大片免费看|