Vue.js 教程(建议收藏)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

前言

在现代前端开发领域,Vue.js 作为一款轻量级且灵活的 JavaScript 框架,凭借其简洁的语法和高效的学习曲线,已成为许多开发者构建交互式 Web 应用的首选工具。无论是初学者快速上手,还是中级开发者追求更复杂的项目需求,Vue.js 都能提供强大的支持。本文将以“Vue.js 教程”为核心,从基础概念到实战案例,逐步展开讲解,帮助读者理解其核心原理并掌握开发技能。


一、Vue.js 的核心概念与环境搭建

1.1 什么是 Vue.js?

Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。它以数据驱动为核心,通过声明式语法简化 DOM 操作,并通过组件化设计提升代码复用性。想象一下,Vue.js 就像一个“智能画布”——你只需描述数据状态,框架会自动将这些数据映射到页面上,并在数据变化时实时更新界面,无需手动干预。

1.2 环境搭建与快速入门

要开始使用 Vue.js,开发者只需通过 CDN 引入或 npm 安装即可快速启动项目:

<!-- 通过 CDN 引入 Vue.js -->  
<script src="https://cdn.jsdelivr.net/npm/vue@3.2.47/dist/vue.global.js"></script>  

安装完成后,可以创建一个简单的 Vue 实例:

const app = Vue.createApp({  
  data() {  
    return {  
      message: "Hello Vue.js!"  
    };  
  }  
});  
app.mount("#app");  

配合 HTML 模板:

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

这样,页面上就会显示“Hello Vue.js!”,这就是 Vue.js 的基本运行机制。


二、Vue.js 核心特性详解

2.1 数据驱动与响应式系统

Vue.js 的响应式系统是其核心优势之一。通过 data 中的属性,框架会自动追踪数据变化,并更新视图。例如:

data() {  
  return {  
    count: 0  
  };  
}  

在模板中绑定该数据:

<p>{{ count }}</p>  
<button @click="count++">Increment</button>  

当点击按钮时,count 的值会递增,页面自动刷新显示新值。这一过程无需手动操作 DOM,Vue.js 通过观察者模式实现了数据与视图的同步。

2.2 指令与模板语法

Vue.js 提供了丰富的指令(Directives)来控制模板的行为。最常见的 v-bind(简写为 :)用于绑定属性,v-on(简写为 @)用于监听事件。例如:

<!-- 绑定 class 样式 -->  
<div :class="{ active: isActive }">内容</div>  
data() {  
  return {  
    isActive: true  
  };  
}  

isActive 的值变为 false 时,active 类名会自动移除。

2.3 组件化开发

组件化是 Vue.js 的另一大特点。通过 Vue.component() 可以注册全局组件:

Vue.component("todo-item", {  
  template: `<div>{{ text }}</div>`,  
  props: ["text"]  
});  

在父组件中使用时:

<todo-item text="学习 Vue.js"></todo-item>  

组件化的设计让代码结构清晰,且便于维护和复用。


三、实战案例:构建一个待办事项列表

3.1 需求分析

假设我们要开发一个简单的待办事项应用,包含以下功能:

  1. 添加新任务
  2. 显示任务列表
  3. 标记任务为已完成
  4. 删除任务

3.2 代码实现

3.2.1 创建 Vue 实例

const app = Vue.createApp({  
  data() {  
    return {  
      newTodo: "",  
      todos: [  
        { text: "学习 Vue.js 基础", completed: false },  
        { text: "完成第一个项目", completed: false }  
      ]  
    };  
  },  
  methods: {  
    addTodo() {  
      this.todos.push({ text: this.newTodo, completed: false });  
      this.newTodo = "";  
    },  
    removeTodo(index) {  
      this.todos.splice(index, 1);  
    }  
  }  
});  

3.2.2 模板设计

<div id="app">  
  <input v-model="newTodo" placeholder="添加新任务" />  
  <button @click="addTodo">添加</button>  
  <ul>  
    <li v-for="(todo, index) in todos" :key="index">  
      <input type="checkbox" v-model="todo.completed" />  
      <span :class="{ done: todo.completed }">{{ todo.text }}</span>  
      <button @click="removeTodo(index)">删除</button>  
    </li>  
  </ul>  
</div>  

3.2.3 样式增强

.done {  
  text-decoration: line-through;  
  color: #999;  
}  

通过以上代码,用户可以输入任务、实时添加到列表,并通过复选框或按钮操作任务状态。这一案例直观展示了 Vue.js 数据绑定、指令和组件化的优势。


四、进阶技巧与常见问题

4.1 计算属性与侦听器

计算属性(Computed Properties)用于基于其他数据动态生成值,适合复杂逻辑场景。例如:

computed: {  
  remainingTasks() {  
    return this.todos.filter(todo => !todo.completed).length;  
  }  
}  

模板中直接调用:

<p>剩余任务:{{ remainingTasks }}</p>  

侦听器(Watchers)则用于响应数据变化并执行副作用操作:

watch: {  
  newTodo(newValue) {  
    console.log("输入内容变化:", newValue);  
  }  
}  

4.2 生命周期钩子

Vue.js 的组件生命周期提供了在不同阶段执行代码的机会,例如:

  • created():实例创建后,数据观测完成,但 DOM 尚未挂载
  • mounted():挂载完成后,可操作 DOM
  • beforeUnmount():卸载前清理资源
mounted() {  
  console.log("组件已挂载,可以操作 DOM");  
  this.fetchData(); // 假设调用 API  
}  

4.3 常见问题解答

Q:为什么数据变化后视图没有更新?
A:确保数据是响应式的,例如通过 this.$set() 或数组变异方法(如 push)操作数据。

Q:如何实现组件间的通信?
A:父子组件可通过 props$emit 传递数据,非父子组件可通过事件总线或状态管理库(如 Vuex)实现。


五、结论

Vue.js 通过其简洁的语法、灵活的组件化设计和高效的响应式系统,为开发者提供了构建现代 Web 应用的强大工具。无论是快速搭建原型,还是开发复杂的企业级应用,Vue.js 都能凭借其易学性与扩展性满足需求。本文通过从基础概念到实战案例的讲解,帮助读者逐步掌握 Vue.js 的核心能力。未来,随着 Vue 3 的 Composition API 和 TypeScript 支持的普及,开发者可以进一步探索其在大型项目中的潜力。

通过持续实践与学习,你将能够充分利用 Vue.js 的优势,构建出高效、优雅的前端应用。

最新发布