[vue]2-vue初了解

数据绑定

上一节提到了数据绑定,也提到了数据变页面也变

<div id="app">{{name}}</div>
let app = new Vue({
    el: 'app',
    data: {
    name: 'vue'
}
})

当我们运行这段代码的时候页面中会显示vue,当我们按F12打开控制台,输入app.name = ‘hello vue’

在这里插入图片描述

可以看到,我在控制台输入了app.name = “hello vue”

我们在修改我们的data里面的数据的时候,我们的页面渲染也跟着改变了。

这个就是数据绑定,通过数据绑定,实现数据改变,页面也跟着改变, data -> view

当然这个也被称为vue数据的响应式

  • 数据变,页面自动变,不需要开发者操作dom

  • 将开发者的经历从dom的操作转移到数据的操作

mustache语法 —> {{ }}

vue的mustache支持的数据类型包括

​ boolean

​ 数组

​ 对象

​ 字符串

​ 数字

以上五种数据类型在mustache语法中可以正常显示

但是null、undefined只能绑定,但是不能显示。

    <div id="app">
        boolean: {{true}}
        <br />
        array: {{[2, 3, 4]}}
        <br />
        string: {{'hello, vue'}}
        <br />
        number: {{3,1415926}}
        <br />
        obj1: {{{name:'vue'}.name}}
        <br />
        obj2: {{obj.name}}
        <br />
        null: {{null}}
        <br />
        undefined: {{undefined}}
    </div>
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                obj:{
                    name: 'vue'
                }
            }
        })
    </script>

在这里插入图片描述

注意:传入的对象只能是一个对象的值,不能是一个键值对。

既然null和undefined不能显示在页面中那么他们有什么用?

​ 通常可以用null和undefined做逻辑运算,例如后端返回的数据可能是null,也可能某个对象没有某个属性,那么访问的结果就是undefined,这个时候我们就可以通过结果来判断显示什么内容了。

{{null ? '真的':'假的'}}    //null和undefined可以通过三元表达式,来显示,虽然它一定会是假的。
{{undefined ? '真的':'假的'}}

vue的列表显示,了解vue中的循环

现在,我们来展示一个更加复杂的数据:数据列表。

比如我们现在从服务器请求过来一个列表 希望展示到HTML中。

HTML代码中,使用v-for指令

指令在后面还会有笔记,这里只是认识一下。

    <div id="app">
        <ul>
            <!-- 通过v-for的形式来进行循环  plays是需要循环的数组,item是每一个值,item是变量,所以它一定要写在muastache语法里面 -->
            <li v-for="item in plays">
                {{item}}
            </li>
        </ul>
    </div>
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                plays:['英雄联盟', '魔兽世界', '穿越火线', '地下城与勇士']
            }
        })
    </script>

页面显示

在这里插入图片描述

我们之前说过data数据和view视图是响应式的,那么我们改变一下数据视图依然会改变。

在这里插入图片描述

是不是变得So Easy,我们再也不需要在JavaScript代码中完成DOM的拼接相关操作了

案例:计数器

现在,我们来实现一个小的计数器

  • 点击 + 计数器+1

  • 点击 - 计数器 -1

这里,我们又要使用新的指令和属性了

  • 新的属性:methods,该属性用于在Vue对象中定义方法。

  • 新的指令:v-on:click, 该指令用于监听某个元素的点击事件,并且执行事件处理函数)

你可能会疑惑?这些v-on:click是什么东西?

Vue对象中又是定义el/data/methods,到底都有哪些东西可以定义,以及它们的作用是什么?

这些疑惑在后续笔记中都会一一解开。

