Vue入门

vue的优点:

轻量级框架

只关注视图层,是一个构建数据的视图集合

Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统

简单易学

国人开发,中文文档,不存在语言障碍,易于理解和学习

双向数据绑定

vue.js会自动响应数据的变化情况,并且根据用户在代码中预先写好的绑定关系,对所有绑定在一起的数据和视图内容都进行修改。而这种绑定关系,就是以input 标签的v-model属性来声明的,因此你在别的地方可能也会看到有人粗略的称vue.js为声明式渲染的模版引擎。

这也就是vue.js最大的优点,通过MVVM思想实现数据的双向绑定,让开发者不用再操作dom对象,有更多的时间去思考业务逻辑。

视图,数据,结构分离

使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作

开发方便

可以用很少的代码,实现js的大部分功能,可以快速的开发网站

Vue初始

  • 插值表达式{{ message }}

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue</title>
        <!--导入vue的包-->
        <script src="vue.min.js"></script>
        
    </head>
    <body>
        <!--Vue实例所控制的这个元素区域,就是我们的V-->
        <div id="app">
            <!--插值表达式不会覆盖标签内部的内容,只会替换插值表达式位置的内容-->
            <p {{message}}</p>
        </div>
    
        <script>
            // 创建一个Vue的实例
            // 当我们导入包之后,在浏览器的内存中,就多了一个Vue构造函数
            // 注意:我们new出来的这个vm对象,就是我拉mvvm中的vm调试者
            var vm = new Vue({
              // 表示当前new的这个Vue实例,要控制页面上的哪个区域
              // el是element的缩写
              el: '#app',  
              // 这里的data就是MVVM中的M,专门用来保存每个页面在的数据的
              data: {  // data属性中存放的是el中要用到的数据
                  //通过Vue提供的指令,很方便的就能把数据渲染到页面上,程序员不再手动操作DOM元素了
                  message: 'Hello Vue!',  
              },
              methods:{
                  //这个位置可以写函数
              }
            });
    
        </script>
    </body>
    </html>
    
  • v-cloak解决插值表达式页面渲染过程中,由于变量没有初始化而导致的闪烁问题

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue</title>
        <!--导入vue的包-->
        <script src="vue.min.js"></script>
    </head>
    <body>
        <!--Vue实例所控制的这个元素区域,就是我们的V-->
        <div id="app">
            <!--插值表达式不会覆盖标签内部的内容,只会替换插值表达式位置的内容-->
            <p v-cloak>{{message}}</p>
        </div>
    
        <script>
            // 创建一个Vue的实例
            // 当我们导入包之后,在浏览器的内存中,就多了一个Vue构造函数
            // 注意:我们new出来的这个vm对象,就是我拉mvvm中的vm调试者
            var vm = new Vue({
              el: '#app',  //表示当前new的这个Vue实例,要控制页面上的哪个区域
              // 这里的data就是MVVM中的M,专门用来保存每个页面在的数据的
              data: {  // data属性中存放的是el中要用到的数据
                  //通过Vue提供的指令,很方便的就能把数据渲染到页面上,程序员不再手动操作DOM元素了
                  message: 'Hello Vue!',  
                  
              },
              methods:{
                  // 这个位置可以写函数
              }
            });
    
        </script>
    </body>
    </html>
    
  • v-text把文本属性渲染到页面上,会覆盖标签内的内容

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue</title>
        <!--导入vue的包-->
        <script src="vue.min.js"></script>
    </head>
    <body>
        <!--Vue实例所控制的这个元素区域,就是我们的V-->
        <div id="app">
            <!--v-text把文本属性渲染到页面上,会覆盖标签内的内容-->
            <h3 v-text="message"></h3>
        </div>
    
        <script>
            // 创建一个Vue的实例
            // 当我们导入包之后,在浏览器的内存中,就多了一个Vue构造函数
            // 注意:我们new出来的这个vm对象,就是我拉mvvm中的vm调试者
            var vm = new Vue({
              el: '#app',  //表示当前new的这个Vue实例,要控制页面上的哪个区域
              // 这里的data就是MVVM中的M,专门用来保存每个页面在的数据的
              data: {  // data属性中存放的是el中要用到的数据
                  // 通过Vue提供的指令,很方便的就能把数据渲染到页面上,程序员不再手动操作DOM元素了
                  message: 'Hello Vue!',  
              },
              methods:{
                 // 这个位置写函数
              }
            });
    
        </script>
    </body>
    </html>
    
  • v-html可以把带标签的内容转义为网页内容展示到页面上

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue</title>
        <!--导入vue的包-->
        <script src="vue.min.js"></script> 
    </head>
    <body>
        <!--Vue实例所控制的这个元素区域,就是我们的V-->
        <div id="app">
            <!--v-html可以把带标签的内容转义为网页内容展示到页面上-->
            <p v-html="msg"></p>
        </div>
    
        <script>
            // 创建一个Vue的实例
            // 当我们导入包之后,在浏览器的内存中,就多了一个Vue构造函数
            // 注意:我们new出来的这个vm对象,就是我拉mvvm中的vm调试者
            var vm = new Vue({
              el: '#app',  //表示当前new的这个Vue实例,要控制页面上的哪个区域
              // 这里的data就是MVVM中的M,专门用来保存每个页面在的数据的
              data: {  // data属性中存放的是el中要用到的数据
                  msg: '<h1>我是一个V-html的展示内容</h1>',  // v-html要展示的内容
              },
              methods:{
                  // 这个位置写函数
              }
            });
    
        </script>
    </body>
    </html>
    
  • v-bind绑定属性的指令 ,缩写为 :

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue</title>
        <!--导入vue的包-->
        <script src="vue.min.js"></script>
    </head>
    <body>
        <!--Vue实例所控制的这个元素区域,就是我们的V-->
        <div id="app">
            <!--v-bind是Vue中提供的用于绑定属性的指令-->
            <!--v-bind指令可以被简写为:要绑定的属性-->
            <input type="button" value="按钮" :title="mytitle + '我是拼接过来的'">
            <!--v-bind中可以写合法的js表达式-->
            <input type="button" value="按钮" v-bind:title="mytitle">
        </div>
    
        <script>
            // 创建一个Vue的实例
            // 当我们导入包之后,在浏览器的内存中,就多了一个Vue构造函数
            // 注意:我们new出来的这个vm对象,就是我拉mvvm中的vm调试者
            var vm = new Vue({
              el: '#app',  //表示当前new的这个Vue实例,要控制页面上的哪个区域
              // 这里的data就是MVVM中的M,专门用来保存每个页面在的数据的
              data: {  // data属性中存放的是el中要用到的数据
                 
                  mytitle: '这是我自己定义的一个title',
    
              },
              methods:{
                  
              }
            });
    
        </script>
    </body>
    </html>
    
  • v-on事件绑定机制

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue</title>
        <!--导入vue的包-->
        <script src="vue.min.js"></script>
    </head>
    <body>
        <!--Vue实例所控制的这个元素区域,就是我们的V-->
        <div id="app">
            <!--Vue中提供了v-on事件绑定机制-->
            <input type="button" value="点击这里" v-on:click="show">
            <input type="button" value="点击这里" @click="show1">
        </div>
    
        <script>
            // 创建一个Vue的实例
            // 当我们导入包之后,在浏览器的内存中,就多了一个Vue构造函数
            // 注意:我们new出来的这个vm对象,就是我拉mvvm中的vm调试者
            var vm = new Vue({
              el: '#app',  //表示当前new的这个Vue实例,要控制页面上的哪个区域
              // 这里的data就是MVVM中的M,专门用来保存每个页面在的数据的
              data: {  
                  
              },
              methods:{
                  show: function () {
                      alert("Hello")
                  },
                  show1:function () {
                      alert("这是缩写的v-on")
    
                  }
              }
            });
    
        </script>
    </body>
    </html>
    
  • 事件修饰器

    <!--
        1、.stop阻止冒泡
        2、.prevent阻止默认事件
        3、.capture添加事件侦听器时使用事件截获模式
        4、.self只当事件在该元素本身触发时触发回调
        5、.once事件只触发一次
    -->
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Vue的学习</title>
        <script src="vue.min.js"></script>
        <style>
            .inner{
                width: 100%;
                background-color: aqua;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <!--使用 .stop 阻止冒泡-->
            <div class="inner" @click="divclick">
                <input type="button" value="戳我!!" @click.stop="btnclick">
            </div>
            <!--使用 .prevent 阻止默认行为-->
            <a href="https://www.baidu.com" @click.prevent="linkclick">有问题,先百度</a>
            <div class="inner" @click.capture="div1click">
                <input type="button" value="戳我!!" >
            </div>
    
            <a href="https://www.baidu.com" @click.prevent.self="link1click">有问题,先百度</a><br>
    
            <button @click.once="link2click">点击这里</button>
           
        </div>
        <script>
            var vm = new Vue({
                el: "#app",
                data:{
    
                },
                methods:{
                    divclick: function () {
                        console.log("这是触发了inner div的点击事件")
                    },
                    btnclick: function () {
                        console.log("这是触发了btn的点击事件")
                    },
                    linkclick:function () {
                        console.log("触发了链接的点击事件")
                    },
                    div1click:function () {
                        console.log(".capture添加事件侦听器时使用事件截获模式")
                    },
                    link1click:function () {
                        console.log("自身事件")
                    },
                    link2click:function () {
                        console.log("我只能点一次")
                    }
                }
            })
        </script>
    </body>
    </html>
    
  • v-for

    用v-for可以实现数组、数组对象、对象以及数字的迭代,省去写js代码的过程

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>v-for学习</title>
        <script src="vue.min.js"></script>
    </head>
    <body>
    
        <div id="app">
            <!--我们用 v-for 指令根据一组数组的选项列表进行渲染。v-for 指令需要使用 item in items 形式的特殊语法,
            items 是源数据数组并且 item 是数组元素迭代的别名。-->
            <!--<p v-for="(item, i) in list1">索引值为:{{i}}&#45;&#45;&#45;&#45;每一项为:{{item}}</p>-->
    
    
            <!--<p v-for="item in list_obj">ID值为:{{item.id}}&#45;&#45;&#45;&#45;name为:{{item.name}}</p>-->
            <!--<p v-for="(val, key) in obj">val值为:{{val}}&#45;&#45;&#45;&#45;key为:{{key}}</p>-->
            <!--in后面可以放入,数组,数组对象,对象,数字-->
            <!--注意:如果用v-for迭代数字,前面的count值从1开始-->
            <p v-for="count in 10">这是第{{count}}次循环</p>
        </div>
    
        <script>
            var vm = new Vue({
                el: "#app",
                data: {
                    // 用v-for循环一个数组
                    list1: [1, 2, 3, 4, 5],
                    // 用v-for循环一个对象
                    list_obj : [
                        {"id": 1, "name": "张三"},
                        {"id": 2, "name": "李四"},
                        {"id": 3, "name": "王五"},
                        {"id": 4, "name": "赵六"},
                    ],
                    obj:{
                        "id": 1,
                        "name": "tom",
                        "sex": "man"
                    }
                },
                methods:{
    
                }
            })
        </script>
    </body>
    </html>
    

    vue过滤器

    Vue.js允许自定义过滤器,可被 用作一些常见的文本格式化,过滤器可以用在两个地方:mustache插值和v-bind表达式,过滤器应该被 添加在javascript表达式的尾部,由管道符指示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值