Vue-簡(jiǎn)介和基本語(yǔ)法

1.Vue是什么啄育?

2. Vue安裝步驟:

a. 先下載node.js
b. (cd進(jìn)入到指定的文件目錄) npm install --yes
c. npm install vue -S (下載Vue)


aop面向切面編程是面向?qū)ο笏枷氲难a(bǔ)充量九。
模型氛圍兩種: 數(shù)據(jù)承載模型 徒河, 業(yè)務(wù)處理模型囱淋,

java 和 js 異處:


1. 前段 三要素


2 . JavaScript幾種主流框架:


3. 當(dāng)前主流的前段框架 ( VUE) --(***)
4. 混合開(kāi)發(fā)Flutter --(***)


======================================================================================================================================

  1. 后端為主的mvc時(shí)代



  2. 基于ajax帶來(lái)的spa 時(shí)代


  3. 前端為主的mv*時(shí)代



  4. NodeJs 帶來(lái)的全棧時(shí)代




    總結(jié)


======================================================================================================================================


2. Vue語(yǔ)法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue的基本使用</title>
</head>
<body>
    <div id="app">
        <!-- Vue模版語(yǔ)法{{}}創(chuàng)括號(hào)插值-->
        <h1>{{msg}}</h1>
        <h2>{{1+1}}</h2>
        <h3>{{1>2 ? 'false':'true'}}</h3>
        <h4>{{isTrue}}</h4>
        <h2>{{ {name:'張三'} }}</h2>  <!-- {name:'張三'}  前后要分別空格一下-->
    </div>
    <!--第1步:先引包-->
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
    <!--第2步:創(chuàng)建實(shí)例化對(duì)象-->
    <script type="text/javascript">
        // 數(shù)據(jù)發(fā)生改變時(shí)方椎,視圖也會(huì)發(fā)生改變规求,這就是數(shù)據(jù)驅(qū)動(dòng)視圖
       var data= {
            //數(shù)據(jù)屬性
            //既可以是一個(gè)對(duì)象 也可以是一個(gè)函數(shù)
            msg:'黃瓜',
            msg2:'西紅柿',
            isTrue: 'false'
        }
       var vm= new Vue({
            el:'#app',//目的地
            data: data,
            // data: {
            //     //數(shù)據(jù)屬性
            //     //既可以是一個(gè)對(duì)象 也可以是一個(gè)函數(shù)
            //     msg:'黃瓜',
            //     msg2:'西紅柿',
            //     isTrue: 'false'
            // },
            //模版
            template:''//template優(yōu)先級(jí)更高
        });
       console.log(vm.$el);
       console.log(vm.$data);
       console.log(vm.$data==data);
       console.log(vm.$el==document.getElementById("app"));
    </script>
</body>
</html>

4. Vue指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        .box{
            width: 100px;
            height: 100px;
            background-color: red;
        }
        .box2{
            background-color: yellow;
        }
    </style>

