Vue.js 简介

Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。

什么是 Vue.js

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

Vue 的特点

Vue.js 具有以下特点:响应式数据绑定、组件化开发、虚拟 DOM、单文件组件、路由管理、状态管理等。

Vue 基础

学习 Vue 的基本语法和概念。

声明式渲染

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

<div id="app">
  {{ message }}
</div>

<script>
const app = Vue.createApp({
  data() {
    return {
      message: "Hello Vue!"
    }
  }
})
app.mount("#app")
</script>

数据与方法

当一个 Vue 实例被创建时,它将 data 对象中的所有的 property 加入到 Vue 的响应式系统中。当这些 property 的值发生改变时,视图将会产生"响应",即匹配更新为新的值。

const app = Vue.createApp({
  data() {
    return {
      count: 4
    }
  }
})

const vm = app.mount("#app")
console.log(vm.$data.count) // => 4
console.log(vm.count)       // => 4

模板语法

Vue.js 使用基于 HTML 的模板语法。

插值

使用双大括号进行文本插值。

<span>Message: {{ msg }}</span>

指令

指令是带有 v- 前缀的特殊 attribute,用于在表达式改变时产生响应式更新。

<p v-if="seen">现在你看到我了</p>
<a v-bind:href="url">...</a>
<button v-on:click="doSomething">...</button>

计算属性

计算属性是基于它们的响应式依赖进行缓存的。

计算属性用法

计算属性用于处理复杂的数据逻辑,会基于响应式依赖进行缓存。

<div id="app">
  <p>原始消息: "{{ message }}"</p>
  <p>反转消息: "{{ reversedMessage }}"</p>
</div>

<script>
const app = Vue.createApp({
  data() {
    return {
      message: "Hello Vue"
    }
  },
  computed: {
    reversedMessage() {
      return this.message.split("").reverse().join("")
    }
  }
})
</script>

Class 与 Style 绑定

动态切换元素的 class 和 style。

绑定 Class

使用 v-bind:class 动态绑定 class。

<div :class="{ active: isActive, error: hasError }">
  内容
</div>

绑定 Style

使用 v-bind:style 动态绑定内联样式。

<div :style="{ color: activeColor, fontSize: fontSize + 'px' }">
  内容
</div>

条件渲染

根据条件显示或隐藏元素。

v-if 指令

v-if 指令用于条件性地渲染一块内容。

<h1 v-if="awesome">Vue 很棒!</h1>
<h1 v-else>Oh no 😢</h1>

v-show

v-show 用于根据条件展示元素,元素始终会被渲染并保留在 DOM 中。

<h1 v-show="ok">Hello!</h1>

列表渲染

使用 v-for 指令渲染列表。

v-for 遍历数组

使用 v-for 基于一个数组来渲染一个列表。

<ul>
  <li v-for="item in items" :key="item.id">
    {{ item.message }}
  </li>
</ul>

v-for 遍历对象

可以使用 v-for 来遍历一个对象的 property。

<ul>
  <li v-for="(value, key) in object">
    {{ key }}: {{ value }}
  </li>
</ul>

事件处理

使用 v-on 指令监听 DOM 事件。

监听事件

使用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。

<button v-on:click="counter += 1">加 1</button>
<button @click="greet">打招呼</button>

表单输入绑定

使用 v-model 指令创建双向数据绑定。

基础用法

v-model 指令可以在表单 input、textarea 及 select 元素上创建双向数据绑定。

<input v-model="message" placeholder="编辑我">
<p>消息是: {{ message }}</p>

组件基础

组件是 Vue 最强大的功能之一。

组件注册

组件是可复用的 Vue 实例。

const app = Vue.createApp({})

app.component("my-component", {
  template: "<div>这是一个组件</div>"
})

使用组件

在模板中使用组件。

<div id="app">
  <my-component></my-component>
</div>