# vue.js 之 对vue.js基础理解

vue.js 之 对vue.js基础理解

Vue构造器

  • 1 . Vue.js是一个构造函数,编程中称之为构造器

  • 2 . 每个new Vue() 都是一个Vue构造函数的实例,这个过程叫作实例化

  • 3 . 构造函数须要将其实例化后才会启用 var vm = new Vue({ //...})

  • 4 . Vue构造器要求实例化时须要传入一个选项对象

<div class="app">
        {{msg}}
</div>
<script>
        //vue.js  组件其实都是被扩展的 vue实例。
        
          var vm=new Vue({           //vue 实例   
                el:".app",
                data:{
                    msg:"hello vue.js"
                }
            });
        //  响应式    
        //vm(构造器) 是 Vue  的实例
        //vue 是 vm  的构造器  ( 构造函数)
    </script>
如:{{msg}}

1){{msg}}会在视图中显示html

2){{msg}}在实例化后仍然保持数据响应vue

3){{msg}}尽管在console.log(data)中存在,但视图却找不到,且会报错编程

4)所以请不要试图在实例化后添加任何属性api

实例属性 方法以及生命周期

  • 1 . data会代理其对象里的全部属性.

  • 2 . 只有data里的属性是响应式的,即通讯是双向的.

  • 3 . Vue被实例化后,再建立的属性,将不会触发视图更新.

  • 4 . 在文档中常常会使用 vm 这个变量名表示 Vue 实例,在实例化 Vue时,须要传入一个选项对象,它能够包含数据(data)、模板(template)、挂载元素(el)、方法(methods)、生命周期钩子(lifecyclehook)等选项。

1 . 每一个Vue实例都会代理其data对象里全部的属性:
2 . Vue实例暴露了一些有用的实例属性与方法
var data = { a : 1 }
var vm = new Vue({
      data : data
})
    vm.a === data.a // -> true
    // 设置属性也会影响到原始数据
    vm.a = 2
    data.a // -> 2
    // ... 反之亦然
    data.a = 3
    vm.a // -> 3
1 . 为与代理属性区分,方前添加了前缀$
2 . app.$data===data //->true
app.$el===document.getElementById("app") //->true
var data = { a : 1 }
var vm = new Vue({
      el : '#example' ,
      data : data
    })
    vm.$data === data // -> true
    vm.$el === document .getElementById( 'example' ) // -> true
    // $watch 是一个实例方法
    vm.$watch( 'a' , function ( newVal, oldVal ) {
      // 这个回调将在`vm.a` 改变后调用
})

实例生命周期

Vue 实例有一个完整的生命周期,也就是从开始建立、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程,咱们称这是 Vue 的生命周期。通俗说就是 Vue 实例从建立到销毁的过程,就是生命周期。

在Vue的整个生命周期中,它提供了一些生命周期钩子,给了咱们执行自定义逻辑的机会。

created(建立后)mounted(载入后)updated(更新后)d(销毁后) estroyed(销毁后)

模板语法插值

Vue.js 使用了基于 HTML 的模版语法,容许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。在底层的实现上, Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,在应用状态改变时, Vue 可以智能地计算出从新渲染组件的最小代价并应用到 DOM 操做上。

插值

文本

{{}}数据绑定最多见的就是Mustache(双括号)的文本插值,使用v-once指令,能够执行一次插值,后面若是有改变,将不会更新。

<p v-once>{{message}}</p>

HTML

还能够插入HTML使用指令v-html

Mustache{{}} 不能在 HTML 属性中使用,应使用 v-bind 指令

<div id="app-2">
        <p v-once>这里的数据只会执行一次更新:{{me    ssage}}</p>
        <div v-html="rawHtml">自定义html</div>
    </div>
var app2 = new Vue({
    el:'#app-2',
    data:{
        message:'第一次更新',
        rawHtml:'<ol><li>这里是自定义html</li><li>这里是自定义html</li></ol>'
    }
})
app2.message = '第二次更新没有赋值';

指令

v-if、v-on、v-bind

指令(Directives)是带有 v- 前缀的特殊属性。指令属性的值预期是单一 JavaScript 表达式(除了 v-for,以后再讨论)。指令的职责就是当其表达式的值改变时相应地将某些行为应用到 DOM 上。

过滤器

是经过后面的函数对前面这个值作一个变化,得出须要的内容

Vue.js 容许你自定义过滤器,被用做一些常见的文本格式化。过滤器应该被添加在 mustache 插值的尾部,由“管道符”指示:

过滤器能够串联 并且还能够接收参数

{{ message | capitalize }}缓存

new Vue({
 // 将message的值首字母变为大写,其它不变
 filters: {
 capitalize: function (value) {
 if (!value) return ''
 value = value.toString()
 return value.charAt(0).toUpperCase() + value.slice(1)
 }
 }
})

缩写

v-bind 缩写

Vue.js 为两个最为经常使用的指令提供了特别的缩写:

<!-- 完整语法 -->
<a v-bind:href="url"></a>
<!-- 缩写 -->
<a :href="url"></a>

v-on 缩写

<!-- 完整语法 -->
<a v-on:click="doSomething"></a>
<!-- 缩写 -->
<a @click="doSomething"></a>

计算属性

模板内的表达式是很是便利的,可是它们实际上只用于简单的运算。在模板中放入太多的逻辑会让模板太重且难以维护。例如:

计算属性 vs watched

当你有一些数据须要随着其它数据变更而变更时能够用 vs method计算属性 也能够用 vswatched ;

<div id="app">
        {{fullName}}
        <input v-model="firstName"/>
        <input v-model="lastName"/>
</div>

<script>
        var vm = new Vue({
            el:'#app',
            data:{
                firstName:"chao",
                lastName:"qiu",
                fullName:"qiuchao"
            },
            computed:{
                fullName:{
                    get:function(){
                        return this.lastName+this.firstName;
                    }
                }
            },
            methods:{

            },
            filters:{
            },
            watch:{
                firstName:function(){
                    this.fullName=this.lastName+this.firstName;
                    //return this.lastName+this.firstName;
                },
                lastName:function(){
                   // return this.lastName+this.firstName;
                   this.fullName=this.lastName+this.firstName;
                },
            }
        });
    
</script>

与method对比

    计算属性基于本身的依赖进行缓存,只要message没发生变化,屡次访问该计算属性就会当即返回以前的计算结果,而没必要再次执行函数;app

    而method调用总会执行该函数。异步

与vs watched对比

    都是用来处理某些数据随其余数据的变更而变更的,但尽可能不要滥用watch,若是代码是命令式和重复的,先考虑下计算属性computed,可以使代码更简洁。函数

    
    

观察Wactchers

提供一个watch选项,当想要在数据变化响应时,执行异步操做或开销较大的操做时使用。

虽然计算属性在大多数状况下更合适,但有时也须要一个自定义的 watcher 。这是为何 Vue 提供一个更通用的方法经过 watch 选项,来响应数据的变化。当你想要在数据变化响应时,执行异步操做或昂贵操做时,这是颇有用的。

<div id="app">
    {{msg}}
    <input v-model="msg"/>
</div>
<script>
    var app = new Vue({
        el:"#app",
        data:{
            msg:""
        },
        watch:{
            msg:function(newValue){
                localStorage.getItem("msg",newValue);
            }
        },
        mounted:function(){
            this.msg = localStorage.getItem("msg");
        }
    });
</script>
相关文章
相关标签/搜索