Vue.js 学习(1) -- 初步了解

Vuejs的目标:实现响应的数据绑定,和组合的视图组件

响应式数据绑定

什么是响应的数据绑定?
就是将数据和元素关联起来,当数据变化的时候,元素也会做响应式的变化,例如:

// html
<div id="vueApp">
  {{ message }}
</div>
var app = new Vue({
  el: '#vueApp',
  data: {
    message: 'Hello VueJS!'
  }
})

在这段代码中,我们通过div的ID,将这个div元素和下面的app对象绑定。一旦对app对象的data属性的message作出修改,那么,在元素中,我们也将会看到响应式的变化——这样数据就和DOM元素绑定在了一起。

在这段代码中,我们采用new Vue这样的形式,声明了一个新的vue实例;后面将会讲到的组件,就是一个预定义的Vue实例,就好像是是定义了一个有default属性的对象。

想自己试一试可戳:https://jsfiddle.net/50wL7mdz/34508/

这种方法也被称为是声明式的将数据渲染进DOM。

Vue.js 指令

和AngularJS相似,VueJS也有一套自己的指令系统,这些指令以v-为前缀,可以像DOM属性那样添加在Dom元素的标签上,例如:<span v-bind:title="message"> </span>,表示这是Vue.js提供的特殊属性。

几个Vue指令的栗子:

1、v-if : 条件

<div id="app-3">
  <p v-if="seen">Now you see me</p>
</div>
var app3 = new Vue({
  el: '#app-3',
  data: {
    seen: true
  }
})

2、v-for:循环

<div id="appVue">
  <ul>
    <li v-for="todo in todos">
      {{ todo.text }}
    </li>
  </ul>
</div>
var app4 = new Vue({
  el: '#appVue',
  data: {
    todos: [
      { text: 'Learn JavaScript' },
      { text: 'Learn Vue' },
      { text: 'Build something awesome' }
    ]
  }
})

3、v-bind:绑定属性

<div id="app-2">
  <span v-bind:title="message">
    Hover your mouse over me for a few seconds
    to see my dynamically bound title!
  </span>
</div>
var app2 = new Vue({
  el: '#app-2',
  data: {
    message: 'You loaded this page on ' + new Date()
  }
})

4、v-on:事件

<div id="app-5">
  <p>{{ message }}</p>
  <button v-on:click="reverseMessage">Reverse Message</button>
</div>
var app = new Vue({
  el: '#app-5',
  data: {
    message: 'Hello Vue.js!'
  },
  methods: { // 这里可以为你的app写方法了!
    reverseMessage: function () {
      this.message = this.message.split('').reverse().join('')
    }
  }
})

5、v-model 双向绑定:

直接绑定表单内容和数据

<div id="app-6">
  <p>{{ message }}</p>
  <input v-model="message">
</div>
var app6 = new Vue({
  el: '#app-6',
  data: {
    message: 'Hello Vue!'
  }
})

组件

下面我们来解决开篇提到的:组合的视图组件。

什么是组合的视图组件?

用过React的同学们一定知道什么是组件,在vue中,组件在概念上和React是非常类似的。

在vue中,组件是这样定义的:
在Vue里,组件就是一个拥有预定义选项的Vue实例。

来看一个栗子:

<div id="app">
  <ol>
    <todo-item v-for="item in groceryList" v-bind:todo="item"></todo-item>
  </ol>
</div>

还记得上面说过的指令吗:v-bind绑定属性(而这里的属性todo,其实就是我们在下面声明组件的时候的props的成员),v-for表示循环。

// 定义组件todo-item,正因为这里有了定义,我们才可以在上面的代码中用<todo-item></todo-item>这样的方式定义标签
Vue.component('todo-item', {
  props: ['todo'],
  template: '<li>{{ todo.text }}</li>'
})

// 为todo-item组件绑定数据
var app = new Vue({
  el: '#app',
  data: {
    groceryList: [
      { text: 'Vegetables' },
      { text: 'Cheese' },
      { text: 'Whatever else humans are supposed to eat' }
    ]
  }
})

解释一下:我们使用Vue.component定义了一个vue组件,相当于是为我们后面使用的实例定义了一个拥有预定义属性的模版。之后我们为todo-item新建Vue实例app的时候,其实是在这个预定义的基础上继续编程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值