Web前端-Vue-概述-初步使用,部分指令

mustache语法

是一种模板语法

 <!--表示把msg变量的数据渲染到这个地方-->
    <h1>{{msg}}</h1>
    <h2>{{msg}}</h2>
    <h3>{{hehe}}</h3>

vue程序初步搭建

        1.引入vue.js文件
        2.一片html代码
        3.定义json 渲染页面
vue整个就是一个最大的语法糖
    因为vue编写代码的时候  是vue语法
    实际渲染出来还是 原来的html+css+js结构

<div id="app">
    <!--mustache语法
        是一种模板语法
    -->
    <!--表示把msg变量的数据渲染到这个地方-->
    <h1>{{msg}}</h1>
    <h2>{{msg}}</h2>
    <h3>{{hehe}}</h3>




</div>


<!--1.引入vue.js文件-->
<script src="js/vue.js"></script>
<script>
    //3.定义json 渲染页面

//     new Vue({
// //        挂载目标 挂载到哪一个标签 那么这个标签里面 就受vue加载
//         //所有的vue语法规则 都在这个标签里面可以生效
//         //值是一个选择器  只能挂载一个目标(多个目标无效)
//         el:"#app",
// //        data是一个json 里面定义各种页面需要用到的变量
//         data:{
//             msg:"我是vue数据",
//             hehe:"嘿嘿"
//         }
//     })
    new Vue({
        el:"#app",
        data:{
            msg:"厉害",
            hehe:"嘿嘿"
        }
    })

</script>

Vue支持的选择器(所有选择器都可以)


            因为Vue不兼容IE8及以下 所以 几乎所有选择器都支持
            甚至包括CSS3选择器

          注意点:
                el不能直接挂在到body里面  否则报错

<div class="pox">
    <h2>我是干扰的标签-->{{msg}}</h2>



</div>

<script src="js/vue.js"></script>
<script>

    var vuem=new Vue({
//        el:"#app", //ID选择器
//        el:"div", //元素选择器
//        el:".pox",//class选择器
//        el:"body>div",//子代选择器
//        el:"body div",//后代选择器
//        el:"div:nth-child(1)",//CSS3选择器
        el:"body", //报错 Do not mount Vue to <html> or <body> - mount to normal elements instead.
        data:{
            msg:"我是数据,你渲染了么"
        }

    })

</script>

Vue能渲染的数据类型

字符串类型  number数值型  boolean布尔类型 数组类型 json对象类型 Date日期类型 

<div id="app">
    <!--<h1>{{msg}}</h1>-->
    <!--<h1>{{num}}</h1>-->
    <!--<h1>{{boo}}</h1>-->
    <!--<h1>{{arr}}</h1>-->
    <!--<h1>{{json}}</h1>-->
    <h1>{{date}}</h1>
</div>
<script src="js/vue.js"></script>
<script>
    var vm=new Vue({
        el:"#app",
        data:{
//            Vue能渲染的数据类型非常多
            msg:"我是字符串类型数据", //字符串类型
            num:99, //number数值型
//            boo:true,//boolean布尔类型
//            arr:["张飞","关羽","刘备"],// 数组类型
            json:{
                name:"小砌墙",
                age:16
            },   //json对象类型
            date:new Date(),//Date日期类型 
        }
    })
</script>

vue指令

    *       指令的格式:
    *           <标签 v-指令名称="值或变量">内容 </标签>
    *
    *       指令的作用:
    *           扩展标签原有的功能

v-show  控制元素的显示隐藏


    *        <标签 v-show="布尔值/变量(会转换成布尔值)/表达式(结果转换成布尔值)">内容 </标签>
    *               这个v-show="if语句里面的表达式功能一样"
    *
    *       一旦布尔值为true 那么当前元素显示
    *           布尔值为false 元素隐藏
    *
    *       原理是 控制元素的display属性

<div id="app">
<div id="box" v-show="boo"></div>
</div>
<script src="js/vue.js"></script>
<script>

    var vm=new Vue({
        el:"#app",
        data:{
            msg:"我是数据",
            boo:true
        }
    })
</script>