</head>
<body>
    <!--1.引入包-->
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js">
    </script>
    <div id="app">
        !--
        v-if  控制生命周期稿壁,為true就創(chuàng)建实束, 為false就移除奥秆;
        v-show 控制css樣式display,為true就block咸灿, 為false就none构订;
        v-on: 原生事件名='函數(shù)名'
         控制類名對(duì)元素顯示隱藏;
        v-bink 控制標(biāo)簽的屬性(系統(tǒng)屬性/自定屬性)避矢;
         v-for="(item,index) in menuLists"悼瘾;
        -->
    </div>
    <!--創(chuàng)建實(shí)例話對(duì)象-->
    <script type="text/javascript" >
        new Vue({
            el:"#app",
            data:function () {
                return {
                    //數(shù)據(jù)屬性
                    msg:'指令系統(tǒng)',
                    msg2:'<h2>指令系統(tǒng)</h2>',
                    isShow:Math.random()>0.5,
                    result:Math.random(),
                    menuLists:[
                        {id:1,name:'大腰子1',price:71},
                        {id:2,name:'大腰子2',price:72},
                        {id:3,name:'大腰子2',price:73}
                    ],
                    person:{
                        name:'呂小凱',
                        age:27,
                        fav:'編程'
                    }
                }
            },
            //值為:math.random()囊榜,所以
            template:
                '<div class="#app">' +
                    '<h2>{{msg}}</h2>' +
                    '<p v-text="msg"></p>' +
                    '<div v-html="msg2"></div>' +
                    '<p v-text="1+2"></p>' +
                    '<div v-if="isShow" >開(kāi)始你的表演</div>' +
                    '<div v-if="!isShow">結(jié)束你的表現(xiàn)</div>' +
                    '<div v-show="isShow">顯示</div>' +
                    '<div v-show="!isShow">隱藏</div>' +
                    '<div v-if="result>0.5"> 因?yàn)閧{result}}>0.5,所以顯示數(shù)據(jù)</div>' +
                    '<div v-else>因?yàn)閧{result}}<=0.5亥宿,所以隱藏?cái)?shù)據(jù)</div>' +
                    '<div class="box" v-on:click="clickHander"></div>' +
                    '<ul>' +
                        '<li v-for="(item,index) in menuLists">' +
                            '<h3 v-text="index"></h3>' +
                            '<h3 v-text="item.id" ></h3>' +
                            '<h3>{{ item.name }}</h3>' +
                            '<h3>{{ item.price }}</h3>' +
                        '</li>' +
                    '</ul>' +
                    '<ul>' +
                        '<li v-for="(value,key ) in person">' +
                            '{{key}}==={{value}}' +
                        '</li>' +
                    '</ul>'+
            '</div>',
            methods:{
                clickHander(e){
                   this.isRed=!this.isRed;
                }
            }
        });
    </script>
</body>
</html>
4-1. v-model 雙向數(shù)據(jù)綁定的體現(xiàn)
 <!--第1步:引包-->
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
    <!--第2步:-->
    <div id="app">
       !--
        v-model 雙向數(shù)據(jù)綁定的提現(xiàn)卸勺,只會(huì)體現(xiàn)在UI控件中,只能應(yīng)用在有value屬性的標(biāo)簽中

        -->
        <input type="text" v-model="msg">
        <h3>{{msg}}</h3>
    </div>

    <!--第3步:創(chuàng)建實(shí)例化對(duì)象-->
    <script type="text/javascript" >
        new Vue({
            el: "#app",
            data(){
                return{
                    msg:'Tina'
                }
            }
        });
    </script>

5. 組件

5-1 全局組件 ,局部組件的創(chuàng)建/ 及插槽的使用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <!--1. 引包-->
    <script type="text/javascript" src="../node_modules/vue/dist/vue.js"></script>
    <!--2. -->
    <div id="app"></div>
    <!--3.vue的實(shí)例話-->
    <script type="text/javascript" >

        /**
         * 如下是演示全局組件中插槽的使用烫扼;
         * <slot></slot>插槽
         */
       
        //聲明一個(gè)全局組件 Btn2
        Vue.component("MyLi",{
            template:
                "<li> <slot name='one'></slot> <slot name='two'></slot><slot name='three'></slot> </li>"
        });

        //聲明一個(gè)內(nèi)容欄組件 
        var Vcontext2={
            template:
                "<div>" +
                "我是內(nèi)容欄組件2" +
                "<ul>" +
                    "<MyLi>" +
                        "<h2 slot='three'>我是第三個(gè)坑</h2>" +
                        "<h2 slot='two'>我是第二個(gè)坑</h2>" +
                        "<h2 slot='one'>我是第一個(gè)坑</h2>" +
                    "</MyLi>" +
                "</ul>"+
                "</div>"
        };


        /**
         * 如下是演示全局組件曙求,局部組件的創(chuàng)建使用;
         */
        //聲明一個(gè)全局組件 Btn
        Vue.component("Btn",{
            template:
                "<button><slot>按鈕</slot></button>"
        });


        // 聲明一個(gè)頭部的組件
        var Vaside={
            template:"<div>我是側(cè)邊欄</div>"
        };
        //聲明一個(gè)側(cè)邊欄組件
        var Vheader={
            template:"<div>我是頭部欄</div>"
        };
        //聲明一個(gè)內(nèi)容欄組件
        var Vcontext={
            template:
                "<div>" +
                    "我是內(nèi)容欄組件" +
                    "<Btn>成功按鈕</Btn>" +
                    "<Btn>提示按鈕</Btn>" +
                    "<Btn/><br/>" +
                "</div>"
        };
        
        //聲明一個(gè)局部組件的入口
        var App={
            template:
                "<div>" +
                    "首頁(yè)" +
                    "<Vheader/>" +
                    "<div>" +
                        "<Vaside/>" +
                        "<div><Vcontext/></div>" +
                        "<div><Vcontext2/></div>" +
                    "</div>" +
                "</div>",
            components: {
                Vaside,
                Vheader,
                Vcontext,
                Vcontext2
            }
        };

        //根
        new Vue({
            el: "#app",
            data(){
                return{
                }
            },
            template: "<App/>",
            components:{
                App
            }
        });
    </script>

