Vue的介绍以及说明(一)

vue 渐进式Javascript框架 它可以独立完成前后端分离式web项目,属于组件开发 特点:单页面web应用,数据驱动,数据双向绑定,虚拟DOM

vue

渐进式Javascript框架

它可以独立完成前后端分离式web项目,属于组件开发

特点:单页面web应用,数据驱动,数据双向绑定,虚拟DOM

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>特点</title>
</head>
<body>
    <div id="app">
        <h1 @click="action">{{ msg }}</h1>
        <h2>{{ msgh2 }}</h2>
        <h2>{{ msgh22 }}</h2>
    </div>
</body>
<script src="js/vue.min.js"></script>

<script>
//创建vue实例与页面标签进行绑定,该实例就可以控制该标签内部所有的标签
    new Vue({
        //挂载点,与页面标签绑定的关键,具有唯一性
        el:'#app',
        //vue中要使用的数据
        data:{
            msg: 'h1',
            msgh2:'',
            msgh22:''
        },
        //methods控制所有事件
        methods:{
            action:function(){
                this.msg = 'h1被点击了';
                this.msgh2 = 'h1被点击了';
                this.msgh22 = 'h1被点击了'
            }
        }
    });

</script>
</html>

1.插值表达式,v-text,v-html,v-once等代码表述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文本指令</title>
    <script src="js/vue.js"></script>
</head>
<body>

    <div id="app">
        <!--插值表达式-->
        <p>{{ msg+num }}</p>
        <p>{{ num+1 }}</p>
<!--v-text v-html v-once 三个文本指令-->
        <!--v-text:纯文本-->
        <p v-text="msg"></p>

        <!--v-html:可以解析标签-->
        <p v-html="htmlmsg" @click="changemsg"></p>
        <p v-html="'<b>变粗吧</b>'"></p>

        <!--v-noce:限制修改-->
        <p v-once="htmlmsg">{{ htmlmsg }}</p>
    </div>
</body>

<script>

    new Vue ({
        el:'#app',
        data:{
            msg:'msg',
            num:10,
            htmlmsg:'<b>点击我可以变斜吧</b>'
        },
        methods:{
            changemsg:function () {
                this.htmlmsg = '<i>斜了</i>';
            }
        }
    })
</script>
</html>

2.事件指令等代码描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件指令</title>
    <script src="js/vue.js"></script>
    <style>
        [v-cloak] {
            display:none;
        }
        
    </style>
</head>
<body>
<!--    取消闪烁-->
    <div id="app" v-cloak>
<!--v-on 指令 :1)明确事件名 2)明确事件函数    事件名:'事件函数'事件函数万万不可写错-->
        <!--基础事件绑定-->
        <p v-on:click="clickaction">单击</p>
        <p v-on:dblclick="dblclickaction">双击</p>

        <!--绑定事件并传参-->
        <ul>
            <li v-on:click="liaction(1)">{{ li1 }}</li>
            <li v-on:click="liaction(2)">{{ li2 }}</li>
            <li v-on:click="liaction(3)">{{ li3 }}</li>
        </ul>
      
        <!--传递事件对象-->
        <p v-on:click="sysaction1">不传自定义参数(默认传个event)</p>
        <p v-on:click="sysaction2(1111,$event)">传自定义参数(需要指定传event)</p>

<!--v-on:可以简写为 @ 符号-->
    </div>

</body>
<script>

    new Vue ({
        el:'#app',
        data:{
            li1:'111',
            li2:'222',
            li3:'333',

        },
        methods:{
            clickaction: function () {
                alert('单击')

            },
            dblclickaction () {
                alert('双击')
            },
            liaction (index) {
                // alert(this.li1)
                alert(index)
            },
            sysaction1 (ev) {
                console(ev)

            },
            sysaction2 (num,ev) {
                console(num);
                console(ev)
            }
        },

    })

</script>

</html>

3.属性指令等代码表述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>属性指令</title>
    <script src="js/vue.js"></script>
    <style>
        .box {
            width: 200px;
            height: 200px;
            background-color: black;
        }
        .wrap {
            width: 300px;
            height: 300px;
            background-color: cyan;
        }
        .box1 {
            width: 100px;
            height: 100px;
            background-color: black;
        }
        .x {
            width: 100px;
        }
        .y {
            height: 100px;
        }
        .z {
            background-color: blueviolet;
        }
    </style>
</head>
<body>

    <div id="app">
<!--v-bind属性指令:属性名='属性变量',v-bind:  可以简写为 : 冒号-->
        <!--eg:v-bind:class='myclass'-->
        <div class="box" v-bind:style="mystyle" @click="changecolor('red')"></div>

        <!--操作单个样式-->
        <div class="box" v-bind:style="{ 'width': w }" @click="changewidth"></div>

        <!--操作多个样式-->
        <div class="box" v-bind:style="more_style" @click="changestyle"></div>

