零基础也能上手的Vue.js开发入门实战

孤独患者
2026-02-08 07:08
阅读 2557

大家好,我是一个从中文系转行做前端开发的“非科班选手”。当初学编程时,连HTML是什么都不知道,光是安装环境就折腾了三天。正因为走过弯路,我才特别想写一篇真正对零基础友好的教程——不讲大道理,只带你动手做点东西出来。今天这篇《零基础也能上手的Vue.js开发入门实战》,就是我用自己踩过的坑换来的经验总结。

如果你从来没碰过代码,别担心!我会用最生活化的语言解释技术概念,每一步都配上可运行的代码,并且手把手教你搭建第一个Vue项目。更重要的是,这篇文章会告诉你:学Vue,你不需要先成为JavaScript专家


为什么选择 Vue?它到底能做什么?

简单说,Vue 是一个用来构建用户界面的 JavaScript 框架。你打开的淘宝、京东、小红书这些网页,里面那些会动的按钮、实时更新的数据、点击切换的内容……很多都是用 Vue 或类似框架做的。

我当初学 Vue 的原因很简单:它上手快、文档友好、社区活跃。不像某些框架一上来就让你配置一堆复杂的东西,Vue 允许你从一行代码开始,逐步深入。

🌟 小知识:Vue 的核心思想是“数据驱动视图”——你改数据,页面自动更新,不用手动操作 DOM(别担心,后面会解释)。


第一步:搭建开发环境(真的只要5分钟)

1. 安装 Node.js

Vue 项目依赖 Node.js 运行。去官网 https://nodejs.org 下载 LTS 版本(长期支持版,更稳定),一路“下一步”安装即可。

安装完成后,打开终端(Windows 用 PowerShell 或 CMD,Mac 用 Terminal),输入:

node -v
npm -v

如果看到版本号(比如 v18.17.09.6.7),说明安装成功!

💡 我当初卡在这里是因为下载了“最新版”而不是“LTS版”,结果和某些工具不兼容。记住:新手选 LTS!

2. 创建你的第一个 Vue 项目

Vue 官方提供了一个叫 Vite 的超快构建工具(比老式的 Vue CLI 更快)。我们用它来初始化项目:

npm create vue@latest my-first-vue-app

执行后,终端会问你几个问题,全部按回车用默认选项就行(或者按下面选择):

  • ✔ Project name: my-first-vue-app(回车)
  • ✔ Add TypeScript? No
  • ✔ Add JSX Support? No
  • ✔ Add Vue Router? No
  • ✔ Add Pinia? No
  • ✔ Add Vitest? No
  • ✔ Add an End-to-End Testing? No
  • ✔ Add ESLint? Yes(推荐开启,帮你检查代码错误)
  • ✔ Add Prettier? Yes(自动格式化代码,省心)

然后进入项目文件夹并启动:

cd my-first-vue-app
npm install
npm run dev

看到终端输出类似这样的信息:

  VITE v4.3.9  ready in 320 ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: use --host to expose

打开浏览器,访问 http://localhost:5173/ —— 恭喜!你已经跑起了第一个 Vue 应用!


核心概念:用生活例子理解 Vue

1. 响应式数据(Reactivity)

想象你在超市购物,手里拿着一张购物清单。当你在清单上划掉“苹果”时,收银员那边的屏幕自动更新总价。这就是“响应式”——数据变了,界面跟着变。

在 Vue 中,你只需要把数据放在 data()ref() 里,它就会自动追踪变化。

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

// 定义一个响应式变量
const count = ref(0)

// 点击按钮时加1
function increment() {
  count.value++
}
</script>

<template>
  <div>
    <p>你点击了 {{ count }} 次</p>
    <button @click="increment">+1</button>
  </div>
</template>

🔍 注意:ref 包裹的值要用 .value 访问(在 script 里),但在模板(template)中直接写 {{ count }} 即可,Vue 会自动解包。

2. 指令(Directives)——给 HTML 加“魔法”

Vue 的指令是以 v- 开头的特殊属性,比如:

  • v-if:条件显示
  • v-for:循环渲染
  • v-model:双向绑定(表单常用)
<template>
  <!-- 如果 showGreeting 为 true,才显示 -->
  <h1 v-if="showGreeting">你好,Vue!</h1>

  <!-- 循环列表 -->
  <ul>
    <li v-for="item in items" :key="item.id">
      {{ item.name }}
    </li>
  </ul>

  <!-- 输入框内容和 message 同步 -->
  <input v-model="message" placeholder="输入点什么..." />
  <p>你输入了:{{ message }}</p>
</template>

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

const showGreeting = ref(true)
const message = ref('')

const items = ref([
  { id: 1, name: '苹果' },
  { id: 2, name: '香蕉' },
  { id: 3, name: '橙子' }
])
</script>

实战项目:做一个“待办事项”(Todo List)

现在,我们把上面的知识串起来,做一个真实的小应用。

项目目标:

  • 能添加新任务
  • 能标记任务完成
  • 能删除任务
  • 显示未完成任务数量

步骤 1:清理默认代码

打开 src/App.vue,替换成以下内容:

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

// 存储所有任务
const todos = ref([
  { id: 1, text: '学习 Vue', completed: false },
  { id: 2, text: '写代码', completed: true }
])