</body>
</html>

5-2 組件之間的傳值
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <!--1.引入vue模塊的包-->
    <script type="text/javascript" src="../node_modules/vue/dist/vue.js"></script>
    <!--2創(chuàng)建一個(gè)div-->
    <div id="app"></div>
    <!--3.創(chuàng)建vue的實(shí)例化對(duì)象-->
    <script type="text/javascript" >
        *
           如下演示父子組件之間采用的是props/ $emit 的方式映企,適合層數(shù)比較少的情況組件間通信悟狱;
            1. 父類向子類組件傳遞信息,先在父類中綁定自定義的屬性堰氓, 再在子組件中使用props 接受父組件傳遞的數(shù)據(jù)挤渐;
            2. 子類向父類組件傳遞信息,先在父組件綁定自定義的事情双絮, 再在子組件中觸發(fā)原生的事件浴麻,在函數(shù)中使用$emit觸發(fā)自定義的childHandler
         */

        //聲明一個(gè)子類的全局組件
         Vue.component("Child",{
             template:
                 "<div>" +
                     "<p>我是{{childData}}子類組件</p>" +
                     "<input type='text' v-model='childData' @input='changeValue(childdata)'/>" +
                 "</div>",
             props:["childData"],
             methods: {
                 changeValue(val){
                     this.$emit("childHandler",val)
                 }
             }
         });

        //聲明一個(gè)父類的全局組件
            Vue.component("Parent",{
                data(){
                    return{
                      msg:"我是父類組件中的數(shù)據(jù)信息"
                    }
                },
                template:
                    "<div>" +
                            "我是父類組件" +
                            "<Child :childData='msg' @childHandler='childHandler' />" +
                    "</div>",
                methods:{
                    childHandler(val){
                        console.log(val);
                    }
                }
            });

        //組件的入口
        var App={
            template:"<div><Parent/></div>"
            };

        //根
        new Vue({
            el:"#app",
            data(){
                return{
                }
            },
            template: "<App/>",
            components:{
                App
            }
        });
    </script>
</body>
</html>


5-4: 監(jiān)聽(tīng)器

filter過(guò)濾器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <!--1.引入vue模塊的包-->
    <script type="text/javascript" src="../node_modules/vue/dist/vue.js"></script>
    <!--2創(chuàng)建一個(gè)div-->
    <div id="app"></div>
    <!--3.創(chuàng)建vue的實(shí)例化對(duì)象-->
    <script type="text/javascript" >
        **
         *本節(jié)演示過(guò)濾器filter(局部過(guò)濾器和全局過(guò)濾器),作用在于為頁(yè)面中的數(shù)據(jù)進(jìn)行添油加醋囤攀;
         */
        //聲明一個(gè)全局過(guò)濾器組件
         Vue.filter("GlobalFliter",function (value,arg) {
                return "全局過(guò)濾器"+value;
         });
        
        //聲明一個(gè)組件的入口
        var App={
            data(){
                return{
                    price:0,
                    msg:"hello filter"
                }
            },
            template:
                "<div>" +
                    "<p>組件的入口</p>" +
                    "<input type='number' v-model='price'/>" +
                    "<h3>{{price|myCurrentcy}}</h3>" +
                    "<h5>{{msg|GlobalFliter}}</h5>" +
                "</div>",
            //局部過(guò)濾器【filters】:1.聲明過(guò)濾器; 2.{{price|myCurrentcy}}
            filters:{
                myCurrentcy:function (value) {
                    return "$"+value;
                }
            }
        };
        
        //根部
        new Vue({
            el:"#app",
            data(){
                return{
                }
            },
            template: "<App/>",
            components:{
                App
            }
        });
    </script>
