vue基础

Vue.js是什么

Vue是一个前端框架,官方的解释是一套用于构建用户界面的渐进式框架。相对于React,AngularJS框架来说是比较轻量级的,然后比较容易上手,所以一开始选择学哪个框架的时候就选择了Vue,正好入职的第一家公司也是使用这个框架。

下载

Vue有两个版本,一个开发版本,包含完整的警告和调试模式;一个是生产版本,删除了警告,进行了压缩。

GitHub地址传送门:github

Vue实例

我们一般通过Vue函数创建一个新的Vue实例。

var vue = new Vue({
    //选项
});

声明式渲染

Vue是声明式渲染,这是Vue的核心,我看过比较好的解释就是“我们只需要告诉程序我们想要什么效果,其他交给程序去做”。

官网的例子就很好理解:

<div id="app">
    {{message}} //Hi
</div>

var vue = new Vue ({
    el: "#app",
    data: {
        message: 'Hi!'
    }
}) 

通过这样我们已经把数据渲染进DOM,而且是响应式的。主要data里的message值发生变化,在页面上也会跟着变化。

选项

当创建一个实例后,我们可以传入一个选项对象,下面列出一些常用选项:

  • el
  • data
  • methods
  • computed

el

选择挂载目标,可以是css选择器,也可以是html元素,在实例挂载后,元素可以通过vue.$el访问。

如果是在实例化时存在这个选项,实例将立即进入编译过程,否则需要显式调用vue.$mount()手动开始编译。

data

Vue实例的数据对象。Vue是响应式的数据变化的,因为Vue会递归的将data的属性转换为getter/setter。data对象必须是纯粹的对象,也就是含有零个或多个的键值对。

实例创建后,可以通过vue.$data访问,并且Vue实例,也就是vue实际上也代理了data对象上的不是以“_”或者“$”开头的属性。也就是vue.$data.a等价于 vue.a.

<div id="app">
    {{message}}  //Hello,world
</div>

var vue = new Vue({
    el: "#app",
    data: {
        message: "Hello world!"
    }
});

vue.$data.message === vue.message //true

methods

用来定义一些方法,用这些方法是实现你想要的一些功能,比如点击事件,或者发送ajax请求等等。这些方法可以通过实例来访问,或者在指令表达式中使用,方法中的this会自动绑定为Vue实例。

<div id="app">
     {{message}}  //Hello
     <button v-on:click="show">展示完整信息</button>//点击按钮后会出现Hello,world!
</div>



var vue = new Vue({
    el: "#app",
    data: {
        message: "Hello"
    },
    methods: {
        show: function() {
            return message = + ",world!"
        }
    }
})

在这个例子我们使用v-on命令,用来监听事件,这个命令下节会解释。我们在button标签里绑定了点击事件,所以一点击的时候,就会触发了show函数,该函数就会执行,所以message的值为“Hello,world!”。

computed

计算属性,它是基于依赖进行缓存的,只有相关的依赖的值发生了改变,才会重新执行函数,否则只会返回之前的结果。

类型:{[key: string]: Function|{get: Function,set: Function}}

var vue = new Vue({
    el: "#app",
    data: {
        a: 1
    },
    computed: {
        add: function() {
             return this.a + 1
        }
    }
})

or

var vue = new Vue({
    el: "#app",
    data: {
        a: 1
    },
    computed: {
        add: {
            get: function() {
                return this.a + 1
            },
            set: function(data) {
                this.a = data -1
            }
        }
    }
})