Vue 2.3姆吭、2.4 知識點小結(jié)

原文連接 blog 匠璧, 本文不涉及 SSR.

2.3 參考 https://github.com/vuejs/vue/releases/tag/v2.3.0
2.4 參考 https://github.com/vuejs/vue/releases/tag/v2.4.0
實例 demo 地址:https://github.com/jkchao/vue-demo


2.3

  • style 多重值衙解;

      <div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>
    

    這會渲染數(shù)組中最后一個被瀏覽器支持的值喉前。

  • 新增.passive 修飾符 (demo1) 把将; .passive 修飾符表示事件永遠(yuǎn)不會調(diào)用 preventDefault() 轻专,主要為解決滾動和觸摸事件的卡頓而出現(xiàn),關(guān)于 passive 更多信息請移步 MDN 察蹲。

  • 重新引入 .sync 修飾符 (demo2)请垛;提供對于 prop 的雙向綁定。

      <child :bar.sync="foo"></child>
    

    其實是個語法糖

      <child :bar="foo" @update:bar="e => foo = e">
    

    此時需要在子組件中顯示觸發(fā)事件:

      this.$emit('update:bar', newValue)
    
  • Async Component Improvements (demo3);

    在 2.3 之前,可以使用異步組件:

    // some.vue
    export default {
      // ...
      components: {
        'asyncCom': () => import('./asyncC?m')
      }
    }
    

    2.3 新增高級異步組件

    官網(wǎng)上比較清楚:

    為了便于演示,使用延遲加載異步組件:

    
     import loadingCom from '../components/loadingCom.vue'
     import errCom from '../components/errCom.vue'
     const asyncCom = () => ({
       component: new Promise((resolve, reject) => {
         setTimeout(() => {
           resolve(import('../components/asyncCom.vue'))
         }, 2000)
       }),
       loading: loadingCom,
       error: errCom,
       delay: 200,
       timeout: 3000
     })
     
     export default {
       // ...
       components: { asyncCom }
     }
    
    

    效果如下圖:

    或者夹囚,你也可以點擊后加載 (demo4):

    當(dāng)然涂屁,也可以用于 vue-router ( 2.40+ ) demo5

  • Functional Component Improvements杂彭;

    在2.3 + 版本岩喷,函數(shù)式組件可以省略 props 選項视事,所有組件上的屬性會被自動解析 成props匈勋,更多內(nèi)容礼旅,請參考 https://cn.vuejs.org/v2/guide/render-function.html#函數(shù)化組件 。