</body>
</html>

watch監(jiān)聽(tīng)單個(gè)屬性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <!--1.引入包-->
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
    <!--2.-->
    <div id="app">
        <input type="text" v-model="msg"/>
        <h3>{{msg}}</h3>
        <button @click="stus[0].name='rose'">改變</button>
        <h6>{{stus[0].name}}</h6>
    </div>
    <!--3.根-->
    <script type="text/javascript">
        new Vue({
            el:"#app",
            data(){
                return{
                    msg:"",
                    stus:[{name:"JACK"}]
                }
            },
            //
            watch:{
                //監(jiān)聽(tīng)單個(gè)屬性软免。監(jiān)督字符串
                msg:function (newV,oldV) {
                    console.log(newV,oldV);
                },
                //監(jiān)督復(fù)雜數(shù)據(jù)類型(array  list)深度監(jiān)視
                stus:{
                    deep:true,//深度監(jiān)視
                    handler:function (newV,oldV) {
                        console.log(newV[0].name);
                    }
                }
            }
        });
    </script>

</body>
</html>

5-5: 組件的生命周期
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>

    <div id="app">
        <App></App>
    </div>

    <script type="text/javascript" >

         Vue.component("Test",{
             data(){
                 return{
                     msg:"hello world !"
                 }
             },
             template:
                 "<div>" +
                     "<div>{{msg}}</div>" +
                     "<button @click='changeHandler'>改變</button>" +
                 "</div>",
             methods:{
                 changeHandler(){
                     this.msg=this.msg+"哈哈哈哈哈哈";
                 }
             },
             beforeCreate(){
                 console.log("組件創(chuàng)建之前,this.msg的值為:"+this.msg);
             },
             created(){
                 console.log("組件創(chuàng)建之后,this.msg的值為:"+this.msg);
             },
             beforeMount(){
                 console.log("組件掛載之前,this.msg的值為:"+this.msg);
             },
             mounted() {
                 console.log("組件創(chuàng)建之后,this.msg的值為:"+this.msg);
             },
             beforeUpdate: function() {
                 //再更新DOM之前,調(diào)用該鉤子抚岗,可以獲取原始的DOM
                 console.log("DOM更新之前是:")
                 console.log(document.getElementById("app").innerHTML);
             },
             updated:function () {
                 //再更新DOM之后或杠,調(diào)用該鉤子,可以獲取最新的DOM
                 console.log("DOM更新之后是:")
                 console.log(document.getElementById("app").innerHTML);
             },
             beforeDestroy:function () {
                 console.log("銷毀之前");
             },
             destroyed(){
                 console.log("銷毀之后");
             },
             activated:function () {
                 console.log("組件被激活了宣蔚!")
             },
             deactivated:function () {
                 console.log("組件被停用了向抢!")
             }

         });

        // 聲明一個(gè)組件的入口
        var App={
            data(){
                return{
                    isShow: true
                }
            },
            //vue內(nèi)置組件<keep-alive></keep-alive> 能夠在組件的切換過(guò)程中將狀態(tài)保留在內(nèi)存中,防止重復(fù)渲染DOM
            template:
                "<div>" +
                    "<keep-alive>" +
                        "<Test v-if='isShow'/>" +
                    "</keep-alive>" +
                    "<button @click='isShow=!isShow'>改變生死</button>" +
                "</div>",
        }


        //根部
        new Vue({
            el:"#app",
            components: {
                App
            }
        });
    </script>
</body>
</html>


