Vue极简快速入门手册

下午班

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,046评论 0 29
  • 上课的时候老师和我们唠家常,不知怎的提到了“东瓶西镜”。第一次听这个词还是在我初中听VAE的时候。家里摆着一台座钟...
    辣么大之阅读 2,669评论 0 0
  • 想想一下这样一个场景,有多个人需要过河,河上有一条船,船要等待满10个人才过河,过完河后每个人又各自行动。 这里的...
    wo883721阅读 627评论 0 1
  • 清晨醒来,鸟儿鸣叫。看看窗外天气真好!湛蓝的天空下,小鸟忽高忽低地盘旋着,山坡还是那样的山坡,魏然不动;树还是那样...
    蹉跎的光阴阅读 242评论 0 0
  • 剧情铺垫: 请务必记住: 小荐荐暗恋简小妹! 小荐荐暗恋简小妹! 小荐荐暗恋简小妹! 小荐荐他是个傲娇攻!外表禁欲...
    鹿小爱阅读 623评论 5 11