Vue學(xué)習(xí)筆記

eslint中expected "indent", got "eos" 在寫stylus時(shí)碰到這種問題签舞,肯定是由于編輯器使用了不一樣的縮進(jìn)方式岛都,需要進(jìn)行設(shè)置即可淑履。因?yàn)樗谀愕木庉嬈髦锌赡苁菍?duì)齊了的稳摄,但是實(shí)際并沒有。 stylus mixin只可以為樣式提供函數(shù)的功能

雖然可以設(shè)置vue中的樣式為scoped模式但是在組件和公用組件中不要起相同的樣式名以免污染

vue生命周期

1.beforeCreate(初始化之后)
2.created(創(chuàng)建完成)
3.beforeMount(掛載之前)
4.mounted(被創(chuàng)建)
5.beforeUpdate(數(shù)據(jù)更新時(shí)調(diào)用措伐,發(fā)生在虛擬 DOM 打補(bǔ)丁之前)
6.updated(虛擬 DOM 重新渲染和打補(bǔ)丁后調(diào)用)
7.activated(keep-alive 組件激活時(shí)調(diào)用)
8.deactivated(keep-alive 組件停用時(shí)調(diào)用)
9.beforeDestory(銷毀前)
10.destoryed(銷毀后)
11.errorCaptured(當(dāng)捕獲一個(gè)來自子孫組件的錯(cuò)誤時(shí)被調(diào)用)  

雙向綁定

自定義組件雙向綁定

  // 發(fā)送input事件
  this.$emit('input',this.val);

當(dāng)某個(gè)響應(yīng)式數(shù)據(jù)發(fā)生變化的時(shí)候特纤,它的setter函數(shù)會(huì)通知閉包中的Dep军俊,Dep則會(huì)調(diào)用它管理的所有Watch對(duì)象侥加。觸發(fā)Watch對(duì)象的update實(shí)現(xiàn)。

update () {
    /* istanbul ignore else */
    if (this.lazy) {
        this.dirty = true
    } else if (this.sync) {
        /*同步則執(zhí)行run直接渲染視圖*/
        this.run()
    } else {
        /*異步推送到觀察者隊(duì)列中粪躬,下一個(gè)tick時(shí)調(diào)用担败。*/
        queueWatcher(this)
    }
}

我們發(fā)現(xiàn)Vue.js默認(rèn)是使用異步執(zhí)行DOM更新昔穴。 當(dāng)異步執(zhí)行update的時(shí)候,會(huì)調(diào)用queueWatcher函數(shù)提前。

/*將一個(gè)觀察者對(duì)象push進(jìn)觀察者隊(duì)列吗货,在隊(duì)列中已經(jīng)存在相同的id則該觀察者對(duì)象將被跳過,除非它是在隊(duì)列被刷新時(shí)推送*/
export function queueWatcher (watcher: Watcher) {
  /*獲取watcher的id*/
  const id = watcher.id
  /*檢驗(yàn)id是否存在狈网,已經(jīng)存在則直接跳過宙搬,不存在則標(biāo)記哈希表has,用于下次檢驗(yàn)*/
  if (has[id] == null) {
    has[id] = true
    if (!flushing) {
      /*如果沒有flush掉拓哺,直接push到隊(duì)列中即可*/
      queue.push(watcher)
    } else {
      // if already flushing, splice the watcher based on its id
      // if already past its id, it will be run next immediately.
      let i = queue.length - 1
      while (i >= 0 && queue[i].id > watcher.id) {
        i--
      }
      queue.splice(Math.max(i, index) + 1, 0, watcher)
    }
    // queue the flush
    if (!waiting) {
      waiting = true
      nextTick(flushSchedulerQueue)
    }
  }
}

查看queueWatcher的源碼我們發(fā)現(xiàn)勇垛,Watch對(duì)象并不是立即更新視圖,而是被push進(jìn)了一個(gè)隊(duì)列queue士鸥,此時(shí)狀態(tài)處于waiting的狀態(tài)闲孤,這時(shí)候會(huì)繼續(xù)會(huì)有Watch對(duì)象被push進(jìn)這個(gè)隊(duì)列queue,等待下一個(gè)tick時(shí)烤礁,這些Watch對(duì)象才會(huì)被遍歷取出讼积,更新視圖。同時(shí)脚仔,id重復(fù)的Watcher不會(huì)被多次加入到queue中去勤众,因?yàn)樵谧罱K渲染時(shí),我們只需要關(guān)心數(shù)據(jù)的最終結(jié)果鲤脏。

radio

// html代碼
<input type="radio" name="lhl" value="0" v-model="index" >
<input type="radio" name="lhl" value="1" v-model="index" >

// vue中代碼
data () {
    index: 0 // index取值為value中的值决摧,初始化為0時(shí)可默認(rèn)選中第一個(gè)
}

vue-router2.0

重定向

routes: [
  {
      path:'/',
      redirect:{'/', 'goods'}
  }
]

不再是1.0中的.go()

Axios

在vue1.x的時(shí)候,vue的官方推薦HTTP請(qǐng)求工具是vue-resource凑兰,但是在vue2.0的時(shí)候?qū)⑼扑]工具改成了axios掌桩。使用方式都差不多,但需要注意的是:接口返回的res并不直接是返回的數(shù)據(jù)姑食,而是經(jīng)過axios本身處理過的json對(duì)象波岛。真正的數(shù)據(jù)在res.data里

使用emit來發(fā)送廣播