6-1 : 獲取DOM元素
<!--1.引包-->
   <script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
   <!--2.-->
   <div id="app"></div>
   <!--3.實(shí)例-->
   <script type="text/javascript" >
       // 創(chuàng)建一個(gè)全局組件
       Vue.component("subCom",{
           template:"<div id='subCom'></div>"
       });

       // 掛子
       var App={
           template:
               "<div class='app'>" +
                   "<button ref='btn'>我是按鈕</button>" +
                   "<button ref='btn2'>我是按鈕</button>" +
                   "<subCom ref='abc' />" +
               "</div>",
           created(){
               console.log(this.$refs.btn);
           },
           beforeMount(){
               console.log(this.$refs.btn);
           },
           mounted(){
               //如果給標(biāo)簽綁定ref="xxx"屬性胚委,使用this.$refs.xxx可以獲取原始的DOM對(duì)象
               //ref="xxx"屬性 不能重名
               console.log(this.$refs.btn);
               console.log(this.$refs.btn2);
               //如果給組件綁定ref="xxx"屬性挟鸠,使用this.$refs.xxx可以獲取當(dāng)前的組件對(duì)象
               console.log(this.$refs.abc);
           }
       };

       // 根部
       new Vue({
           el:"#app",
           data(){
               return{
               }
           },
           template:"<App/>",
           components:{
               App
           }
       });
</script>
6-2 : 給DOM元素添加特殊的情況
<!--1.引包-->
<script type="text/javascript" src="./node_modules/vue/dist/vue.js"></script>
<!--2.-->
<div id="app"></div>
<!--3.實(shí)例-->
<script type="text/javascript" >


    // 掛子
    var App={
        data(){
            return{
               isShow:false
            }
        },
        template:
            "<div class='app'>" +
                "<input type='text' v-show='isShow' ref='input'/>" +
            "</div>",
        mounted(){
            this.isShow=true;

            // $nextTick
            // 是在DOM更新循環(huán)結(jié)束之后執(zhí)行回調(diào)函數(shù),
            // 在修改數(shù)據(jù)之后使用此方法亩冬,在回調(diào)中獲取更新后的DOM
            this.$nextTick(()=> {
                console.log(this);
                this.$refs.input.focus();
            })
        }
    };

    // 根部
    new Vue({
        el:"#app",
        data(){
            return{
            }
        },
        template:"<App/>",
        components:{
            App
        }
    });
</script>

7 : vue 路由


linux命令 下載vue-rooter

  1. cd code

  2. npm init --yes

  3. npm install vue-router -S


7-1 : 03-04-vue-rooter的基本原理使用.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <!--1. 引入vue模塊-->
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js" ></script>
    <!--2. 引入vue-rooter模塊-->
    <script type="text/javascript" src="./node_modules/vue-router/dist/vue-router.js"></script>

    <div id="app"></div>

    <!--3.實(shí)例-->
    <script type="text/javascript" >

        //5聲明一個(gè)組件
        var Login={
            template:"<div>我是login頁(yè)面</div>"
        };
        var Register={
            template:"<div>我是register頁(yè)面</div>"
        };

        //2創(chuàng)建router對(duì)象
        var router=new VueRouter({
            //3配置路由對(duì)象
             routes:[
                 //4路由匹配的規(guī)則
                 {
                     path:"/login",
                     name:"login",// 給路由綁定一個(gè)名字
                     component: Login
                 },
                 {
                     path:"/register",
                     name:"register",// 給路由綁定一個(gè)名字
                     component: Register
                 }
             ]
        });


        //引入vue-router模塊艘希,給咱們拋出來(lái)兩個(gè)全局的組件,
        //router-link  ---> a標(biāo)簽硅急;  to  --->  ref屬性
        //router-view -- >路由匹配組件的出口
        //掛子
        var App={
            template:
                "<div>" +
                    "<router-link  :to = '{ name: \"login\"  }' >登陸頁(yè)面</router-link>" +
                    "<router-link :to = '{ name: \"register\"  }'>注冊(cè)頁(yè)面</router-link>" +
                    "<router-view></router-view>" +
                "</div>"
                // "<div>" +
                //     "<router-link to='/login'>登陸頁(yè)面</router-link>" +
                //     "<router-link to='/register'>注冊(cè)頁(yè)面</router-link>" +
                //     "<router-view></router-view>" +
                // "</div>"
        };



        //根部
        new Vue({
            el:"#app",
            data(){
                return{
                }
            },
            components:{
                App
            },
            //6.將router交給VUE實(shí)例對(duì)象管理
            router,
            template:"<App/>"
        });
    </script>

