Vue2.0的改變

vue2.0-組件定義方式
  • 全局
 <script>
        var Home={  //這是2.0組件
            template:'#aaa'
        };  //Vue.extend()

        Vue.component('my-aaa',Home);


        window.onload=function(){
            new Vue({
                el:'#box',
                data:{
                    msg:'welcome vue2.0'
                }
            });
        };
    </script>
<template id="aaa">
        <div>
            <h3>我是組件</h3>
            <strong>我是加粗標(biāo)簽</strong>
        </div>
    </template>
    <div id="box">
        <my-aaa></my-aaa>
        {{msg}}
    </div>
  • 局部
var Home={  //這是2.0組件
            template:'#aaa'
        };  //Vue.extend()



        window.onload=function(){
            new Vue({
                el:'#box',
                data:{
                    msg:'welcome vue2.0'
                },
                components:{
                    'aaa':Home
                }
            });
        };
Vue.component('my-aaa',{
            template:'#aaa'
        });

        window.onload=function(){
            new Vue({
                el:'#box',
                data:{
                    msg:'welcome vue2.0'
                }
            });
        };
生命周期
beforeCreate    組件實例剛剛被創(chuàng)建,屬性都沒有
        created 實例已經(jīng)創(chuàng)建完成,屬性已經(jīng)綁定
        beforeMount 模板編譯之前
        mounted 模板編譯之后,代替之前ready  *
        beforeUpdate    組件更新之前
        updated 組件更新完畢  *
        beforeDestroy   組件銷毀前
        destroyed   組件銷毀后
  <script>

        window.onload=function(){
            new Vue({
                el:'#box',
                data:{
                    msg:'welcome vue2.0'
                },
                methods:{
                    update(){
                        this.msg='大家好';
                    },
                    destroy(){
                        this.$destroy();
                    }
                },
                beforeCreate(){
                    console.log('組件實例剛剛被創(chuàng)建');
                },
                created(){
                    console.log('實例已經(jīng)創(chuàng)建完成');
                },
                beforeMount(){
                    console.log('模板編譯之前');
                },
                mounted(){
                    console.log('模板編譯完成');
                },
                beforeUpdate(){
                    console.log('組件更新之前');
                },
                updated(){
                    console.log('組件更新完畢');
                },
                beforeDestroy(){
                    console.log('組件銷毀之前');
                },
                destroyed(){
                    console.log('組件銷毀之后');
                }
            });
        };
    </script>
</head>
<body>
    <div id="box">
        <input type="button" value="更新數(shù)據(jù)" @click="update">
        <input type="button" value="銷毀組件" @click="destroy">
        {{msg}}
    </div>
</body>
組件2.0循環(huán)
<script>
        window.onload=function(){
            new Vue({
                el:'#box',
                data:{
                    list:['width','height','border']
                },
                methods:{
                    add(){
                        this.list.push('background');
                    }
                }
            });
        };
    </script>
</head>
<body>
    <div id="box">
        <input type="button" value="添加" @click="add">
        <ul>
            <li v-for="(val,index) in list" :key="index">
                {{val}} {{index}}
            </li>
        </ul>
    </div>
</body>
自定義鍵盤
 <script>
        //Vue.directive('on').keyCodes.ctrl=17;
        Vue.config.keyCodes.ctrl=17;

        window.onload=function(){
            new Vue({
                el:'#box',
                data:{
                },
                methods:{
                    change(){
                        alert('改變了');
                    }
                }
            });
        };
    </script>
</head>
<body>
    <div id="box">
        <input type="text" @keyup.ctrl="change">
    </div>
</body>
單一事件中心管理組件通信
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue.js"></script>
    <script>
        //準(zhǔn)備一個空的實例對象
        var Event=new Vue();


        var A={
            template:`
                <div>
                    <span>我是A組件</span> -> {{a}}
                    <input type="button" value="把A數(shù)據(jù)給C" @click="send">
                </div>
            `,
            methods:{
                send(){
                    Event.$emit('a-msg',this.a);
                }
            },
            data(){
                return {
                    a:'我是a數(shù)據(jù)'
                }
            }
        };
        var B={
            template:`
                <div>
                    <span>我是B組件</span> -> {{a}}
                    <input type="button" value="把B數(shù)據(jù)給C" @click="send">
                </div>
            `,
            methods:{
                send(){
                    Event.$emit('b-msg',this.a);
                }
            },
            data(){
                return {
                    a:'我是b數(shù)據(jù)'
                }
            }
        };
        var C={
            template:`
                <div>
                    <h3>我是C組件</h3>
                    <span>接收過來的A的數(shù)據(jù)為: {{a}}</span>
                    <br>
                    <span>接收過來的B的數(shù)據(jù)為: {缓醋}</span>
                </div>
            `,
            data(){
                return {
                    a:'',
                    b:''
                }
            },
            mounted(){
                //var _this=this;
                //接收A組件的數(shù)據(jù)
                Event.$on('a-msg',function(a){
                    this.a=a;
                }.bind(this));

                //接收B組件的數(shù)據(jù)
                Event.$on('b-msg',function(a){
                    this.b=a;
                }.bind(this));
            }
        };


        window.onload=function(){
            new Vue({
                el:'#box',
                components:{
                    'com-a':A,
                    'com-b':B,
                    'com-c':C
                }
            });
        };
    </script>
</head>
<body>
    <div id="box">
        <com-a></com-a>
        <com-b></com-b>
        <com-c></com-c>
    </div>
</body>
</html>

vue2.0:
bower info vue

http://vuejs.org/

