Vue2基础

Hello World

<!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="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  </head>
  <body>
    <div id="app">{{msg}}</div>
    <script>
      new Vue({
        el: "#app",
        data: {
          msg: "Hello World",
        },
      });
    </script>
  </body>
</html>

v-bind

缩写::

<div :title="msg"></div>

事件处理

v-on 缩写:@

<button @click="count++">click</button>
<button @click="onClick">click</button>
<button @click="handleClick(1,$event)">click</button>

条件渲染

  • v-if 新增和移除元素
  • v-show 通过display控制元素展示
  • v-if vs v-show
    • v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。
    • v-if是惰性的:如果初始渲染时条件为假,则直到条件第一次变为真时,才会开始渲染。
    • v-show不管初始条件是什么,元素总是会被渲染,只是简单地用display 进行切换。
    • 一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

列表渲染

v-for,添加唯一的key值,不建议使用index

<!-- 遍历数组 -->
<li v-for="(user,index) in users" :key="index">
{{index}} -- {{user.age}} -- {{user.name}}
</li>
<!-- 遍历对象 -->
<li v-for="(val,key,index) in userInfo">{{index}} --{{key}} - {{val}}</li>

class

可以和正常的class共存

数组写法:

<div class="static" :class="['box1', 'box2']"></div>

对象写法:

<div class="static" :class="{'box1': isActive, 'box2': isChecked}"></div>

style

可以和正常的style共存

对象形式:

<div style="color: red;" :style=" {background: 'green' }"></div>

数组形式 :将多个样式对象应用到同一个元素上

<div style="height: 20px;" :style="[style1, style2]"></div>

v-model

<input type="text" v-model="title" />

原理

<input type="text" @input="handleInput" :value="content" />
 
app = new Vue({
        el: "#app",
        data: {
          content: "test",
        },
        methods: {
          handleInput(e) {
            this.content = e.target.value;
          },
        },
      });

computed

新增了变量名,拥有可读性

依赖数据没有变化时不会多次执行,可缓存

computed: {
    reverseMsg() {
        // 可缓存,即使多个地方使用此变量,仍然只执行一次
        console.log("once");
        return this.msg.split("").reverse().join("");
    },
},

watch

当需要在数据变化时执行异步或开销较大的操作时使用

deep 深度监听对象的值变化。

immediate 初始化是立即执行一次

watch: {
    msg: {
        handler(newValue, oldValue) {
            console.log(newValue, oldValue);
            // 更新多个值
            this.msg1 = newValue + ":msg1";
            this.msg2 = newValue + ":msg2";
            this.msg3 = newValue + ":msg3";

            // 请求后端接口,获取数据
            axios("test").then((res) => {
                console.log(res);
            });
        },
            immediate: true,
    },
        "info": {
            handler(newValue, oldValue) {
                console.log(newValue, oldValue);
            },
                deep: true,
        },
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是Vue 是一套用于构建用户界面的渐进式 javascript 框架(渐进式:想用什么就用什么不必全都用) 在...
    王果果阅读 10,405评论 0 14
  • vue2 基础学习01 ( 核心最基本的功能) vue学习路径和建议----尤雨溪 vue官网 根据官网一步步学习...
    邢走在云端阅读 1,508评论 0 3
  • 1. 简介 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不...
    yangsg阅读 4,793评论 0 11
  • Vue.js(读音/vjuː/, 类似于 view)是一个构建数据驱动的web 界面的渐进式框架。Vue.js的目...
    xingyunfuhao阅读 3,887评论 0 0
  • 1. Vue 实例 1.1 创建一个Vue实例 一个 Vue 应用由一个通过 new Vue 创建的根 Vue 实...
    王童孟阅读 4,601评论 0 2