</body>
</html>
7-2 : 03-05-路由參數(shù).html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <!--1. 引入vue模塊-->
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js" ></script>
    <!--2. 引入vue-rooter模塊-->
    <script type="text/javascript" src="./node_modules/vue-router/dist/vue-router.js"></script>

    <div id="app"></div>

    <!--3.實(shí)例-->
    <script type="text/javascript" >

    //聲明局部組件
    var UserParams={
        template:"<div>我是用戶1</div>"
    };
    var UserQuery={
        template:"<div>我是用戶2</div>"
    };

    //2創(chuàng)建router對(duì)象
    var router=new VueRouter({
        //3配置路由對(duì)象
        routes:[
            //4路由匹配的規(guī)則
            {
                path:"/user/:id",
                name:"userP",// 給路由綁定一個(gè)名字
                component: UserParams
            },
            {
                path:"/user",
                name:"userQ",// 給路由綁定一個(gè)名字
                component: UserQuery
            }
        ]
    });


    //引入vue-router模塊覆享,給咱們拋出來(lái)兩個(gè)全局的組件,
    //router-link  ---> a標(biāo)簽营袜;  to  --->  ref屬性
    //router-view -- >路由匹配組件的出口
    //掛子
    var App={
        template:
            "<div>" +
                "<router-link  :to = '{ name: \"userP\", params:{id:1}}' >用戶1頁(yè)面</router-link>" +
                "<router-link  :to = '{ name: \"userQ\", query:{userId:2}}'>用戶2頁(yè)面</router-link>" +
                "<router-view></router-view>" +
            "</div>"
    };



    //根部
    new Vue({
        el:"#app",
        data(){
            return{
            }
        },
        components:{
            App
        },
        //6.將router交給VUE實(shí)例對(duì)象管理
        router,
        template:"<App/>"
    });
</script>

</body>
</html>

7-3 : 03-07-嵌套路由.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<!--1. 引入vue模塊-->
<script type="text/javascript" src="./node_modules/vue/dist/vue.js" ></script>
<!--2. 引入vue-rooter模塊-->
<script type="text/javascript" src="./node_modules/vue-router/dist/vue-router.js"></script>

<div id="app"></div>

<!--3.實(shí)例-->
<script type="text/javascript" >

    //聲明局部組件
    var Movie={
        template:"<div>我是電影</div>"
    };
    var Song={
        template:"<div>我是音樂(lè)</div>"
    };

    var Home={
        template:
            "<div>" +
                "首頁(yè)內(nèi)容<br/>" +
                "<router-link to='/home/song'>歌曲</router-link>" +
                "<router-link to='/home/movie'>電影</router-link>" +
                "<router-view></router-view>" +
            "</div>"
    };

    //2創(chuàng)建router對(duì)象
    var router=new VueRouter({
        //3配置路由對(duì)象
        routes:[
            //4路由匹配的規(guī)則
            {
                path:"/home",
                name:"home",// 給路由綁定一個(gè)名字
                component: Home,
                children:[
                    {
                        path:"song",
                        component:Song
                    },
                    {
                        path:"movie",
                        component:Movie
                    },
                ]
            }
        ]
    });


    //引入vue-router模塊撒顿,給咱們拋出來(lái)兩個(gè)全局的組件,
    //router-link  ---> a標(biāo)簽荚板;  to  --->  ref屬性
    //router-view -- >路由匹配組件的出口
    //掛子
    var App={
        template:
            "<div>" +
            "<router-link :to ='{ name: \"home\"  }' >首頁(yè)</router-link>" +
            "<router-view></router-view>" +
            "</div>"
    };



    //根部
    new Vue({
        el:"#app",
        data(){
            return{
            }
        },
        components:{
            App
        },
        //6.將router交給VUE實(shí)例對(duì)象管理
        router,
        template:"<App/>"
    });