到了2.0以后呻顽,有哪些變化?

  1. 在每個組件模板旭蠕,不在支持片段代碼
    組件中模板:
    之前:
    <template>
    <h3>我是組件</h3><strong>我是加粗標(biāo)簽</strong>
    </template>
    現(xiàn)在: 必須有根元素吗购,包裹住所有的代碼
    <template id="aaa">
    <div>
    <h3>我是組件</h3>
    <strong>我是加粗標(biāo)簽</strong>
    </div>
    </template>

  2. 關(guān)于組件定義
    Vue.extend 這種方式喊递,在2.0里面有疤剑,但是有一些改動滑绒,這種寫法,即使能用隘膘,咱也不用——廢棄

    Vue.component(組件名稱,{ 在2.0繼續(xù)能用
    data(){}
    methods:{}
    template:
    });

    2.0推出一個組件疑故,簡潔定義方式:
    var Home={
    template:'' -> Vue.extend()
    };

  3. 生命周期
    之前:
    init
    created
    beforeCompile
    compiled
    ready √ -> mounted
    beforeDestroy
    destroyed
    現(xiàn)在:
    beforeCreate 組件實例剛剛被創(chuàng)建,屬性都沒有
    created 實例已經(jīng)創(chuàng)建完成,屬性已經(jīng)綁定
    beforeMount 模板編譯之前
    mounted 模板編譯之后弯菊,代替之前ready *
    beforeUpdate 組件更新之前
    updated 組件更新完畢 *
    beforeDestroy 組件銷毀前
    destroyed 組件銷毀后

  4. 循環(huán)
    2.0里面默認(rèn)就可以添加重復(fù)數(shù)據(jù)

    arr.forEach(function(item,index){

    });

    去掉了隱式一些變量
    $index $key

    之前:
    v-for="(index,val) in array"
    現(xiàn)在:
    v-for="(val,index) in array"

  1. track-by="id"
    變成
    <li v-for="(val,index) in list" :key="index">

  2. 自定義鍵盤指令
    之前:Vue.directive('on').keyCodes.f1=17;

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

  3. 過濾器
    之前:
    系統(tǒng)就自帶很多過濾
    {{msg | currency}}
    {{msg | json}}
    ....
    limitBy
    filterBy
    .....
    一些簡單功能纵势,自己通過js實現(xiàn)

    到了2.0, 內(nèi)置過濾器管钳,全部刪除了

lodash  工具庫 _.debounce(fn,200)


自定義過濾器——還有
    但是,自定義過濾器傳參

    之前: {{msg | toDou '12' '5'}}
    現(xiàn)在:     {{msg | toDou('12','5')}}

組件通信:
vm.$emit()
vm.$on();

父組件和子組件:

子組件想要拿到父組件數(shù)據(jù):
    通過  props

之前钦铁,子組件可以更改父組件信息,可以是同步  sync
現(xiàn)在蹋嵌,不允許直接給父級的數(shù)據(jù)育瓜,做賦值操作

問題,就想更改:
    a). 父組件每次傳一個對象給子組件, 對象之間引用  √
    b). 只是不報錯, mounted中轉(zhuǎn)

可以單一事件管理組件通信: vuex
var Event=new Vue();

Event.$emit(事件名稱, 數(shù)據(jù))

Event.$on(事件名稱,function(data){
    //data
}.bind(this));

debounce 廢棄
-> lodash
_.debounce(fn,時間)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末栽烂,一起剝皮案震驚了整個濱河市躏仇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腺办,老刑警劉巖焰手,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異怀喉,居然都是意外死亡书妻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門躬拢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躲履,“玉大人,你說我怎么就攤上這事聊闯」げ拢” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵菱蔬,是天一觀的道長篷帅。 經(jīng)常有香客問我史侣,道長,這世上最難降的妖魔是什么魏身? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任惊橱,我火速辦了婚禮,結(jié)果婚禮上箭昵,老公的妹妹穿的比我還像新娘税朴。我一直安慰自己,他們只是感情好家制,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布掉房。 她就那樣靜靜地躺著,像睡著了一般慰丛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘾杭,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天诅病,我揣著相機(jī)與錄音,去河邊找鬼粥烁。 笑死贤笆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的讨阻。 我是一名探鬼主播芥永,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼钝吮!你這毒婦竟也來了埋涧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤奇瘦,失蹤者是張志新(化名)和其女友劉穎棘催,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耳标,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡醇坝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了次坡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呼猪。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖砸琅,靈堂內(nèi)的尸體忽然破棺而出宋距,到底是詐尸還是另有隱情,我是刑警寧澤明棍,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布乡革,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏沸版。R本人自食惡果不足惜嘁傀,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望视粮。 院中可真熱鬧细办,春花似錦、人聲如沸蕾殴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钓觉。三九已至茴肥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荡灾,已是汗流浹背瓤狐。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留批幌,地道東北人础锐。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像荧缘,于是被迫代替她去往敵國和親皆警。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

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

  • 本文作者 Jinkey(微信公眾號 jinkey-love截粗,官網(wǎng) https://jinkey.ai)原文鏈接 h...
    JinkeyAI閱讀 425,521評論 152 921
  • 狂風(fēng)驟雨一般的一邊是火焰一邊是冰塊的永不停歇的像個孩子一樣高興的像個老頭子一樣頑固的又像個女孩子一樣突然就要生氣的...
    艾黑丫閱讀 315評論 11 26
  • 早上站樁信姓,很快就感到心輪的位置熱起來了,像被一團(tuán)白色的熱氣拖著绸罗,然后是兩側(cè)肩胛财破,雙臂,雙手手心从诲,都開始熱起來左痢,像是...
    塔羅師默默閱讀 280評論 0 0
  • 我有茶有游戲俊性,你有故事嗎? Q脈圈的同學(xué)說描扯,茶定页,我老公一個月喝幾百斤 哇、這款同學(xué)請給我來一打
    Q同學(xué)會閱讀 471評論 0 0