<!--v-bind 可以简写为 冒号, 绑定所有系统和自定义属性,属性一旦绑定,后面就是变量-->
        <div :aaa="xxx">简写v-bind</div>

        <!--操作单个类名-->
        <!--直接赋值-->
        <div :class="c1" @click="changeclass"></div>

        <!--布尔切换-->
        <div :class="{ box1:box_able}"></div>

        <!--操作多个类名-->
        <div :class="[x,y,{z:is_z}]"></div>
    </div>

</body>
<script>

    new Vue ({
        el:'#app',
        data:{
          mystyle:'background-color:pink;',
            w:'500px',
            more_style:{
                width:'100px',
                height:'100px',
                borderRadius:'50%',
                backgroundColor:'cyan'
            },
            xxx:'zzz',
            c1:'wrap',
            box_able:true,
            x:'x',
            y:'y',
            // z:'z',
            is_z:'z',
        },
        methods:{
            changecolor (color){
                this.mystyle = 'background-color:' + color + ';'
            },
            changewidth () {
                this.w = '600px'
            },
            changestyle () {
                this.more_style.borderRadius = '20%';
                this.more_style.backgroundColor = 'tan'
            },
            changeclass () {
                if (this.c1 === 'box') {
                    this.c1 = 'wrap';
                }else {
                    this.c1 = 'box';
                }
                //布尔值来回切换
                this.box_able =  !this.box_able;

            }
        }
    })

</script>

</html>

4.表单指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>base</title>
    <script src="js/vue.js"></script>
</head>
<body>

    <div id="app">
<!--表单指令 v-model 写法:v-model='变量' 变量value属性提供值-->
        <!--数据的双线绑定-->
        <input type="text" v-model="val">
        <input type="text" v-model="val">
        <p>{{ val }}</p>

        <form action="">
            <!--普通输入框-->
            <input type="password" v-model="val">

               <!--单选框-->
               <!--radio_val 的值是多个单选框中的一个value值,代表该单选框默认选中-->
            <p>
                <label for="male">nan</label>
                <input type="radio" v-model="radio_val" id="male" name="sex" value="male">
                <label for="female">nv</label>
                <input type="radio" v-model="radio_val" id="female" name="sex" value="female">
                <span>{{ radio_val+'被选中' }}</span>
            </p>
               <!--独立使用的复选框-->
               <!--suer_val 的值为 true和false 决定单个复选框是否被选中-->
            <p>
                <input type="checkbox" name="sure" value="同意" v-model="sure_val">
                <span>{{ sure_val }}</span>

            </p>

               <!--复选框-->
               <!--hobby_val的值是数组,用来存放复选框所有选项的值,值存在代表该该框选中-->
            <p>
                <input type="checkbox" value="male" name="hobby" v-model="hobby_val">
                <input type="checkbox" value="female" name="hobby" v-model="hobby_val">
                <input type="checkbox" value="other" name="hobby" v-model="hobby_val">
                <span>{{ hobby_val }}</span>
            </p>

            <p>
                <input type="submit">
            </p>

        </form>

    </div>

</body>
<script>

    new Vue ({
        el:'#app',
        data:{
            val:'',
            radio_val:'male',
            sure_val:true,
            hobby_val:[]
        },
    })

</script>

</html>

5.条件指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>条件指令</title>
    <script src="js/vue.js"></script>
    <style>
        [v-cloak] {
            display: none;
        }
        .box {
            width: 100px;
            height: 100px;
        }
        .b1 {
            background-color: blueviolet;
        }
        .b2 {
            background-color: blue;
        }
        .r {background-color: red}
        .g {background-color: green}
        .b {background-color: blue}


    </style>
</head>
<body>

    <div id="app" v-cloak>
				<!--条件指令 v-if,v-show v-if:'变量' v-show:'变量'-->
				<!--两者都是绑定true 和 false 的-->
        <p>

        <button @click="showaction(true)">显示</button>
        <button @click="showaction(false)">隐藏</button>

        </p>
				<!--v-if 在隐藏时不会被渲染, 而v-show在隐藏时 是采用display:none -->
        <div class="box b1" v-if="is_show"></div>
        <div class="box b2" v-show="is_show"></div>

 				<!--v-if,v-else-if, v-else-->
        <p>

        <button @click="tagcolor('red')">hong</button>
        <button @click="tagcolor('green')">lv</button>
        <button @click="tagcolor('blue')">lan</button>

        </p>
        <div class="box r" v-if="is_color == 'red' "></div>
        <div class="box g" v-else-if="is_color == 'green' "></div>
        <div class="box b" v-else></div>

    </div>

</body>
<script>

    new Vue ({
        el:'#app',
        data:{
            is_show:false,
            is_color:'red',
        },
        methods: {
            showaction(is_show) {
                this.is_show = is_show
            },
            tagcolor(color){
                this.is_color = color
            }
        }
    })

</script>

</html>
标签: 标签 绑定 表单