</script>
</body>
</html>
7-4 : 04-01-動(dòng)態(tài)路由匹配.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <!--1. 引入vue模塊-->
    <script type="text/javascript" src="./node_modules/vue/dist/vue.js" ></script>
    <!--2. 引入vue-rooter模塊-->
    <script type="text/javascript" src="./node_modules/vue-router/dist/vue-router.js"></script>

    <div id="app"></div>

    <!--3.實(shí)例-->
    <script type="text/javascript">

        /**
         * 如下是聲明組件
         */
        var Timeline={
             template:
                 "<div id='timeline'>" +
                     "<router-link  :to='{name:\"comDesc\",params:{id:\"frontend\"}}' >前段</router-link>" +
                     "<router-link  :to='{name:\"comDesc\",params:{id:\"backend\"}}' >后段</router-link>" +
                     "<router-view></router-view>" +
                 "</div>"
        };
        var Pins={
            template:"<div>這是沸點(diǎn)</div>"
        };
        var ComDesc={
            data(){
                return{
                   msg:""
                }
            },
            template:"<div>我是{{msg}}</div>",
            created(){
                console.log(1);
                this.msg="frontend"; //發(fā)送ajax
            },
            watch:{//在當(dāng)前的組件內(nèi)部凤壁,監(jiān)聽(tīng)路由信息的變化
                "$route"(to,from){
                    console.log(to);
                    console.log(from);
                    this.msg=to.params.id;
                }
            }
        }

        //創(chuàng)建一個(gè)路由
        var router=new VueRouter({
            routes:[
                {
                    path:"/timeline",
                    component:Timeline,
                    children:[
                        {
                            path:"/timeline/:id",
                            name:"comDesc",
                            component: ComDesc
                        }
                    ]
                },
                {
                    path:"/pins",
                    component:Pins
                }
            ]
        });

        //組件的入口
        var App={
            template:
                "<div>" +
                    "<router-link to='timeline'>首頁(yè)</router-link>" +
                    "<router-link to='pins'>沸點(diǎn)</router-link>" +
                    "<router-view></router-view>" +
                "</div>"
        };

        // 根部
        new Vue({
            el:"#app",
            data(){
                return{
                }
            },
            template:"<App/>",
            components:{
                App
            },
            //6.將router交給VUE實(shí)例對(duì)象管理
            router,
            template:"<App/>"
        });
    </script>

</body>
</html>
7-5 : 04-02-keep alive在路由中使用.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<!--1. 引入vue模塊-->
<script type="text/javascript" src="./node_modules/vue/dist/vue.js" ></script>
<!--2. 引入vue-rooter模塊-->
<script type="text/javascript" src="./node_modules/vue-router/dist/vue-router.js"></script>

<div id="app"></div>

<!--3.實(shí)例-->
<script type="text/javascript">

    /**
     * 如下是聲明組件
     */
    var Timeline={
        template:
            "<div>" +
                "<h3>這是首頁(yè)</h3>" +
            "</div>",
        created(){
            console.log("首頁(yè)組件創(chuàng)建了吩屹!")
        },
        mounted() {
            console.log("首頁(yè)組件DOM加載了!")
        },
        destroyed(){
            console.log("首頁(yè)組件銷毀了拧抖!")
        }
    };
    var Pins={
        template:
            "<div>" +
                "<h3 @click='clickHander' >這是沸點(diǎn)</h3>" +
            "</div>",
        methods:{
            clickHander(e){
                e.target.style.color="red";
            }
        },
        created(){
            console.log("沸點(diǎn)組件創(chuàng)建了煤搜!")
        },
        mounted() {
            console.log("沸點(diǎn)組件DOM加載了!")
        },
        destroyed(){
            console.log("沸點(diǎn)組件銷毀了唧席!")
        }
    };

    //創(chuàng)建一個(gè)路由
    var router=new VueRouter({
        routes:[
            {
                path:"/timeline",
                component:Timeline,
            },
            {
                path:"/pins",
                component:Pins
            }
        ]
    });

    //組件的入口
    var App={
        template:
            "<div>" +
            "<router-link to='timeline'>首頁(yè)</router-link>" +
            "<router-link to='pins'>沸點(diǎn)</router-link>" +
            "<keep-alive>" +
                "<router-view></router-view>" +
            "</keep-alive>" + //keep-alive可以把內(nèi)容緩存起來(lái)擦盾, 下次進(jìn)來(lái)頁(yè)面還是之前的狀態(tài)。
            "</div>"
    };

    // 根部
    new Vue({
        el:"#app",
        data(){
            return{
            }
        },
        template:"<App/>",
        components:{
            App
        },
        //6.將router交給VUE實(shí)例對(duì)象管理
        router,
        template:"<App/>"
    });
