通俗易懂的理解Vue.js

一句概括(电梯话)

Vue 是一个用来构建网页界面的 JavaScript 框架 ,它让你把页面拆成一个个「组件」(像乐高积木),组件内部的数据和页面自动绑在一起,数据变了页面自动更新。它既能小范围嵌入老页面,也能做大型单页应用(SPA)。(Vue.js)


二个直观比喻(帮助理解原理)

  1. 数据和视图之间有根"看不见的绳子" :你改数据,绳子会轻轻一拉,浏览器页面就跟着变。这个"绳子"就是 Vue 的响应式系统(reactivity) 。(Vue.js)

  2. Vue3 的响应式像"包一层智能外衣(Proxy)" :Vue3 用 JavaScript 的 Proxy 把对象包起来,任何读写都会被拦截与追踪,所以新增属性或深层变化都能被检测到并触发视图更新(比旧方法更稳、更新更聪明)。(Vue.js)


三、原理(重点、通俗)

  1. 声明式渲染 :你在模板写 {``{ name }},不是直接改 DOM,而是改 name。Vue 负责把数据变化映射到 DOM。

  2. 响应式(reactivity) :Vue 会把你的数据(对象、数组、基本类型)变成"可追踪"的,当数据变,依赖它的视图/计算属性会自动重新计算并更新 DOM。Vue 3 底层用 Proxy 实现更完善的追踪。(Vue.js)

  3. 组件化 :界面拆成许多小组件(组件有自己的数据、模板、样式、方法),组件可以嵌套复用,像乐高积木一样组装页面。(Vue.js)

  4. 模板 + 指令 :模板看起来像 HTML,加上一些指令(v-ifv-forv-modelv-on 等)来控制显示、循环、双向绑定、事件处理。

  5. 两套写法(API) :Vue 有 Options API (传统,把 data/methods/computed 分门别类)和 Composition API (把逻辑按功能聚合在 setup(),更利于复用和 TypeScript)。大项目越来越倾向 Composition API。(Vue School)


四、Vue 能帮你做什么(作用)

  • 快速写交互式界面(表单、列表、仪表盘)。

  • 做单页应用(路由 + 状态管理 + 组件)。

  • 将旧页面逐步升级:可以只在页面的一小块用 Vue(progressive)。(Vue.js)


五、具体用法(最实用的入门示例)

1) 项目起步(简述)

现在常用工具:用 create-vue(或 Vite)创建模板,然后 npm installnpm run dev 开发。用这个脚手架可以马上开始写组件。(MDN 文档)


2) 最简单的"挂一个 Vue 应用"示例(Vue 3)

HTML:

复制代码
<div id="app">{{ message }}</div>

JavaScript:

复制代码
// main.js
import { createApp } from 'vue'

createApp({
  data() {
    return { message: 'Hello Vue!' }
  }
}).mount('#app')

解释:data() 返回的对象会被 Vue 转成响应式,{``{ message }} 会自动渲染并在 message 改变时更新页面。


3) Options API 的组件(适合初学者)

复制代码
<!-- HelloWorld.vue -->
<template>
  <div>
    <h3>{{ title }}</h3>
    <input v-model="name" placeholder="type name" />
    <p>Hi, {{ name }}</p>
    <button @click="sayHello">Say</button>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  props: { title: String },
  data() {
    return { name: '' }
  },
  methods: {
    sayHello() {
      alert('Hello ' + this.name)
    }
  }
}
</script>

要点:props 接受父组件传入的数据;v-model 做双向绑定;@click 绑定事件。


4) Composition API(更现代、便于复用&TypeScript)

复制代码
<template>
  <div>
    <h3>{{ title }}</h3>
    <input v-model="name" />
    <p>count: {{ count }} / doubled: {{ doubled }}</p>
    <button @click="increment">+</button>
  </div>
</template>

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

const props = defineProps({ title: String })

