vue

前端框架

主流框架:angular(facebook家的),react(github家的),vue(尤雨溪的)

vue:有前两大框架的有点,摒弃了缺点,但是没有前两大框架健全,

vue有点:中文API,单页面应用,组件化开发,数据双向绑定,虚拟DOM,数据驱动

VUE

导入

  1. 下载:https://cn.vuejs.org/进入官网,起步,下载

  2. 导入,<script src="js/vue.js"></script>

  3. 之后可以创建vue实例并通过el方法挂载,进而控制.

vue的操作

插值表达式
<body>
    <div id="test">
        <p>{{ msg }}</p>
        <p>{{ num + 1 }}</p>
        <p>{{ msg + num}}</p>
        <p>{{ msg[1] }}</p>
        <p>{{ msg.split('')}}</p>

    </div>


</body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el:"#test",
            data:{
                msg:"orange",
                num:10
            }
        })
    </script>
>>>
orange

11

orange10

r

[ "o", "r", "a", "n", "g", "e" ]

注意:当使用vue语法时,{{}}中如果什么都不放,语法解析不出来,会显示{{}}.

文本指令

{{ }}直接传值

v-text:不能解析html语法,直接传值.

v-html:可以解析html语法.

<div id="text">
    <p v-text="info">123</p>
    <p v-html="info"></p>
</div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue ({
        el:"#text",
        data:{
            info:'<i>infor</i>',
        },
    })
</script>
>>>
<i>infor</i>

infor

而且代码从上至下执行,如果原p标签中有值,会被后面执行的v-html或者v-text覆盖掉

v-once

无论多少操作,只渲染一次.

<body>
<div id="text">
    <p v-once v-on:click="pClick">{{ msg }}</p>
</div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue ({
        el:"#text",
        data:{
            info:'<i>infor</i>',
            msg:'1111'
        },
        methods:{
            pClick:function () {
                this.msg = "222"
            }
        }
    })
</script>
>>>
1111

渲染一次1111,后面再也改变不了了

事件指令

事件指令 v-on:事件名="方法变量"

简写: @事件名="方法变量"

<body>
<div id="event">
    <p v-on:click="f1">{{ msg }}</p>
    <p @click="f1">{{ msg }}</p>
    <hr>
    <p @click="f2($event,'第一个')">{{ info }}</p>
    <p @click="f2($event,'第二个')">{{ info }}</p>

</div>
</body>
<script src="js/vue.js"></script>
<script>
    new Vue ({
        el:"#event",
        data:{
            msg:"点击事件",
            info:"是我"
        },
        methods:{
            f1(){
                this.msg ="点击了"
            },
            f2(ev,args){
                this.info = args + "点击了"
            }
        }
    })
</script>

关于鼠标的操作:@后面的

方法 操作
mouseove 鼠标悬浮
mouserout 鼠标移开
mousedown 鼠标点下去
mouseup 鼠标抬起来
mousemove 鼠标在上面移动
contextmenu 右键点击

@事件="变量($event,...)"

当事件变量不添加(),系统默认传入一个事件对象:$event

当事件变量后手动添加了(),就告诉了系统不需要再传入事件对象,但是可以手动传入事件对象.

属性指令

v-bind:属性名="变量"

简写 :属性名="变量"

简单使用
<body>
<div id="property">
    <p v-bind:title="pTitle" :abc="def">简答使用</p>
</div>
</body>
    <script src="js/vue.js"></script>
<script>
    new Vue({
        el:"#property",
        data:{
            pTitle:"简单使用"
        }
    })
</script>
class属性绑定
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .d1 {
            200px;
            height:200px;
            background-color: orange;
        }
        .d2 {
            border-radius: 50%;
        }
        .d3 {
            border-right: 20%;
        }
    </style>
</head>

<body>
<div id="property">
    //可以通过传值的方式传多个
    <p :class="c0"></p>
    //多类名可以使用[]语法,采用多个变量来控制
    <p :class="[c1,c3]"></p>
    //[]中也可以使用常量
    <p :class="['d1',c3]"></p>
    //{类名:布尔值} 可以控制某类名是否起作用
    <p :class="['d1',{d2:is_true}]" @click="is_true=!is_true"></p>
    //点击事件改变src属性
    <p @click="changeImg">大长腿</p>
    <img :src="img_src" alt="">
    //style控制样式样式
    <p :style="myStyle">样式属性</p>
    <p :style="{w,height:h,backgroundColor:bgc}">样式属性</p>
</div>
</body>
    <script src="js/vue.js"></script>
<script>
    new Vue({
        el:"#property",
        data:{
            c0:"d1 d2",
            c1:'d1',
            c2:"d2",
            c3:"d3",
            is_true:true,
            img_src:'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3819296004,574391848&fm=26&gp=0.jpg',
            myStyle: {
                 '100px',
                height: '100px',
                backgroundColor: 'red'
            },
            w: '200px',
            h: '100px',
            bgc: 'green'
        },
        methods:{
            changeImg(){
                this.img_src='https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1371195756,4187769521&fm=26&gp=0.jpg'
            }
    })
</script>

注意:data的style中:左侧比如backgroundColor:属性名:驼峰体="减号连接体"

is_true这种也可以不引号

原文地址:https://www.cnblogs.com/agsol/p/12051777.html