// 新任务输入框的内容
const newTodo = ref('')

// 添加任务
function addTodo() {
  if (newTodo.value.trim() === '') return
  todos.value.push({
    id: Date.now(), // 用时间戳当 ID(简单起见)
    text: newTodo.value,
    completed: false
  })
  newTodo.value = '' // 清空输入框
}

// 删除任务
function removeTodo(id) {
  todos.value = todos.value.filter(todo => todo.id !== id)
}

// 计算未完成任务数
const remainingCount = computed(() => {
  return todos.value.filter(todo => !todo.completed).length
})
</script>

<template>
  <div style="max-width: 600px; margin: 40px auto; padding: 20px;">
    <h1>我的待办清单</h1>
    
    <!-- 添加任务 -->
    <form @submit.prevent="addTodo">
      <input 
        v-model="newTodo" 
        type="text" 
        placeholder="输入新任务..."
        style="padding: 8px; width: 70%;"
      />
      <button type="submit" style="padding: 8px 16px;">添加</button>
    </form>

    <!-- 任务列表 -->
    <ul style="list-style: none; padding: 0; margin-top: 20px;">
      <li 
        v-for="todo in todos" 
        :key="todo.id"
        style="display: flex; align-items: center; padding: 10px; border-bottom: 1px solid #eee;"
      >
        <input 
          type="checkbox" 
          v-model="todo.completed" 
          style="margin-right: 10px;"
        />
        <span :style="{ textDecoration: todo.completed ? 'line-through' : 'none' }">
          {{ todo.text }}
        </span>
        <button 
          @click="removeTodo(todo.id)" 
          style="margin-left: auto; color: red; background: none; border: none; cursor: pointer;"
        >
          删除
        </button>
      </li>
    </ul>

    <!-- 统计 -->
    <p style="margin-top: 20px;">
      还有 <strong>{{ remainingCount }}</strong> 项未完成
    </p>
  </div>
</template>

⚠️ 注意:上面代码中用到了 computed,记得在 script 顶部导入:

import { ref, computed } from 'vue'

步骤 2:运行并测试

保存文件,回到浏览器,你应该能看到一个完整的待办应用!试试添加、勾选、删除任务,一切都会自动更新。


新手常遇到的问题 & 解决方案

问题 原因 解决方法
页面没反应,控制台报错 忘记导入 refcomputed 检查 script 顶部是否有 import { ref, computed } from 'vue'
点击按钮没效果 事件写错了,比如 @click="addTodo()" 多了括号 在模板中调用函数不要加 (),除非要传参
列表不更新 直接修改数组索引(如 arr[0] = 'new' pushfilter 等方法,或用 ref + value
本地跑不起来 端口被占用 关闭其他项目,或改端口:npm run dev -- --port 3000

学习资源推荐(免费+高质量)

作为过来人,我整理了一份零基础友好的资源清单:

类型 名称 说明
官方文档 Vue 官方指南 中文版,从基础到进阶,必看!
视频教程 B站“技术胖”Vue3 教程 通俗易懂,适合边看边敲
交互练习 Vue School 有免费课程,可在线写代码
社区问答 Stack Overflow 遇到 bug 先搜这里
工具扩展 VS Code 插件:Volar 提供语法高亮、智能提示

💡 小技巧:遇到问题先复制错误信息去 Google,90% 的问题都有人解决过。


AI Agent 能帮你什么?

现在有很多 AI 编程助手(比如 GitHub Copilot、通义灵码、CodeWhisperer),它们可以:

  • 自动生成代码片段
  • 解释报错信息
  • 重构代码
  • 生成注释

但请注意:AI 是辅助,不是替代。我建议你先自己写,再用 AI 检查或优化。比如你可以问:

“如何用 Vue3 的 ref 实现一个计数器?”

AI 会给你示例,但你要理解每一行的意思,而不是直接复制粘贴。


下一步学什么?我的学习路径建议

  1. 巩固基础:把本文的 Todo List 扩展功能(比如本地存储、编辑任务)
  2. 学 Vue Router:实现多页面跳转(比如“全部”、“已完成”标签)
  3. 学状态管理:了解 Pinia(Vue 官方推荐的状态库)
  4. 做个小项目:天气查询、记账本、博客系统
  5. 读源码 & 参与开源:提升工程能力

📌 避坑指南:不要一上来就学 Vuex、TypeScript、Webpack 配置!先用 Vue 做出东西,建立信心最重要。


最后的话

我当初学 Vue 时,最大的障碍不是技术,而是“觉得自己不行”。但只要你愿意动手敲代码,哪怕每天只写 10 行,一个月后回头看,你会惊讶于自己的进步。

Vue 的魅力在于:它让你专注于“做什么”,而不是“怎么做”。你不需要知道浏览器底层怎么渲染,只要告诉它“数据变了,页面要更新”,它就帮你搞定。

现在,关掉这篇文章,打开你的终端,输入 npm create vue@latest —— 你的前端之旅,从这一行命令开始。

加油!未来的你,会感谢今天迈出第一步的自己。

评论 0

最热最新
暂无评论
孤独患者Lv.1
0
影响力
0
文章
0
粉丝