• VueJS学习笔记


    一、基本用法

    1、Vue.js 使用了基于 HTML 的模版语法

    <html>
        <header>
            <title>vue.js 测试</title>
        </header>
        <body>
            <div>
                <h3 id="firstVue">
                    {{mydata}}
                    {{mydata2}}
                    <button>{{mydata3}}</button>
                </h3>
            </div>
            
            <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
            <script>
                var myvue=new Vue({
                    el:"#firstVue",
                    data:{
                        mydata:"是大户大师的",                    
                        mydata2:"张三李四王五",
                        mydata3:"点击",
                    }
                })
            </script>
        </body>
    </html>
    View Code

    2、使用 v-html 指令用于输出 html 代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id="container" style=" 100%;">
            <div v-html="show"></div>
        </div>
    
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
        <script>
            var vue=new Vue({
                el:"#container",
                data:{
                    show:"<h3>VueJS简明教程</h3>"
                }
            })
        </script>
    </body>
    </html>
    View Code

    3、使用 v-model: 语法使用户的页面输入反向传递回vue实例变量

    v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id="container" style=" 100%;">
            <input v-model="show" type="text"/>
            <div v-html="show"></div>
        </div>
    
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
        <script>
            var vue=new Vue({
                el:"#container",
                data:{
                    show:"<h3>VueJS简明教程</h3>",
                }
            })
        </script>
    </body>
    </html>
    View Code

    4、HTML 属性中的值应使用 v-bind 指令。

    v-bind 缩写

    Vue.js 为两个最为常用的指令提供了特别的缩写:
    <!-- 完整语法 -->
    <a v-bind:href="url"></a>
    <!-- 缩写 -->
    <a :href="url"></a>

         以下实例判断 use 的值,如果为 true 使用 class1 类的样式,否则不使用该类

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            .showClass{
                color: orange;
            }
        </style>
    </head>
    <body>
        <div id="container">
            <label>修改颜色</label><input type="checkbox" v-model="use"/>
            <div v-bind:class="{'showClass':use}">
                <h3>hell Word</h3>
            </div>
            <div v-html="show"></div>
        </div>
    
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
        <script>
            var vue=new Vue({
                el:"#container",
                data:{
                    show:"<h3>VueJS简明教程</h3>",
                    use:''
                }
            })
        </script>
    </body>
    </html>
    View Code

     判断是否选中,选中的话显示样式。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <div id="container">
            <label>修改颜色</label><input type="checkbox" v-model="use" />
            <div v-bind:style="{'color': 'orange','display':use?'block':'none'}">
                <h3>hell Word</h3>
            </div>
            <div v-html="show"></div>
        </div>
    
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
        <script>
            var vue = new Vue({
                el: "#container",
                data: {
                    show: "<h3>VueJS简明教程</h3>",
                    use: false
                }
            })
        </script>
    </body>
    </html>
    View Code
        v-bind:href 的使用,在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <div id="container">
            <a v-bind:href="href">hello Word</a>
        </div>
    
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
        <script>
            var vue = new Vue({
                el: "#container",
                data: {
                    href:"http://www.runoob.com"
                }
            })
        </script>
    </body>
    </html>
    View Code

    5、if else 表达式支持。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id="container" style=" 100%;">
            {{1+1}} <br/>
            {{isCheck?'true':'false'}} <br/>
            {{strs.split(',').join()}} <br/>
            <div v-bind:id="'list'+id">你好 vue</div>
        </div>
    
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
        <script>
            var vue=new Vue({
                el:"#container",
                data:{
                    isCheck:true,
                    strs:'张三,李四,王五',
                    id:11
                }
            })
        </script>
    </body>
    </html>
    View Code
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <div id="container">
            <h3 v-if="Math.random()>0.5">这是第一条</h3>
            <div v-else>
                <a href="https://www.baidu.com">hello Word</a>
            </div>
        </div>
    
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
        <script>
            var vue = new Vue({
                el: "#container",
            })
        </script>
    </body>
    
    </html>
    View Code

    带有 v- 前缀的特殊属性。

    指令用于在表达式的值改变时,将某些行为应用到 DOM 上。

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <div id="container">
            <h3 v-if="check1">这是第一条</h3>
            <div v-if="check2">
                这是第二条
            </div>
        </div>
    
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
        <script>
            var vue = new Vue({
                el: "#container",
                data: {
                    check1:true,
                    check2:true
                }
            })
        </script>
    </body>
    </html>
    View Code

    6、v-bind:on 的使用,它用于监听 DOM 事件:

    <a v-on:click="doSomething">

    按钮的事件我们可以使用 v-on 监听事件,并对用户的输入进行响应。

    v-on 缩写

    <!-- 完整语法 -->
    <a v-on:click="doSomething"></a>
    <!-- 缩写 -->
    <a @click="doSomething"></a>
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <div id="container">
            <h3>{{show}}</h3>
            <button v-on:click="controlShow">控制反转</button>
        </div>
    
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
        <script>
            var vue = new Vue({
                el: "#container",
                data: {
                    show:'锄禾日当午!'
                },
                methods:{
                    controlShow:function(){
                        this.show=this.show.split('').reverse().join('')
                    }
                }
            })
        </script>
    </body>
    </html>
    View Code

    7、 我们也可以使用 v-show 指令来根据条件展示元素:

    <h1 v-show="ok">Hello!</h1>

    8、v-for 指令需要以 site in sites 形式的特殊语法, sites 是源数据数组并且 site 是数组元素迭代的别名。 

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <div id="container">
            <ol>
                <li v-for="item in arrays">
                    {{item.name}}
                </li>
            </ol>
        </div>
    
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
        <script>
            var arrays=[
                {name:'张三',age:11},
                {name:'李四',age:23},
                {name:'王五',age:52},
            ];
            var vue = new Vue({
                el: "#container",
                data:{
                    arrays:arrays
                }
            })
        </script>
    </body>
    
    </html>
    View Code

    二、监听属性

     1、watch  实现简单的计数器

    <html>
        <header>
            <title>vue.js 测试</title>
        </header>
        <body>
            <div>
                <h3 id="firstVue">
                    计数器:{{total}}
                    <br/>
                    <button v-on:click=" total++ ">点击</button>
                </h3>
            </div>
            
            <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
            <script>
                var vm=new Vue({
                    el:"#firstVue",
                    data:{
                        total:1, 
                    }
                })
                //监听 total 数值的变化
                vm.$watch("total",function(after,before){
                    alert('计数器值的变化 :' + before + ' 变为 ' + after);
                })
            </script>
        </body>
    </html>
    View Code

    2、watch  实现简单的 米m 和 千米km 的转换。

    <html>
    <header>
        <title>vue.js 测试</title>
    </header>
    
    <body>
        <div>
            <div id="container">
                千米 : <input v-model.number="km" />
                米 : <input v-model.number="m" />
            </div>
            <p id="info"></p>
        </div>
    
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
        <script>
            var vm = new Vue({
                el: "#container",
                data: {
                    km: "0",
                    m: "0",
                },
                watch: {
                    m: function (val) {
                        this.m = val;
                        this.km = val / 1000;
                    },
                    km: function (val) {
                        this.km = val;
                        this.m = val * 1000;
                    }
                }
            })
            //监听 total 数值的变化
            vm.$watch("km", function (newValue, oldValue) {
                document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
            })
        </script>
    </body>
    </html>
    View Code

     三、事件处理

    1、事件监听可以使用 v-on 指令:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <div id="container">
            <button v-on:click="say('hello')">点击</button>
            <button v-on:click="say('你好')">点击</button>
        </div>
    
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
        <script>
            var vue = new Vue({
                el: "#container",
                methods:{
                    say:function(message){
                        if(message){
                            alert(message);
                        }
                    }
                }
            })
        </script>
    </body>
    
    </html>
    View Code

    2、事件修饰符

    Vue.js 为 v-on 提供了事件修饰符来处理 DOM 事件细节,如:event.preventDefault() 或 event.stopPropagation()。

    Vue.js 通过由点 . 表示的指令后缀来调用修饰符。

    • .stop - 阻止冒泡
    • .prevent - 阻止默认事件
    • .capture - 阻止捕获
    • .self - 只监听触发该元素的事件
    • .once - 只触发一次
    • .left - 左键事件
    • .right - 右键事件
    • .middle - 中间滚轮事件
    <!-- 阻止单击事件冒泡 -->
    <a v-on:click.stop="doThis"></a>
    <!-- 提交事件不再重载页面 -->
    <form v-on:submit.prevent="onSubmit"></form>
    <!-- 修饰符可以串联  -->
    <a v-on:click.stop.prevent="doThat"></a>
    <!-- 只有修饰符 -->
    <form v-on:submit.prevent></form>
    <!-- 添加事件侦听器时使用事件捕获模式 -->
    <div v-on:click.capture="doThis">...</div>
    <!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
    <div v-on:click.self="doThat">...</div>
    
    <!-- click 事件只能点击一次,2.1.4版本新增 -->
    <a v-on:click.once="doThis"></a>

    按键修饰符

    Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:

    <!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
    <input v-on:keyup.13="submit">

    记住所有的 keyCode 比较困难,所以 Vue 为最常用的按键提供了别名:

    <!-- 同上 -->
    <input v-on:keyup.enter="submit">
    <!-- 缩写语法 -->
    <input @keyup.enter="submit">

    全部的按键别名:

    • .enter
    • .tab
    • .delete (捕获 "删除" 和 "退格" 键)
    • .esc
    • .space
    • .up
    • .down
    • .left
    • .right
    • .ctrl
    • .alt
    • .shift
    • .meta
  • 相关阅读:
    Java 内部类种类及使用解析
    linux下的一些命令分析与shell的一些命令
    Centos7 安装gitlab
    centos7安装laravel
    laravel中对加载进行优化
    laravel如何利用数据库的形式发送通知
    laravel中的gate
    laravel中的scope作用域
    Laravel 使用firstOrCreate 报错MassAssignmentException
    laravel中关联模型并使用scout导入数据 +视图合成器
  • 原文地址:https://www.cnblogs.com/wwj1992/p/13712821.html
Copyright © 2020-2023  润新知