零基础也能上手的Vue.js开发入门实战
大家好,我是一个从中文系转行做前端开发的“非科班选手”。当初学编程时,连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.0 和 9.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:运行并测试
保存文件,回到浏览器,你应该能看到一个完整的待办应用!试试添加、勾选、删除任务,一切都会自动更新。
新手常遇到的问题 & 解决方案
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 页面没反应,控制台报错 | 忘记导入 ref 或 computed |
检查 script 顶部是否有 import { ref, computed } from 'vue' |
| 点击按钮没效果 | 事件写错了,比如 @click="addTodo()" 多了括号 |
在模板中调用函数不要加 (),除非要传参 |
| 列表不更新 | 直接修改数组索引(如 arr[0] = 'new') |
用 push、filter 等方法,或用 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 会给你示例,但你要理解每一行的意思,而不是直接复制粘贴。
下一步学什么?我的学习路径建议
- 巩固基础:把本文的 Todo List 扩展功能(比如本地存储、编辑任务)
- 学 Vue Router:实现多页面跳转(比如“全部”、“已完成”标签)
- 学状态管理:了解 Pinia(Vue 官方推荐的状态库)
- 做个小项目:天气查询、记账本、博客系统
- 读源码 & 参与开源:提升工程能力
📌 避坑指南:不要一上来就学 Vuex、TypeScript、Webpack 配置!先用 Vue 做出东西,建立信心最重要。
最后的话
我当初学 Vue 时,最大的障碍不是技术,而是“觉得自己不行”。但只要你愿意动手敲代码,哪怕每天只写 10 行,一个月后回头看,你会惊讶于自己的进步。
Vue 的魅力在于:它让你专注于“做什么”,而不是“怎么做”。你不需要知道浏览器底层怎么渲染,只要告诉它“数据变了,页面要更新”,它就帮你搞定。
现在,关掉这篇文章,打开你的终端,输入 npm create vue@latest —— 你的前端之旅,从这一行命令开始。
加油!未来的你,会感谢今天迈出第一步的自己。

评论 0