Vue3 基础入门(一)

一、简介

1. Vue 核心

Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。

Vue 的两个核心功能:

  • 声明式渲染:Vue 基于标准 HTML 拓展了一套模板语法,使得我们可以声明式地描述最终输出的 HTML 和 JavaScript 状态之间的关系。
  • 响应性:Vue 会自动跟踪 JavaScript 状态并在其发生变化时响应式地更新 DOM。
2. 渐进式框架

Vue 是一个渐进式框架(一个可以与你共同成长、适应你不同需求的框架),也是一个生态。
Vue 的设计非常注重灵活性和“可以被逐步集成”这个特点。根据你的需求场景,你可以用不同的方式使用 :

  • 无需构建步骤,渐进式增强静态的 HTML
  • 在任何页面中作为 Web Components 嵌入
  • 单页应用 (SPA)
  • 全栈 / 服务端渲染 (SSR)
  • Jamstack / 静态站点生成 (SSG)
  • 开发桌面端、移动端、WebGL,甚至是命令行终端中的界面
3. 单文件组件

单文件组件是 Vue 的标志性功能。

4. API 风格

Vue 的组件可以按两种不同的风格书写:选项式 API 和组合式 API。

选项式 API (Options API) (Vue2 的设计)

包含多个选项的对象来描述组件的逻辑,例如 data、methods 和 mounted。选项所定义的属性都会暴露在函数内部的 this 上,它会指向当前的组件实例。

组合式 API (Composition API)(Vue3 的设计)

通过组合式 API,我们可以使用导入的 API 函数来描述组件逻辑。在单文件组件中,组合式 API 通常会与 < script setup> 搭配使用。

<script setup>
import { ref, onMounted } from 'vue'

// 响应式状态(使用 ref 绑定到Dom上)
const count = ref(0)

// 用来修改状态、触发更新的函数
function increment() {
  count.value++ // (使用 .value 来改变绑定属性的值)
}

// 生命周期钩子
onMounted(() => {
  console.log(`The initial count is ${count.value}.`)
})
</script>

<template>
  <button @click="increment">Count is: {{ count }}</button>
</template>
两种 API 区别
  • 选项式 API 以“组件实例”的概念为中心 (即上述例子中的 this),对于有面向对象语言背景的用户来说,这通常与基于类的心智模型更为一致。
    它将响应性相关的细节抽象出来,并强制按照选项来组织代码,从而对初学者而言更为友好。
  • 组合式 API 的核心思想是直接在函数作用域内定义响应式状态变量,并将从多个函数中得到的状态组合起来处理复杂问题。这种形式更加自由,也需要你对 Vue 的响应式系统有更深的理解才能高效使用。相应的,它的灵活性也使得组织和重用逻辑的模式变得更加强大。

二、基础

1. 创建一个 Vue 应用

创建根组件,应用实例必须在调用了 .mount() 方法后才会渲染出来。

import { createApp } from 'vue'
// 从一个单文件组件中导入根组件
import App from './App.vue'

const app = createApp(App)

app.mount('#app') // 挂载根组件应用
2. 模板语法
  • 最基本的数据绑定形式是文本插值,它使用的是“Mustache”语法 (即双大括号):
  • v-bind 指令,绑定属性值
    v-bind 指令指示 Vue 将元素的 id attribute 与组件的 dynamicId 属性保持一致。如果绑定的值是 null 或者 undefined,那么该 attribute 将会从渲染的元素上移除。
  • v-on 指令,绑定事件
<template>
  <div class="wrapper">
    <span>使用文本插值,count 的值是:{{ count }}</span>
    <button v-on:click="increment">增加1</button>
    <input type="text" v-bind:value="count" />
  </div>
</template>
3. 响应式基础
选项式
<script>
export default {
  data() {
    return { count: 6 };
  },
  methods: {
    increment() {
      this.count++;
    }
  }
}
</script>

<template> 同上…… </template>
组合式之一:纯组合< script>
<script>
import { ref } from "vue";
export default {
  setup() {
    const count = ref(6);
    function increment() {
      count.value++;
    }
	// 不要忘记同时暴露 increment 函数
    return { count, increment };
  }
}
</script>

<template> 同上…… </template>
组合式之二:使用< script setup>
<script setup>
import { ref } from "vue";

const count = ref(6);
function increment() {
  count.value++;
}
</script>

<template> 同上…… </template>
组合式之三:使用< script setup lang=“ts”>
<script setup lang="ts">
import { ref } from "vue";

const count = ref<number>(6);
function increment(num: number): void {
  count.value += num;
}
</script>

<template> 同上…… </template>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值