vue1.x和vue2.0區(qū)別(未)

一 轉(zhuǎn)義輸出html
  • 棄用了原來<span>{{{message}}}</span>寫法,只保留了<span v-html="message"></span>的寫法。
二 v-for循環(huán)中常用的$index、$key也已不支持使用
三 過濾器
  • 2.0不再有自帶過濾器,需要自己定義
  • 在vue2.0里 過濾器只能用類似函數(shù)的寫法reverseString( ‘I must tell you:’),括號內(nèi)是參數(shù),不同于vue1.0的用空格后加參數(shù)的寫法;
  • v-text里用過濾器失效,原因是在vue2.0里 管道符‘|’只能用在mousetache和v-bind中。
Vue.filter('filtername',function(value,參數(shù)){
        return 參數(shù)+value.split('').reverse().join('');

    });
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>

</style>
</head>
<script src='./vue2.js'></script>
<script>
window.onload=function(){
    //類似于自定義指令,可以用全局方法 Vue.filter() 注冊一個(gè)自定義過濾器,它接收兩個(gè)參數(shù):過濾器 ID 和過濾器函數(shù)。
    Vue.filter('reverseString',function(value,myString){
        // function里第一個(gè)參數(shù)value默認(rèn)為使用這個(gè)過濾器的data值,在本例中是msg的值'you are mine'。請注意:第一個(gè)參數(shù)必須為自身的值,后面可以加任意多的參數(shù)
        return myString+value.split('').reverse().join('');

    });

    new Vue({
        el:'#box',
        data:{
            msg:'you are mine'  
        }   
    });
};
</script>
<body>

<div id='box'>
    <p>msg is: <br>{{msg}}</p>
    <hr>
    <p>reverse msg is: <br>{{msg|reverseString( 'Hello:' )}}</p><!-- 在vue2.0里 過濾器只能用類似函數(shù)的寫法reverseString( 'I must tell you:'),括號內(nèi)是參數(shù),不同于vue1.0的用空格后加參數(shù)的寫法"  msg|reverseString  'I must tell you:' " -->

    <!-- <p v-text="msg|reverseString( 'I must tell you:' )"></p>失效 -->
    <!-- v-text里用過濾器失效,原因是在vue2.0里 管道符‘|’只能用在mousetache和v-bind中 -->
</div>

</body>
</html>

四 組件定義的變化
  • 在每個(gè)組件模板中,組件的定義有一點(diǎn)變化且不再支持片段代碼

之前可以寫片段代碼

<template>
    <h3>我是標(biāo)題</h3>
    <strong>我是組件</strong>
</template>

現(xiàn)在必須有一個(gè)根元素包裹

<template id="aaa">
    <div>
      <h3>我是標(biāo)題</h3>
      <strong>我是組件</strong>
    </div>
</template>
Vue.component('my-aaa',{
    template:'#aaa'
    
});
  • vue2.0組件定義的變化:(不再支持Vue.extend()的定義方式,有改動)
  1. Vue.component在2.0繼續(xù)能夠使用,但是不簡潔
Vue.component(組件名稱,{
    data(){},
    methods:{},
    template:''
});
  1. vue2.0推薦定義組件的一個(gè)簡潔的方法
var Home={ //定義一個(gè)json,即是定義的一個(gè)組件
    template:'#aaa'
}; //相當(dāng)于vue1.0之前的vue.extend();
Vue.component('my-aaa',Home); //定義好組件之后,需要注冊
<template id="aaa">
    <div>
      <h3>我是標(biāo)題</h3>
      <strong>我是組件</strong>
    </div>
</template>

五 組件通信的變化

子組件與父組件:

  • 子組件想要拿到父組件的數(shù)據(jù)
    • 通過props,沒有更改
    • $broadcast(),已廢除

父組件里:

<parent>
    <child :child-msg="msg"></child>//這里必須要用 - 代替駝峰
</parent>
data(){
    return {
        msg: [1,2,3]
    };
}

子組件通過props來接收數(shù)據(jù)

法一:

props: ['childMsg']

法二:

props: {
    childMsg: Array //這樣可以指定傳入的類型,如果類型不對,會警告
}

法三:

props: {
    childMsg: {
        type: Array,
        default: [0,0,0] //這樣可以指定默認(rèn)的值
    }
}

例子:

<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <template id="aaa">
        <h1>11111</h1>
        <bbb :mmm="msg2"></bbb>
    </template>
    <script>
        var vm=new Vue({
            el:'#box',
            data:{
                a:'aaa'
            },
            components:{
                'aaa':{
                    data(){
                        return {
                            msg2:'我是父組件的數(shù)據(jù)'
                        }
                    },
                    template:'#aaa',
                    components:{
                        'bbb':{
                            props:['mmm'],
                            template:'<h3>我是bbb組件->{{mmm}}</h3>'
                        }
                    }
                }
            }
        });

    </script>
</body>
  • 子組件想要更改父組件數(shù)據(jù)/傳遞數(shù)據(jù)給父組件
    在vue1.0中:
  1. 子組件利用$dispatch()來向父組件傳遞數(shù)據(jù),2.0已廢除
  2. 子組件調(diào)用$emit和父組件用v-on監(jiān)聽子組件的變化,進(jìn)而獲取數(shù)據(jù)
    • vm.$emit(事件名,數(shù)據(jù));

    • v-on: @

子組件:
<template>
    <div @click="send"></div>
</template>

methods: {
    send() {
        this.$emit('child-msg','我是子組件數(shù)據(jù)'); //主動觸發(fā)child-msg方法,‘我是子組件數(shù)據(jù)’為向父組件傳遞的數(shù)據(jù)
    }

父組件

<div>
    <child @child-msg="change" :msg="msg"></child> //監(jiān)聽子組件觸發(fā)的child-msg事件,然后調(diào)用change方法
</div>
methods: {
    change(msg) {
        this.msg = msg;
    }
}

例子:

<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <template id="aaa">
        <span>我是父級 -> {{msg}}</span>
        <bbb @child-msg="get"></bbb>
    </template>
    <template id="bbb">
        <h3>子組件-</h3>
        <input type="button" value="send" @click="send">
    </template>
    <script>
        var vm=new Vue({
            el:'#box',
            data:{
                a:'aaa'
            },
            components:{
                'aaa':{
                    data(){
                        return {
                            msg:111,
                            msg2:'我是父組件的數(shù)據(jù)'
                        }
                    },
                    template:'#aaa',
                    methods:{
                        get(msg){
                            // alert(msg);
                            this.msg=msg;
                        }
                    },
                    components:{
                        'bbb':{
                            data(){
                                return {
                                    a:'我是子組件的數(shù)據(jù)'
                                }
                            },
                            template:'#bbb',
                            methods:{
                                send(){
                                    this.$emit('child-msg',this.a);
                                }
                            }
                        }
                    }
                }
            }
        });

    </script>
</body>

六 自定義鍵盤指令

之前:Vue.directive('on').keyCodes.f1=17;

現(xiàn)在:  Vue.config.keyCodes.ctrl=17

六 Vue過渡

  • 之前:transition 屬性
<p transition="fade"></p>

.fade-transition{}
.fade-enter{}
.fade-leave{}
  • 現(xiàn)在: transition 組件
<transition name="fade">
</transition>

.fade-transition{}
.fade-enter{}
.fade-leave{}  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,668評論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,635評論 2 380

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