Vue.js 学习与应用(一)

vue.js

一套用于构建用户界面的渐进式框架。

官方教程:https://cn.vuejs.org/v2/guide/
在线编辑:https://codepen.io/pen

此博统计各种语法,为了方便阅读只有简短代码,而且需要详细学习的话还是建议直接在官网的教程上走一遍~其实很简单。

Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统。

先介绍一下基础语法,作为铺垫

声明式渲染

v-bind 特性被称为指令。指令带有前缀 v-,以表示它们是 Vue 提供的特殊特性。

<div id='div1'> 
  <span v-bind:title="titleContent">鼠标悬停查看title</span>
  {
   
   { name }} 
</div>

var vueObj = new Vue({
  el:"#div1",
  data:{
    name:"飞机",
    titleContent:"这里是Vue实例中动态的内容。"
  }
})

页面效果:
声明式渲染

条件与循环

<div id="div1">
  <ol v-if="flag">
    <li v-for="entity in entitys">
      {
   
   {entity.id}}--{
   
   {entity.name}}  
    </li>
  </ol> 
</div>

var div1 = new Vue({
  el:'#div1',
  data:{
    flag:true,
    entitys:[
     {id:5234524,name:'三笠' },
     {id:2345241,name:'艾伦' },
     {id:2345345,name:'利维' },
     {id:3243435,name:'艾尔敏' }
    ] 
  }  
})

页面效果:

条件与循环

在 Vue 插入/更新/移除元素时自动应用过渡效果


处理用户输入

v-on 指令添加一个事件监听器

<div id="div1">
  <p>{
   
   {mess}}</p>
  <button v-on:click="reverseStr">反转字符串</button>
          
  <p>{
   
   {inputData}}</p>
  <input v-model="inputData">
</div>

var div1 = new Vue({
  el:'#div1',
  data:{ 
    mess:'进击的巨人1',
    inputData:''
  },
  methods:{ 
    reverseStr:function(){
      this.mess = this.mess.split('').reverse().join('') 
    }
  }
})

页面效果:
处理用户输入


组件化应用构建

组件系统是 Vue 的另一个重要概念,因为它是一种抽象,允许我们使用小型、独立和通常可复用的组件构建大型应用。

<div id="div1">
    <ol>
      <comp-li
        v-for="valItem valList"
        v-bind:comp="valItem.val" 
      ></comp-li>          
    </ol>
</div>

Vue.component('comp-li',{
    props: ['comp'],
    template: '<li >{
   
   { comp }}</li>'
})
var div1 = new Vue({
  el:'#div1',
  data:{
    valList:[
      {id:'0',val:'吃饭'},
      {id:'1',val:'喝水'},
      {id:'2',val:'睡觉'}     
    ]
  }
})

这里就有必要解释一下了,component 关键字是声明组件,其中的props,可以看到对应标签元素上的 v-bind:comp ,当 v-bind:comp=“valItem” 时,props:comp 拿到的就是整个 valItem {id:‘0’,val:‘吃饭’} 。
组件化应用构建



Vue实例

每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始
Vue中的数据都具有“响应”性,当属性的值发生改变,视图层也会随之改变,但是这些值必须是在声明Vue实例的时候就存在。
引用官方的解释:

// 我们的数据对象
var data = { a: 1 }

// 该对象被加入到一个 Vue 实例中
var vm = new Vue({
  data: data
})

// 获得这个实例上的属性
// 返回源数据中对应的字段
vm.a == data.a // => true

// 设置属性也会影响到原始数据
vm.a = 2
data.a // => 2

// ……反之亦然
data.a = 3
vm.a // => 3

可是如果设置 data.b = 1 视图不会有任何变化,所以在实际开发时,稍后赋值的属性需要提前声明。
另外,如果想要拒绝这种响应的情况,有个特殊的函数:Object.freeze(),阻止Vue追踪数据

<div id="div1">
  <p>{
   
   { address }}</p>
  <button v-on:click="address = 'guangzhou' ">Change it</button>
</div>

var obj = {
  address: 'guangdong'
}
Object.freeze(obj)
new Vue({
  el: '#div1',
  data: obj
})

这里点击后 console会打印Vue error
Object.freeze(obj)

另外,声明一个Vue实例后,也可以通过属性的方式访问Vue实例中的成员:vm.$data、 vm.$el

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 (newValue, oldValue) {
  // 这个回调将在 `vm.a` 改变后调用
})

Vue声明周期

所有对象都会有他的生命周期,并且每个完整的框架都会有对应的事件回调。

举个栗子
举个栗子

new Vue({
  el: '#div1',
  data: obj,
  created:function(){
    console.log('艾尔敏,前面就能看到海了');
  }
})

created,Vue实例加载完成后执行。官网称他们为“生命周期狗子”打错字,是钩子,其实就是生命周期的回调函数啦。
然后就是放一张Vue的生命周期图:
Vue的生命周期
大致看一下就可以了,具体用到的时候再来查。

未完待续…
版权声明:文章内容总结于网络,如侵犯到原作者权益,请与我联系删除或授权事宜

猜你喜欢

转载自blog.csdn.net/qq845484236/article/details/103871065