v-show和v-if的区别:

    v-show是控制元素的display属性 来进行显示隐藏切换
        无论display的值 是什么 这个dom元素一直都在dom树中


    v-if 是直接控制元素的dom对象是否在dom树中
        条件为false的时候 都不渲染这个元素

 那么具体使用场景:
            如果一个元素需要短时间内 大量进行切换显示隐藏 则需要使用v-show


            如果一个元素 页面加载时 不需要显示  不需要加载 则可以使用v-if
            等到需要时  再把条件改成true再渲染  使用v-if

v-if指令 控制元素的 渲染与不渲染(跟显示和隐藏很像)

使用:
            v-if="表达式"
                表达式为true 则显示
                为false时 隐藏

            直接控制元素的dom对象  为true时 页面加载这个元素
            为false时  页面没有这个元素 直接从dom里面删除

v-if指令的扩展:

        v-else:
            如果v-if的条件为false 则显示v-else


        v-else-if:
            这个可以有多个 也是关联表达式的

            v-else-if="表达式"
                效果跟 js的if语句一模一样

       注意点:
        v-else-if必须紧跟着v-if 中间不能有任何其他元素
        v-else 必须紧跟着v-if或者v-else-if

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
            #box{
                width: 200px;
                height: 200px;
                background-color: hotpink;
            }
            #pox{
                width: 200px;
                height: 200px;
                background-color: blue;
            }
    </style>
</head>
<body>
<div id="app">
    <!--<div id="box" v-if="boo">box</div>
    <div id="pox" v-else></div>-->

    <!--<ul>
        <li v-if="num==1">我是第一个</li>
        <li v-else-if="num==2">我是第二个</li>
        <li v-else-if="num==3">我是第三个</li>
        <li v-else>我是else</li>
    </ul>-->

    <ul>
        <li v-if="score>=90">我是学霸</li>
        <!--<span></span>-->
        <li v-else-if="score>70 && score<90">我是优等生</li>
        <li v-else-if="score>=60 && score<70">我勉强</li>
        <li v-else>等着挨揍</li>
    </ul>

</div>

<script src="js/vue.js"></script>
<script>
    const vm=new Vue({
        el:"#app",
        data:{
            boo:true,
            num:1,
            score:80
        }
    })
</script>
</body>
</html>

v-for指令:专门用来渲染 数组或者json对象的  能够遍历并多次渲染模板

 注意点:
            v-for所在的标签本身进行多次渲染!!!
            v-for使用时 最好在当前标签上面添加一个key属性  值最好是用 index索引
                    vsCode开发工具 开发vue时  如果不修改指定配置 那么v-for使用默认报错
                    必须添加上key才可以     :key="index"

        渲染数组:
            格式1:
                <标签 v-for="数组元素变量 in 数组">{{数组元素变量}}</标签>

            格式2:
                <标签 v-for="(数组元素变量,索引值变量) in 数组">{{数组元素变量}}---{{索引值变量}}</标签>


        渲染json:

            格式1:
                <标签 v-for="值 in json对象">{{值}}</标签>
            格式2:
                <标签 v-for="(值,键) in json对象">{{值}}---{{键}}</标签>
            格式3:
                <标签 v-for="(值,键,索引) in json对象">{{值}}---{{键}}----{{索引}}</标签>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <ul>
        <!--<li v-for="item in arr" >{{item}}</li>-->
        <!--<li v-for="(item,index) in arr" >{{item}}===={{index}}</li>-->
        <!--<li v-for="value in json">{{value}}</li>-->
        <!--<li v-for="(value,key) in json">{{value}}===={{key}}</li>-->
                                                <!--需要绑定一个key  在vsCode开发中再说-->
        <li v-for="(value,key,index) in json" :key="index">{{value}}===={{key}}===={{index}}</li>
    </ul>

</div>
<script src="js/vue.js"></script>
<script>
        var vm=new Vue({
            el:'#app',
            data:{
                arr:["张飞","关羽","圣诞节","平安夜","元旦"],
                json:{
                    name:"小砌墙",
                    age:16,
                    location:"文化大厦",
                    street:"底商37号",
                    length:192
                }
            }
        });

</script>
</body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章