</script>
</body>
</html>

8 : Axios

linux操作:
( cd到指定的目錄下) npm install axios -S

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末袱吆,一起剝皮案震驚了整個(gè)濱河市厌衙,隨后出現(xiàn)的幾起案子距淫,更是在濱河造成了極大的恐慌绞绒,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榕暇,死亡現(xiàn)場(chǎng)離奇詭異蓬衡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)彤枢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門狰晚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人缴啡,你說(shuō)我怎么就攤上這事壁晒。” “怎么了业栅?”我有些...
    開(kāi)封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵秒咐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我碘裕,道長(zhǎng)携取,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任帮孔,我火速辦了婚禮雷滋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘文兢。我一直安慰自己晤斩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著雀摘,像睡著了一般建芙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烹俗,一...
    開(kāi)封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天爆侣,我揣著相機(jī)與錄音,去河邊找鬼幢妄。 笑死兔仰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蕉鸳。 我是一名探鬼主播乎赴,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼潮尝!你這毒婦竟也來(lái)了榕吼?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤勉失,失蹤者是張志新(化名)和其女友劉穎羹蚣,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乱凿,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡顽素,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了徒蟆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胁出。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖段审,靈堂內(nèi)的尸體忽然破棺而出全蝶,到底是詐尸還是另有隱情,我是刑警寧澤寺枉,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布抑淫,位于F島的核電站,受9級(jí)特大地震影響型凳,放射性物質(zhì)發(fā)生泄漏丈冬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一甘畅、第九天 我趴在偏房一處隱蔽的房頂上張望埂蕊。 院中可真熱鬧,春花似錦疏唾、人聲如沸蓄氧。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)喉童。三九已至,卻和暖如春顿天,著一層夾襖步出監(jiān)牢的瞬間堂氯,已是汗流浹背蔑担。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咽白,地道東北人啤握。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像晶框,于是被迫代替她去往敵國(guó)和親排抬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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

  • v-bind:屬性名=“值” 簡(jiǎn)寫 空:屬性名 v-html和v-text都是輸出內(nèi)容授段,但是兩者是有區(qū)別的蹲蒲。 ...
    三歲就很酷耶閱讀 198評(píng)論 0 0
  • 基本格式 以json的形式、將數(shù)據(jù)(支持所有格式)掛載在vue的data上侵贵、方法掛載在vue的methods上届搁。 ...
    kirito_song閱讀 772評(píng)論 0 21
  • 三、組件 組件 (Component) 是 Vue.js 最強(qiáng)大的功能之一模燥。組件可以擴(kuò)展 HTML元素咖祭,封裝可重用...
    小山居閱讀 613評(píng)論 0 1
  • 首先,我們來(lái)復(fù)習(xí)一下前天學(xué)過(guò)的:內(nèi)置指令蔫骂;利用v-for,v-model牺汤,v-on來(lái)做的添加列表辽旋;以及圖片來(lái)回切換...
    OrangeQjt閱讀 335評(píng)論 0 0
  • 我有能力照顧好自己。 昨天回娘家檐迟,東西挺沉的补胚,我電話弟媳到車站接我。免我拎著累追迟。我電話姐姐妹妹到媽媽家來(lái)溶其,難得回娘...
    燕子聊家常閱讀 186評(píng)論 0 2