• vue简介


    Vue简介

    我给vue的总体评价是“简单却不失优雅,小巧而不乏大匠”,下面将围绕这句话给大家介绍Vue.js,希望能够激发你对Vue.js的兴趣。

    Vue.js的作者为Evan You(尤雨溪),曾任职于Google Creative Lab,2016年9月3日,在南京的JSConf上,尤雨溪正式宣布加盟阿里巴巴Weex团队,尤雨溪称他将以技术顾问的身份加入 Weex 团队来做 Vue 和 Weex 的 JavaScript runtime 整合,目标是让大家能用 Vue 的语法跨三端。虽然是Vue是一个个人项目,但在发展前景上个人认为绝不输于Google的AngularJs,现在是社区在维护Vue。


    Vue.js是一个构建数据驱动的web界面的框架
    Vue.js的目标是实现响应的数据绑定和组合的试图组件
    Vue.js的核心是一个响应的数据绑定系统

     Vue.js主要负责的是上图绿色正方体ViewModel的部分,其在View层(即DOM层)与Model层(即JS逻辑层)之间通过ViewModel绑定了DOM Listeners与Data Bingings两个相当于监听器的东西。

    当View层的视图发生改变时,Vue会通过DOM Listeners来监听并改变Model层的数据。相反,当Model层的数据发生改变时,其也会通过Data Bingings来监听并改变View层的展示。这样便实现了一个双向数据绑定的功能,也是Vue.js数据驱动的原理所在。

     Vue实例

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>Vue模板</title>
      <!--<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>-->
      <script src="test/vue.js"></script>
    </head>
    <body>
    <div id="app">
        <h1>{{a}}</h1>
        <h2>{{b}}</h2>
    </div>
    </body>
    <script>
        let vm = new Vue({
            el :'#app',
            data:{
               a:10,
                b:2
            },
            created: function () {
                console.log('a的值是:' +this.a)
            }
    
        });
    </script>
    </html>

    Vue的操作样式以及指令

    操作样式

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>模板</title>
    </head>
    <body>
    <div id="app">
        <p v-on:click="btnClick" v-bind:style="v_style">点击p文字颜色变为绿色</p>
        <div v-on:click="btnClick" v-bind:style="v_style">点击div文字颜色变为绿色</div>
    </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                v_style: {
                    color: 'black'
                }
            },
            methods: {
                btnClick: function () {
                    this.v_style.color = 'green'
                }
            }
        })
    </script>
    </html>
    View Code

    文本指令

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>模板</title>
    </head>
    <body>
    <div id="app">
        <!-- 插值表达式 -->
        <p>{{ msg1 }}</p>
        <p v-text="msg2"></p>
        <p v-html="msg3"></p>
        <p v-once="msg3"  v-on:mouseover="action">{{ msg3 }}</p>
    </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg1: '**msg1**',
                msg2: '<b>**msg2**</b>',
                msg3: '<b>**msg3**</b>',
            },
            methods: {
                action: function () {
                    // var msg = this.$data.msg4;
                    this.msg3 = '<i>**new msg3**</i>'
                }
            }
        })
    </script>
    </html>

    事件指令

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>模板</title>
    </head>
    <body>
    <div id="app">
        <!-- v-on:事件名="函数名"  可以简写为 @事件名="函数名"  (v-on: => @)-->
        <p v-on:click="action1">{{ msgs[0] }}</p>
        <p @click="action2">{{ msgs[1] }}</p>
    
        <!-- 事件的传参 -->
        <ul>
            <li @click="liAction(100)">列表项1</li>
            <li @click="liAction(200)">列表项2</li>
            <li @click="liAction(300)">列表项3</li>
        </ul>
    
        <!-- 鼠标事件的对象:直接写函数名,默认将鼠标事件对象传入 -->
        <div @click="func1">func1</div>
        <!-- 鼠标事件的对象:一旦添加(),就必须手动传参,$event就代表鼠标事件对象 -->
        <div @click="func2($event, 'abc')">func2</div>
    </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msgs: ['11111', '22222']
            },
            methods: {
                action1: function () {
                    alert(this.msgs[0])
                },
                action2: function () {
                    alert(this.msgs[1])
                },
                liAction: function (num, msg) {
                    console.log(num, msg)
                },
                func1: function (ev) {
                    console.log(ev)
                },
                func2: function (ev, msg) {
                    console.log(ev);
                    console.log(msg)
                }
            }
        })
    </script>
    </html>
    View Code

    属性指令

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>模板</title>
        <style>
            .rDiv {
                width: 100px;
                height: 100px;
                background-color: red;
            }
            .gDiv {
                width: 200px;
                height: 50px;
                background-color: green;
            }
            .br {
                border-radius: 50%;
            }
        </style>
    </head>
    <body>
    <div id="app">
        <!-- 属性指令:用vue绑定属性,将属性内容交给vue处理 -->
        <!-- 语法:v-bind:属性名="变量"  (v-bind: 可以简写为 :) -->
        <p class="" style="" v-bind:owen="oo" :jason="jj"></p>
    
    
        <!-- class 属性 -->
        <p :class="c1" @click="action1"></p>
        <!-- 多类名 -->
        <p :class="[c1, c2]"></p>
        <!-- 'br' 固定写死的数据,不再是变量 -->
        <p :class="[c1, 'br']"></p>
    
        <!-- style 属性 -->
        <!-- 一个变量:该变量值为{},{}内部完成一个个属性的设置 -->
        <p class="gDiv" :style="s1">12345</p>
        <!-- 一个{}:{}内一个个属性有一个个变量单独控制 -->
        <p class="gDiv" :style="{fontSize: fs, color: c}">67890</p>
    
    </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                oo: 'Owen',
                jj: 'Jason',
                c1: 'rDiv',
                c2: 'br',
                s1: {
                    // 'font-size': '30px'
                    fontSize: '30px',
                    color: 'pink'
                },
                fs: '20px',
                c: 'orange'
            },
            methods: {
                action1: function () {
                    if (this.c1 == 'rDiv') {
                        this.c1 = 'gDiv'
                    } else {
                        this.c1 = 'rDiv'
                    }
                }
            }
        })
    </script>
    </html>

    表单指令

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>模板</title>
    </head>
    <body>
    <div id="app">
        <!-- 表单指令:v-model="变量" -->
        <form action="">
            <p>
                <input type="text" v-model="val" name="user">
            </p>
            <p>
                <input type="text" v-model="val">
            </p>
    
            <!-- 单选框 v-model绑定的变量是单选框中某一个input的value -->
            <p>
                男: <input v-model="r_val" value="male" type="radio" name="sex">
                女: <input v-model="r_val" value="female" type="radio" name="sex">
            </p>
    
            <!-- 复选框 v-model绑定的变量是一个列表,列表存存放0到任一个复选框的value  -->
            <p>
                男: <input v-model="c_val" value="m" type="checkbox" name="h">
                女: <input v-model="c_val" value="f" type="checkbox" name="h">
                哇塞: <input v-model="c_val" value="mf" type="checkbox" name="h">
            </p>
    
            <button type="submit">提交</button>
        </form>
    </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                val: '',
                r_val: 'female',
                c_val: []
            }
        })
    </script>
    </html>
    View Code

    条件指令

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>Vue模板</title>
      <!--<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>-->
      <script src="test/vue.js"></script>
    
    
    </head>
    <body>
    <div id="app">
        <p v-on:click="action1">{{ msg[0] }}</p>
        <p @click="action2">{{msg[1]}}</p>
        <ul>
            <li @click="liAction(100)">列表项1</li>
            <li @click="liAction(200)">列表项2</li>
            <li @click="liAction(300)">列表项3</li>
        </ul>
        <div @click="func1">func1</div>
        <div @click="func2($event,'abc')">func2</div>
        
    </div>
    
    </body>
    <script>
        new Vue({
            el :'#app',
            data:{
                msg:['1111','2222']
            },
            methods:{
                action1:function () {
                    alert(this.msgs[0])
                },
                action2:function () {
                    alert(this.msg[1])
                },
                liAction: function (num, msg) {
                    console.log(num,msg)
                },
                func1: function (ev) {
                    console.log(ev)
                },
                func2: function (ev, msg) {
                    console.log(ev);
                    console.log(msg)
                }
            },
        });
    </script>
    </html>

    条件指令补充

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>模板</title>
    </head>
    <body>
    <div id="app">
        <p v-if="r1" key="p-r1">if条件</p>
        <p v-show="r2">show条件</p>
        <ul>
            <li v-if="tag==1">111</li>
            <li v-else-if="tag==2">222</li>
            <li v-else>333</li>
        </ul>
        <ul>
            <li @click="action('a')">a</li>
            <li @click="action('b')">b</li>
            <li @click="action('c')">c</li>
        </ul>
        <ul>
            <li v-show="flag =='a'">aaa</li>
            <li v-show="flag =='b'">bbb</li>
            <li v-show="flag =='c'">ccc</li>
        </ul>
    </div>
    </body>
    <script src="test/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                num:10,
                r1:false,
                r2:false,
                tag:1,
                flag:'a'
            },
            methods:{
                action:function (s) {
                    this.flag=s
                }
            }
        })
    </script>
    </html>
    View Code

    循环指令

    循环数组和自定义对象

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>模板</title>
    </head>
    <body>
    <div id="app">
        <p>{{nums[2]}}</p>
        <ul>
            <li>{{nums[0]}}</li>
            <li>{{nums[1]}}</li>
            <li>{{nums[2]}}</li>
            <li>{{nums[3]}}</li>
            <li>{{nums[4]}}</li>
        </ul>
        <ul> <li v-for="num in nums">{{num}}</li></ul>
        <ul> <li v-for="(v,k,i) in people">{{v}}&nbsp;&nbsp;{{k}}&nbsp;&nbsp;{{i}}</li></ul>
    </div>
    </body>
    <script src="test/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                nums:[1,2,3,4,5],
                people:{
                    name:'owen',
                    age:18,
                    gender:'others'
                }
            }
        })
    </script>
    </html>
    View Code

    在Vue项目的开发中,我们使用的最多的应该就属Vue的指令了。通过Vue提供的常用指令,我们可以淋漓尽致地发挥Vue数据驱动的强大功能。以下便是图中常用指令的简单介绍:

    (1)v-text: 用于更新绑定元素中的内容,类似于jQuery的text()方法

    (2)v-html: 用于更新绑定元素中的html内容,类似于jQuery的html()方法

    (3)v-if: 用于根据表达式的值的真假条件渲染元素,如果条件为false则不会渲染元素

    (4)v-show: 用于根据表达式的值的真假条件显示隐藏元素,切换元素的 display CSS 属性

    (5)v-for: 用于遍历数据渲染元素或模板

    (6)v-on: 用于在元素上绑定事件,可以在P标签上绑定了一个点击事件

    承蒙关照
  • 相关阅读:
    TThread.CreateAnonymousThread 多线程
    flask——包含,继承,宏
    flask-数据库
    flask框架--模板
    flask框架--cookie,session
    flask框架~简易编写
    flask框架1
    第2题:设计包含min函数的栈
    第1题:把二叉搜索树转换为一个排序的双向链表
    关于过渡机制一点理解
  • 原文地址:https://www.cnblogs.com/guanlei/p/11090990.html
Copyright © 2020-2023  润新知