vue2提供了一套廣播機(jī)制,即一邊發(fā)送廣播音半,一邊接收廣播來執(zhí)行相應(yīng)操作则拷。 比如想要給test組件發(fā)送一個(gè)“相加”廣播:

export default {
  method: {
    click () {
      Vue.$emit('add',{}) //第二個(gè)參數(shù)可作為傳遞數(shù)據(jù)傳送到監(jiān)聽端口,不需要?jiǎng)t傳空對(duì)象
    }
  }
}

那么test組件中就需要監(jiān)聽曹鸠,在created方法里寫

export default {
  created () {
     Vue.$on('add', this.add)
  },
  method: {
     add () {
        this.count++
     }
  }
}

keep-alive

1.普通用法

<keep-alive>
    <router-view></router-view>
</keep-alive>

<keep-alive>
    <component>
        <!-- 組件將被緩存 -->
    </component>
</keep-alive>

2.緩存部分頁(yè)面或者組件
(1)使用router.mate屬性

// 這是目前用的比較多的方式
<keep-alive>
    <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

route.js設(shè)置

  routes: [
    { path: '/', redirect: '/index',  component: Index, meta: { keepAlive: true }},
    {
      path: '/common',
      component: TestParent,
      children: [
        { path: '/test2', component: Test2, meta: { keepAlive: true } } 
      ]
    }
    ....
    // 表示index和test2都使用keep-alive

(2) 2.1.0后提供了include/exclude兩個(gè)屬性 可以針對(duì)性緩存相應(yīng)的組件

<!-- 逗號(hào)分隔字符串 -->
<keep-alive include="a,b">
    <component :is="view"></component>
</keep-alive>
<!-- 正則表達(dá)式 (使用 v-bind) -->
<keep-alive :include="/a|b/">
    <component :is="view"></component>
</keep-alive>
<!-- Array (use v-bind) -->
<keep-alive :include="['a', 'b']">
    <component :is="view"></component>
</keep-alive>
// 其中a,b是組件的name,如果 name 選項(xiàng)不可用煌茬,則匹配它的局部注冊(cè)名稱(父組件 components 選項(xiàng)的鍵值)。
// 匿名組件不能被匹配彻桃。

注意:這種方法都是預(yù)先知道組件的名稱的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坛善,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌眠屎,老刑警劉巖剔交,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異改衩,居然都是意外死亡岖常,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門葫督,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竭鞍,“玉大人,你說我怎么就攤上這事橄镜×耄” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵蛉鹿,是天一觀的道長(zhǎng)滨砍。 經(jīng)常有香客問我,道長(zhǎng)妖异,這世上最難降的妖魔是什么惋戏? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮他膳,結(jié)果婚禮上响逢,老公的妹妹穿的比我還像新娘。我一直安慰自己棕孙,他們只是感情好舔亭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蟀俊,像睡著了一般钦铺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肢预,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天矛洞,我揣著相機(jī)與錄音,去河邊找鬼烫映。 笑死沼本,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锭沟。 我是一名探鬼主播抽兆,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼族淮!你這毒婦竟也來了辫红?” 一聲冷哼從身側(cè)響起凭涂,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎厉熟,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體较幌,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揍瑟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乍炉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绢片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖岛琼,靈堂內(nèi)的尸體忽然破棺而出底循,到底是詐尸還是另有隱情,我是刑警寧澤槐瑞,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布熙涤,位于F島的核電站,受9級(jí)特大地震影響困檩,放射性物質(zhì)發(fā)生泄漏祠挫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一悼沿、第九天 我趴在偏房一處隱蔽的房頂上張望等舔。 院中可真熱鬧,春花似錦糟趾、人聲如沸慌植。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蝶柿。三九已至,卻和暖如春非驮,著一層夾襖步出監(jiān)牢的瞬間只锭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工院尔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜻展,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓邀摆,卻偏偏與公主長(zhǎng)得像纵顾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子栋盹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 項(xiàng)目腳手架 在這里我使用vue-cli來進(jìn)行安裝 查看項(xiàng)目結(jié)構(gòu)施逾,index.html/main.js是項(xiàng)目入口,A...
    等酒香醇V閱讀 716評(píng)論 0 1
  • 一、vue模塊化開發(fā) 所謂的模塊化開發(fā)是指將不同的部分封裝到不同的模塊中汉额,不再將所有的組件曹仗、路由等寫在一個(gè)頁(yè)面中。...
    間陽(yáng)幕賓閱讀 581評(píng)論 0 1
  • 個(gè)人基于對(duì) Vuejs 的學(xué)習(xí)制作了一個(gè) Todo 單頁(yè)應(yīng)用 Lightodo蠕搜,功能包括:添加待辦事項(xiàng)卡片怎茫,對(duì)卡片...
    AlessiaLi閱讀 21,561評(píng)論 16 308
  • Vue學(xué)習(xí)筆記 Vue初始化對(duì)象 data和methods里面的屬性都是Vue這個(gè)實(shí)例對(duì)象的代理屬性,例:vm.m...
    土豪碼農(nóng)閱讀 1,001評(píng)論 1 1
  • 有這樣一種女孩虫埂,她們不是天生麗質(zhì)祥山,她們長(zhǎng)得普普通通,她們的家境也很普通平凡掉伏》炫唬可是你卻發(fā)現(xiàn)越接觸她們,她們?cè)谀愕难壑?..
    徽姑娘_b76e閱讀 412評(píng)論 0 1