const name = ref('')
const count = ref(0)
const doubled = computed(() => count.value * 2)
function increment() { count.value++ }
</script>

说明:ref() 用来包装基本类型(访问改值用 .value),computed() 创建计算属性,script setup 是更简洁的写法。


5) 常用指令 & 功能速查(小抄)

  • v-if="cond":条件渲染

  • v-for="(item, i) in list":循环渲染

  • v-model="value":表单双向绑定

  • v-on:click="fn" / @click="fn":事件

  • :prop="expr":绑定属性(缩写 :

  • computed:缓存计算值

  • watch:监听值变化作副作用(异步请求、日志)

  • 生命周期:created/mounted(Options)或 onMounted()(Composition)


六、响应式工作流程(再用比喻解释)

把数据对象想象成"智能玩偶",在它身上装了探测器(依赖收集)------当组件读取某个字段时,Vue 记录"这个组件依赖这个字段";当字段被改写时,探测器发出通知,只有依赖这个字段的组件会重新渲染。Vue3 的 Proxy 就像给玩偶穿上了全身智能衣,连新增的口袋(新增属性)也能被发现并响应。(Vue.js)


七、什么时候用 Options API / Composition API?

  • Options API:入门更友好,项目小、团队熟悉时很合适。

  • Composition API :逻辑复用、复杂组件、TypeScript 支持、较大项目更适合。社区和官方也在鼓励在新项目更多使用 Composition API。(Vue School)


八、常见注意点与坑(实用提醒)

  • Vue3 用 Proxy,解决了 Vue2 新增属性不响应的问题,但仍要注意深拷贝与引用类型导致的意外。(Vue.js)

  • refreactive 的选择:基本类型用 ref(),对象/数组用 reactive()(两者在细节和解引用上有区别)。

  • 大型状态管理用专门库(例如 Pinia / Vuex)能让跨组件状态更清晰(这里按需选)。

  • 模板里不要滥用复杂逻辑,复杂逻辑放入方法或计算属性,保持模板简洁。


九、快速上手路线(建议步骤)

  1. 按需学习 Options API 基本用法(data/methods/computed/props)。

  2. v-forv-ifv-model、事件绑定。

  3. 学 Composition API(setuprefreactivecomputedwatchonMounted)。

  4. create-vue 或 Vite 脚手架新建项目,实践组件拆分与复用。(MDN 文档)


十句总结(记心里)

  • Vue = 组件 + 响应式(数据变视图变) + 模板指令。(Vue.js)

  • Vue3 的响应式更强大,用 Proxy 实现(更少坑)。(Vue.js)

  • 小项目用 Options API,复杂逻辑或 TypeScript 推荐 Composition API。(Vue School)

相关推荐
浩男孩3 小时前
🍀终于向常量组件下手了,使用TypeScript 基于 TDesign二次封装常量组件 🚀🚀
前端·vue.js
—Qeyser4 小时前
Flutter bottomNavigationBar 底部导航栏
flutter
ZFJ_张福杰4 小时前
【Flutter】APP的数据安全(基于Flutter 交易所APP的总结)
flutter·web3·区块链·app·交易所
江拥羡橙11 小时前
Vue和React怎么选?全面比对
前端·vue.js·react.js
暮之沧蓝13 小时前
Vue总结
前端·javascript·vue.js
excel13 小时前
深入解析 Vue 3 源码:computed 的底层实现原理
前端·javascript·vue.js
zero13_小葵司14 小时前
在Vue项目中构建后端配置的动态路由及权限控制体系
前端·javascript·vue.js
羊羊小栈16 小时前
基于「YOLO目标检测 + 多模态AI分析」的光伏板缺陷检测分析系统(vue+flask+模型训练+AI算法)
vue.js·人工智能·yolo·目标检测·flask·毕业设计·大作业
光影少年18 小时前
vue生态都有哪些?
前端·javascript·vue.js