zoukankan      html  css  js  c++  java
  • Vue复习(一)

    Vue 复习(一)

    Vue.js 不支持 IE8及以下版本

    1. 安装

    1.1 直接下载源码然后通过相对路径引入

    1.2 CDN

    1.3 使用npm下载

    npm init -y
    npm i vue
    

    2. Hello world

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Hello World</title>
        <script src="./vue.js"></script>
    </head>
    <body>
        <div id="app">
            <p>{{msg}}</p>
        </div>
        <script>
            new Vue({
                el:"#app",
                data () {
                    return {
                        msg:"Hello World"
                    }
                }    
            })
        </script>
    </body>
    </html>
    

    3. Vue实例的选项(基础)

    3.1 el

    • 作用:当前Vue实例所管理的html视图
    • 值:通常是id选择器(或者是一个 HTMLElement 实例)
    • 不要让el所管理的视图是html或者body

    3.2 data

    • Vue 实例的数据对象,是响应式数据(数据驱动视图)
    • 可以通过 vm.$data 访问原始数据对象
    • Vue 实例也代理了 data 对象上所有的属性,因此访问 vm.a 等价于访问 vm.$data.a
    • 视图中绑定的数据必须显式的初始化到 data 中

    3.3 methods

    • 其值为可以一个对象
    • 可以直接通过 VM 实例访问这些方法,或者在指令表达式中使用
    • 方法中的 this 自动绑定为 Vue 实例。
    • 注意,不应该使用箭头函数来定义 method 函数 (例如 plus: () => this.a++)。理由是箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向 Vue 实例,this.a 将是 undefined

    3.4 代码演示

    <div id="a">
        {{msgA}} -- {{fn1()}}
    </div>
    
    <script src="./vue.js"></script>
    <script>
        const vm = new Vue({
            // el作用:指定当前Vue实例所管理的视图,值通常是id选择器
            // 1. el的值可以是css选择器,通常是id选择器
            // 2. el的值不能是html标签和body标签
    
            el: '#a',
            // data作用:指定当前Vue实例的数据对象
            // 1. data中的数据是响应式数据
            // 2. 值可以是一个对象 {属性: 值}
            // 3. 所有数据部分写在data中
            // 4. 在当前Vue实例所管理的视图中通过属性名使用data中的数据
            // 5. 可以通过vm.$data.属性 访问数据
            // 6. 可以通过vm.属性 访问数据(更简单)
            data: {
                msgA: '第一个Vue实例对象'
            },
            // methods作用:指定当前Vue实例中的方法
            // 1. 可以直接通过vm实例访问这些方法,
            // 2. 方法中的 this 自动绑定为 Vue 实例。
            // 3. 不推荐使用箭头函数
            methods: {
                fn1: function() {
                    console.log(this.msgA);
                    console.log('vm实例中的methods里的fn1方法被调用');
                },
                fn2: function() {
                    this.fn1();
                    console.log('fn2方法被调用--');
                },
                fn3: () => {
                    console.log(this);
                }
            }
        });
        // 调用fn2方法
        vm.fn2();
        // 调用fn3方法
        vm.fn3();
    </script>
    

    4. Vue.js术语

    插值表达式

    作用:会将绑定的数据实时的显示出来:

    通过任何方式修改所绑定的数据,所显示的数据都会被实时替换

    {{js表达式、三目运算符、方法调用等}}

    不能写 var a = 10; 分支语句 循环语句

        <div id="app">
            <!-- 在插值表达式中可以访问vm实例中data里面的属性 -->
            {{message}}
            <p>{{message}}</p>
            <p>{{message+'啦啦啦'}}</p>
            <p>{{age>18?'成年':'未成年'}}</p>
            <p>{{message.split("")}}</p>
            <!-- 在插值表达式中不能写js语句 -->
            <p>{{var a = 10}}</p>
        </div>
        <!-- 引入vue.js -->
        <script src="./vue.js"></script>
        <script>
            const vm = new Vue({
                el: '#app',
                data: {
                    message: '我是data中的message属性的值',
                    age: 20
                }
            });
        </script>
    

    插值表达式中不能写js语句, 如var a = 10;

    指令

    指令 (Directives) 是带有 v- 前缀的特殊特性。

    指令特性的值预期是单个 JavaScript 表达式(v-for 是例外情况,稍后我们再讨论)。

    指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

    Vue框架提供的语法

    扩展了HTML的能力

    减少DOM操作

      <div id="app">
            <p> {{message}}</p>
            <!-- v-on就是vue给标签元素提供的扩展-指令
                v-on指令就是给标签绑定事件,这里是click,
                当事件处于点击状态时,出发methods中的changeMsg方法
            -->
            <button v-on:click="changeMsg">按钮</button>
        </div>
        <!-- 引入vue.js -->
        <script src="./vue.js"></script>
        <script>
            const vm = new Vue({
                el: '#app',
                data: {
                    message: '我是data中的message属性的值',
                    age: 20
                },
                methods: {
                    changeMsg: function() {
                        this.message += "啦";
                    }
                }
            });
        </script>
    

    5. Vue常用命令

    扩展了html标签的功能、大部分的指令的值是js的表达式 ,取代DOM操作 ,这里介绍常用的几个,具体请看Vue.js官方文档 https://cn.vuejs.org/v2/guide/

    5.1 v-text 和v-html

    • v-text:更新标签中的内容
      • v-text和插值表达式的区别
        • v-text 更新整个标签中的内容
        • 插值表达式: 更新标签中局部的内容
    • v-html:更新标签中的内容/标签
      • 可以渲染内容中的HTML标签
      • 注意:尽量避免使用,容易造成危险 (XSS跨站脚本攻击)
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script src="./vue.js"></script>
    </head>
    
    <body>
        <div id="app">
            <!-- 替换标签的全部内容 -->
            <p v-text="msg">我是P标签的全部内容</p>
            <p v-text="msg">{{count}}</p>
            <p>{{msg}}</p>
            <br>
            <p v-text="str"></p>
            <!-- v-html 可以识别字符串标签 -->
            <p v-html="str"></p>
            <p v-html="stralert"></p>
    
        </div>
        <script>
            var vm = new Vue({
                el: "#app",
                data() {
                    return {
                        msg: 'abc',
                        count: 100,
                        str:'<span>span标签</span>',
                        stralert:'<span onclick="alert(1)">span标签</span>'
                    }
                },
                methods: {
    
                }
            })
        
        </script>
    </body>
    </html>
    

    5.2 v-if 和v-show

    作用:根据表达式的bool值进行判断是否渲染该元素,

    v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。

    因此,如果需要非常频繁地切换,则使用 v-show 较好;

    如果在运行时条件很少改变,则使用 v-if 较好。

     <div id="app">
            <!-- 如果isShow的值是true ,就显示p标签 -->
            <p v-if="isShow">我是p标签中的内容</p>
            <p v-show="isShow">我是p标签中的内容</p>
            <!-- 如果标签显示与隐藏切换频繁, 就使用v-show 
                v-show本质是通过修改标签的display值
            -->
        </div>
        <script src="./vue.js"></script>
        <script>
            new Vue({
                el: '#app',
                data: {
                    isShow: false
                }
            });
        </script>
    

    5.3 v-on

    简写: @事件名.修饰符 = 'methods中的方法名'

    • 作用:使用 v-on 指令绑定 DOM 事件,并在事件被触发时执行一些 JavaScript 代码。

    • 语法: @事件名.修饰符 = "methods中的方法名"

    • 注意: $event 可以传形参

       <div id="app">
              <!-- v-on.xx事件名='当触发xx事件时执行的语句' -->
              <!-- 执行一段js语句:可以使用data中的属性 -->
              <button v-on:click="count += 1">增加 1</button>
              <!-- v-on的简写方法 -->
              <button @click="count += 1">增加 1</button>
              <!-- 执行一个方法 -->
              <button @click="add">增加 1</button>
              <!-- 执行一个方法、这种写法可以传形参 -->
              <button @click="fn1(count)">执行fn1方法</button>
              <!-- 执行一个方法、这种写法可以传形参,特殊的形参$event -->
              <button @click="fn2($event)">执行fn2方法</button>
              <hr>
              <!-- 和v-for结合使用 -->
              <button @click="fn3(index)" v-for="(item, index) in items">执行fn3方法</button>
              <!-- v-on修饰符 如 once: 只执行一次 -->
              <button @click.once="fn4">只执行一次</button>
      
              <p>上面的按钮被点击了 {{ count }} 次。</p>
          </div>
          <script src="./vue.js"></script>
          <script>
              new Vue({
                  el: '#app',
                  data: {
                      count: 0,
                      items: ['a', 'b', 'c']
                  },
                  methods: {
                      add: function() {
                          this.count += 1;
                      },
                      fn1: function(count) {
                          console.log(count);
                          console.log('fn1方法被执行');
                      },
                      fn2: function(e) {
                          console.log(e);
                          console.log('fn2方法被执行');
                      },
                      fn3: function(index) {
                          console.log(index);
                          console.log('fn3方法被执行');
                      },
                      fn4: function() {
                          console.log('fn4方法被执行了');
                      }
                  }
              });
          </script>
      
    • 修饰符

      • .once - 只触发一次回调。
      • .prevent - 调用 event.preventDefault()
  • 相关阅读:
    [Unity3D]调用Android接口
    android studio build.gradle中 project.ANDROID_BUILD_SDK_VERSION
    java中static{}语句块详解
    [Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
    c++中 extern
    android studio一直卡在Gradle:Executing tasks
    Android Studio导入第三方类库的方法
    Android按返回键退出程序但不销毁,程序后台运行,同QQ退出处理方式
    Ubuntu64位下使用eclipse闪退的解决
    Android4.1中BinderService的作用
  • 原文地址:https://www.cnblogs.com/qzdd/p/12795252.html
Copyright © 2011-2022 走看看