我爱编程

Vue极简快速入门手册

2018-04-14  本文已影响0人  YuhiDiary

下午班

1.Vue.js 是什么

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。

2.入门手册

2.1 使用Vue

简单的在html页面中包含如下代码即可使用Vue

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

2.2 Vue实例

通过添加一个Vue实例即可使用Vue相关API。

new Vue({
  el: '#root'
});

el 属性指定哪些 html 元素可以使用Vue API。
'#root'表示带有id="root"的 html 元素将可以使用Vue API。
其他常用的属性包括:
data:指定 Vue 实例所拥有的变量。
methods:指定 Vue 实例所拥有的函数。
computed:指定 Vue 实例所拥有的计算属性(拥有固定的计算公式但值会发生变化的变量)。
下面是一个包含多个属性的 Vue 实例:

new Vue({
  el: '#root',
  data: {
    message: 'Hello'
  },
  methods: {
     reverseMessage() {
       // `this` 指向 Vue 实例
       this.message =  this.message.split('').reverse().join('')
     }
  },
  computed: {
    reversedMessage: function () {
      // `this` 指向 Vue 实例
      return this.message.split('').reverse().join('')
    }
  }
});

该实例包含了值为 'Hello' 的 data 变量,能反转 'Hello' 的函数 reverseMessage 和计算属性 reversedMessage。

2.3 生命周期钩子

下图是 Vue 实例的生命周期图



图中的红框是被叫做生命周期钩子的函数,可以在实例中像定义属性一样定义他们

new Vue({
  el: '#root',
  data: {
    message: ''
  },
  created: function () {
    this.message = 'Hello';
  }
});

2.4 常用指令

可以在 Vue 实例指定的 html 元素中添加指令,以进行一些便捷操作:
v-for:可以进行数据的遍历,生成相同的 html 元素。
v-model:将 html 表单上的数据和 Vue 实例的数据进行双向绑定,两者只要其中一个发生变化,另一个也会随之变化。
v-if:检查给定的逻辑值,为真就渲染当前元素,否则不渲染。
v-show:检查给定的逻辑值,为真就显示当前元素,否则隐藏。
v-on:绑定事件监听器。发生指定事件便执行给定的函数。
v-bind:动态绑定属性。
下面是一个例子:

<div id="root">
    <ul>
        <li v-for="task in tasks"> {{ task.name }} </li>
    </ul>
    <input v-model="message"></input>
    <button v-if="message == 'Hello'">v-if</button>
    <button v-show="message != 'Hello'">v-show</button>
    <button v-on:click="reverseMessage">reverse</button>
    <button v-bind:class="{ active: message == 'Hello' }">v-bind</button>
</div>

结果如下:



当点击 reverse 按钮时,message 会倒转并且 v-if 按钮消失,v-show 按钮出现,v-bind 的 class 属性从 active 变为消失





同时由于经常使用,v-bind 属性和 v-on 属性分别可以简写为 : 和 @

<button @click="reverseMessage">reverse</button>
<button :class="{ active: message == 'Hello' }">v-bind</button>

2.5 组件

每个组件都为 Vue 实例的孩子,同时每个组件也可以拥有自己的子组件。


下面是一个组件的例子:

<tabs v-on:listenRe="reverseMessage">
  <tab name="About Us" :selected="true">
      <h1>Here is the content for the about us tab.</h1>
  </tab>
</tabs>
Vue.component('tab', {
    template: `
        <div v-show="isActive"><slot></slot></div>
    `,
    props: {
        name: { required: true },
        selected: { default: false }
    },
    data() {
        return {
            isActive: false
        };
    },
    computed: {
        href() {
            return '#' + this.name.toLowerCase().replace(/ /g, '-')
        }
    },
    mounted() {
        this.isActive = this.selected
    },
    methods: {
        emitListenRe() {
            this.$emit('listenRe')
        }
    }
});

tab 为这个组件的名称, tabs 为他的父组件。
template:组件包含的模板。会把 html 文件中所有模板标签替换为这里定义的内容。
<tab></tab> 会被替换为这里的模板内容
可以用 ' ' 包含单行的模板,也可以用 ` ` 包含块级模板。
slot:模板中的<slot></slot>会将模板标签中的内容插入模板中,如上面例子中的 <h1> 标签
props:包含了从父亲传下来的数据。required 表示这个数据是必须存在的(父亲必须传下来这个数据), default则定义了没接受到这个数据时的默认值。
可以看到上面例子中 <tab> 标签中的 name 属性和 selected 属性的值传入到了模板中。
data:和实例中的 data 一样,但注意此时必须定义为 函数 形式并包含 return
生命周期钩子:与 data 一样必须定义为 函数
emit:子组件可以通过 emit 函数向父组件传递事件。父组件使用 v-on 监听到时间后便可执行相应操作。上面的例子中, 通过传递'listenRe',当 tabs 听到之后,便会执行 reverseMessage

2.6 通信

Vue 使用 axios 和服务器进行通信。

import axios from 'axios'
Vue.prototype.$http = axios

加入上述代码后即可在 Vue 实例中使用:

this.$http

获得 axios 对象,使用 axios 的相关API。
有关 axios,可参考 axios github

上一篇 下一篇

猜你喜欢

热点阅读