<div id="app">
    <h2>当前计数: {{counter}}</h2>
    <!--<button v-on:click="counter++">+</button>-->
    <!--<button v-on:click="counter--;">-</button>-->
    <button v-on:click="add">+</button>
    <button v-on:click="sub">-</button>
    <!--下面是语法糖写法-->    <div id="app">
        <!-- 如果数据发生改变,页面也跟随改变 -->
        当前计数:{{number}}
        <br />
        <!-- v-on:click  和原生的onclick或者click的效果一样,都是点击事件,后面跟一个事件处理函数,这个事件处理函数是一个方法,放在methods里定义。 -->
        <button v-on:click="increment">+</button>

        <!-- 语法糖写法,后期用这个写的比较多 -->
        <!-- <button @click="increment">+</button> -->

        <button v-on:click="decrement">-</button>
    </div>
    <script>
        let app = new Vue({
            el: '#app',
            
            data: {
                number: 0
            },
            
            // methods翻译为中文就是方法的意思,vue的方法都是放到这个对象里面。
            methods: {
                increment() {
                    // 数据变
                    this.number++
                },
                decrement() {
                    this.number--
                }
            }
        })
    </script>
    <!--<button @click="sub">-</button>-->
</div>

另外关于案例中的语法糖,官方说了

​ 它们看起来可能与普通的 HTML 略有不同,但 :@ 对于 attribute 名来说都是合法字符,在所有支持 Vue 的浏览器都能被正确地解析。而且,它们不会出现在最终渲染的标记中。缩写语法是完全可选的,但随着你更深入地了解它们的作用,你会庆幸拥有它们。

​ 所以我们可以放心的使用,因为它写起来更方便,所以我们以后用@会更多,但是我们不要忘记,@是v-on:的语法糖

上面是一个简单的计数器案例,虽然简单,但是体现出了vue框架的一小部分规则

  • 1、el 表示挂载到哪一个dom
  • 2、data用来存储数据
  • 3、methods是一个对象,里面放着关于业务逻辑的一些方法。
  • 4、数据发生改变,相应的视图也会发生改变
  • 5、点击事件实际上使用的是vue的v-on指令

这里总结的是一小部分,随着学习的深入,会发现vue有更多的规则,虽然规则多,但是相应的带给我们的便利也会更多。

MVVM

什么是MVVM(Model-View-ViewModel)呢?

通常我们学习一个概念,最好的方式是去看维基百科(对,千万别看成了百度百科)

https://zh.wikipedia.org/wiki/MVVM

维基百科的官方解释,我们这里不再赘述。

我们直接来看Vue的MVVM

在这里插入图片描述

View层:

  • 视图层

  • 在我们前端开发中,通常就是DOM层。

  • 主要的作用是给用户展示各种信息。

Model层:

  • 数据层

  • 数据可能是我们固定的死数据,更多的是来自我们服务器,从网络上请求下来的数据。

  • 在我们计数器的案例中,就是后面抽取出来的obj,当然,里面的数据可能没有这么简单。

VueModel层:

  • 视图模型层视图模型层是View和Model沟通的桥梁。

  • 一方面它实现了Data Binding,也就是数据绑定,将Model的改变实时的反应到View中

  • 另一方面它实现了DOM Listener,也就是DOM监听,当DOM发生一些事件(点击、滚动、touch等)时,可以监听到,并在需要的情况下改变对应的Data。

计数器的MVVM

计数器的MVVM

  • 我们的计数器中就有严格的MVVM思想

  • View依然是我们的DOM

  • Model就是我们我们抽离出来的obj

  • ViewModel就是我们创建的Vue对象实例

它们之间如何工作呢?

  • 首先ViewModel通过Data Binding让obj中的数据实时的在DOM中显示。

  • 其次ViewModel通过DOM Listener来监听DOM事件,并且通过methods中的操作,来改变obj中的数据。

  • 有了Vue帮助我们完成VueModel层的任务,在后续的开发,我们就可以专注于数据的处理,以及DOM的编写工作了。

在这里插入图片描述

创建Vue实例传入的options

你会发现,我们在创建Vue实例的时候,传入了一个对象options。

这个options中可以包含哪些选项呢?

详细解析: https://cn.vuejs.org/v2/api/#%E9%80%89%E9%A1%B9-%E6%95%B0%E6%8D%AE

目前学过了这些:

el:

类型:string | HTMLElement

作用:决定之后Vue实例会管理哪一个DOM。

data:

类型:Object | Function (组件当中data必须是一个函数)

作用:Vue实例对应的数据对象。

methods:

类型:{ [key: string]: Function }

作用:定义属于Vue的一些方法,可以在其他地方调用,也可以在指令中使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值