2.4

  • v-on 支持綁定一個事件/監(jiān)聽器鍵值對的對象洽洁,此時不支持任何修飾器痘系;
  <button v-on="{ mousedown: some, mouseup: other }"></button>
  • 新增 comments 選項,當(dāng)設(shè)為 true 時饿自,將會保留且渲染模板中的 HTML 注釋汰翠;
    該選項暫時無法在構(gòu)建工具中使用 issues
  • 新增 interitAttrs 選項昭雌;

    在版本 2.4 之前复唤,默認(rèn)情況下父作用域的不被作為props特性綁定的屬性,將會作為普通的 HTML 屬性烛卧,應(yīng)用在跟元素上苟穆。

    舉個例子:

    // parent.vue
    <template>
      <child-commpent :foo="f" :boo="b"></child-comment>
    </template>
    
    <script>
    const childComment = () => import('./childCom.vue')
    export default {
      data () {
        return {
          f: 'Hello world!'
          b: 'Hello Vue!'
        }  
      }
    }
    </script>
    
    // childComment.vue
    <template>
      <div>{{ foo }}<div>
    </template>
    
    <script>
    export default {
      props: ['foo']
    }
    </script>
    

    最后會被渲染為:

    <div boo="Hello Vue!">Hello world!</div>
    

    設(shè)置 interitAttrsfalse,之后唱星,不會應(yīng)用到跟元素上雳旅。

    // childCom.vue
    <template>
      <div>{{ foo }}</div>
    </template>
    
    <script>
    export default {
      props: ['foo'],
      inheritAttrs: false
    }
    </script>
    
    

    渲染:

    
    <div>Hello world!</div>
    
    
  • 新增 $attrs, $listeners 選項;

    多級組件嵌套需要傳遞數(shù)據(jù)時间聊,通常使用的方法是通過 vuex 攒盈。如果僅僅是傳遞數(shù)據(jù),而不做中間處理哎榴,使用 vuex 處理型豁,未免有點殺雞用牛刀,Vue 2.4 版本提供了另一種方法尚蝌,使用 v-bind="$attrs", 將父組件中不被認(rèn)為 props特性綁定的屬性傳入子組件中迎变,通常配合 interitAttrs 選項一起使用,具體請看 demo 飘言。

    // demo.vue
    <template>
      <div>
        <child-com :foo="foo" :boo="boo" :coo="coo" :doo="doo"></child-com>
      </div>
    </tempalte>
    <script>
    const childCom = () => import('./childCom1.vue')
    export default {
      data () {
        return {
          foo: 'Hello World!',
          boo: 'Hello Javascript!',
          coo: 'Hello Vue',
          doo: 'Last'
        }
      },
      components: { childCom }
    }
    </script>
    
    
    // childCom1.vue
    <template>
      <div>
        <p>foo: {{ foo }}</p>
        <p>attrs: {{ $attrs }}</p>
        <child-com2 v-bind="$attrs"></child-com2>
      </div>
    </template>
    <script>
    const childCom2 = () => import('./childCom2.vue')
    export default {
      props: ['foo'],
      inheritAttrs: false,
      created () {
        console.log(this.$attrs) // { boo: 'Hello Javascript!', coo: 'Hello Vue', doo: 'Last' }
      }
    }
    </script>
    
    // childCom2.vue
    <template>
      <div>
       <p>boo: {{ boo }}</p>
       <p>attrs: {{ $attrs }}</p>
       <child-com3 v-bind="$attrs"></child-com3>
      </div>
    </template>
    
    <script>
    const childCom3 = () => import('./childCom3.vue')
    export default {
      props: ['boo']
      inheritAttrs: false,
      created () {
        console.log(this.$attrs) // { coo: 'Hello Vue', doo: 'Last' }
      }
    }
    </script>
    
    // childCom3.vue
    // ...
    

    最后被渲染為

    具體請看 demo6 衣形。

    $listeners 的用法和 $attrs 類似,demo6 姿鸿。


ru
完谆吴。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市苛预,隨后出現(xiàn)的幾起案子句狼,更是在濱河造成了極大的恐慌,老刑警劉巖热某,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腻菇,死亡現(xiàn)場離奇詭異胳螟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)筹吐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門糖耸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人骏令,你說我怎么就攤上這事÷⑻幔” “怎么了榔袋?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長铡俐。 經(jīng)常有香客問我凰兑,道長,這世上最難降的妖魔是什么审丘? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任吏够,我火速辦了婚禮,結(jié)果婚禮上滩报,老公的妹妹穿的比我還像新娘锅知。我一直安慰自己,他們只是感情好脓钾,可當(dāng)我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布售睹。 她就那樣靜靜地躺著,像睡著了一般可训。 火紅的嫁衣襯著肌膚如雪昌妹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天握截,我揣著相機(jī)與錄音飞崖,去河邊找鬼。 笑死谨胞,一個胖子當(dāng)著我的面吹牛固歪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胯努,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼昼牛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了康聂?” 一聲冷哼從身側(cè)響起贰健,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎恬汁,沒想到半個月后伶椿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辜伟,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年脊另,在試婚紗的時候發(fā)現(xiàn)自己被綠了导狡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡偎痛,死狀恐怖旱捧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情踩麦,我是刑警寧澤枚赡,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站谓谦,受9級特大地震影響贫橙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜反粥,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一卢肃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧才顿,春花似錦莫湘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至竣贪,卻和暖如春军洼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背演怎。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工匕争, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人爷耀。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓甘桑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親歹叮。 傳聞我的和親對象是個殘疾皇子跑杭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,515評論 2 359

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