零基础也能学会的Vue.js入门实战指南
大家好!我是一个从中文系转行做前端开发的“文科生程序员”。三年前,我对代码一窍不通,连HTML是什么都不知道。如今,我已经在一家互联网公司担任前端工程师,还经常帮运营同事写小工具提升效率。今天写这篇教程,就是想告诉所有零基础的朋友:你也可以做到!
当初我学前端时,最头疼的就是技术选型——React、Vue、Angular到底选哪个?后来发现,对新手来说,Vue.js 是最友好的选择。它语法简洁、文档清晰、上手快,特别适合想快速做出东西、验证想法的人——比如运营同学想做个活动页面,或者求职者想快速做出作品集。
这篇文章,我会手把手带你从零开始搭建 Vue 项目,用最通俗的语言讲清楚核心概念,并最终完成一个“待办事项”小应用。全程无需任何前置知识!
为什么选 Vue?前端三大框架对比
在动手之前,先搞清楚 Vue 到底是什么,以及它和其他主流前端框架有什么区别。
| 框架 | 学习曲线 | 文档友好度 | 适合人群 | 社区活跃度 |
|---|---|---|---|---|
| Vue.js | ⭐⭐(平缓) | ⭐⭐⭐⭐⭐(中文文档极佳) | 新手、全栈、运营转开发 | 高(国内尤甚) |
| React | ⭐⭐⭐⭐(陡峭) | ⭐⭐⭐⭐(英文为主) | 有 JS 基础者、大厂偏好 | 极高 |
| Angular | ⭐⭐⭐⭐⭐(非常陡) | ⭐⭐⭐(复杂) | 企业级项目、TypeScript 爱好者 | 中等 |
💡 我当初学的时候:花了两周看 React 教程,还是云里雾里;换成 Vue,三天就做出了第一个可交互页面!
Vue 的优势:
- 模板语法像 HTML:
<div>{{ message }}</div>这种写法,一眼就能看懂。 - 响应式数据:数据变了,页面自动更新,不用手动操作 DOM。
- 单文件组件(.vue):把 HTML、CSS、JS 写在一个文件里,结构清晰。
- 国内生态好:Element Plus、Ant Design Vue 等 UI 库丰富,GitHub 上中文项目多。
如果你目标是:
- 快速做出一个能用的网页
- 给简历加个“会前端”的亮点
- 帮运营团队自动化一些重复工作
那 Vue 就是你最好的起点!
第一步:搭建开发环境(5分钟搞定)
别被“环境搭建”吓到!现在工具很智能,照着做就行。
1. 安装 Node.js
Vue 需要 Node.js 来运行开发服务器和打包工具。
- 访问 https://nodejs.org
- 下载 LTS 版本(长期支持版,更稳定)
- 安装时一路“下一步”即可
安装完成后,打开终端(Windows 用 PowerShell 或 CMD,Mac 用 Terminal),输入:
node -v
npm -v
如果显示版本号(如 v18.17.0),说明安装成功!
2. 创建 Vue 项目
我们用官方脚手架 Vite(比老工具 Vue CLI 更快):
npm create vue@latest my-vue-app
按提示操作:
- 项目名:直接回车用默认
my-vue-app - 是否添加 TypeScript?→ No
- 是否添加 JSX 支持?→ No
- 是否添加 Vue Router?→ No(后面再学)
- 是否添加 Pinia?→ No
- 是否添加 Vitest?→ No
- 是否添加 Cypress?→ No
- 是否添加 ESLint?→ Yes(代码规范)
- 是否添加 Prettier?→ Yes(自动格式化)
然后进入项目并启动:
cd my-vue-app
npm install
npm run dev
看到终端输出类似:
Local: http://localhost:5173/
打开浏览器访问这个地址,就能看到 Vue 的欢迎页面了!🎉
✅ 避坑指南:如果卡在
npm install,可能是网络问题。可以尝试换源:npm config set registry https://registry.npmmirror.com
第二步:理解 Vue 的三个核心概念
别急着写代码!先搞懂这三个词,你就入门了:
1. 响应式数据(Reactivity)
在 Vue 中,你定义的数据会“自动追踪变化”。比如:
<script setup>
let count = $ref(0) // Vue 3.4+ 的新语法,超简单!
</script>
<template>
<div>你点了 {{ count }} 次</div>
<button @click="count++">点我</button>
</template>
$ref()声明一个响应式变量{{ count }}在模板中显示数据@click是事件绑定,点击时count自增
💡 关键点:你不用手动写
document.getElementById().innerHTML = ...这种繁琐代码!
2. 模板语法(Template Syntax)
Vue 的模板就是增强版 HTML:
<template>
<!-- 条件渲染 -->
<div v-if="isVisible">我现在可见</div>
<!-- 循环渲染 -->
<ul>
<li v-for="item in list" :key="item.id">
{{ item.name }}
</li>
</ul>
<!-- 双向绑定(表单神器) -->
<input v-model="message" />
<p>你输入了:{{ message }}</p>
</template>
v-if:条件判断v-for:循环列表v-model:表单双向绑定(输入框内容 ↔ 数据自动同步)
3. 组件化(Components)
把页面拆成小积木,比如 <Header />、<TodoList />。
新建 src/components/TodoItem.vue:
<template>
<li>{{ task }}</li>
</template>
<script setup>
defineProps(['task'])
</script>
在 App.vue 中使用:
<template>
<TodoItem v-for="t in tasks" :key="t" :task="t" />
</template>
<script setup>
import TodoItem from './components/TodoItem.vue'
const tasks = ['买牛奶', '写代码', '学 Vue']
</script>
✅ 新手提示:
.vue文件包含三部分:
<template>:HTML 结构<script setup>:JavaScript 逻辑<style>:CSS 样式(可选)
第三步:实战!做一个待办事项(Todo List)
现在,我们把这些知识串起来,做一个实用小工具。
步骤 1:清理 App.vue
删除默认内容,只保留:
<template>
<div class="container">
<h1>我的待办清单</h1>
<!-- 待办输入框 -->
<!-- 待办列表 -->
</div>
</template>
<script setup>
// 所有逻辑写在这里
</script>
<style>
.container {
max-width: 600px;
margin: 50px auto;
padding: 20px;
}
</style>
步骤 2:添加输入框和列表
<template>
<div class="container">
<h1>我的待办清单</h1>
<!-- 输入新任务 -->
<input
v-model="newTask"
@keyup.enter="addTask"
placeholder="输入任务后按回车"
class="input"
/>
<!-- 任务列表 -->
<ul class="task-list">
<li
v-for="(task, index) in tasks"
:key="index"
class="task-item"
>
{{ task }}
<button @click="removeTask(index)">×</button>
</li>
</ul>
</div>
</template>
<script setup>
import { ref } from 'vue'
// 响应式数据
const newTask = ref('')
const tasks = ref([])
// 添加任务
function addTask() {
if (newTask.value.trim()) {
tasks.value.push(newTask.value)
newTask.value = '' // 清空输入框
}
}
// 删除任务
function removeTask(index) {
tasks.value.splice(index, 1)
}
</script>
<style scoped>
/* 省略具体样式,重点在逻辑 */
.input {
width: 100%;
padding: 10px;
font-size: 16px;
margin-bottom: 20px;
}
.task-item {
display: flex;
justify-content: space-between;
padding: 10px;
border-bottom: 1px solid #eee;
}
</style>
步骤 3:测试功能
- 在输入框输入文字,按回车 → 任务添加到列表
- 点击 × 按钮 → 对应任务删除
💡 我当初学的时候:第一次看到自己写的代码能实时响应,激动得差点跳起来!
新手常见问题解答
Q1:ref 和 $ref 有什么区别?
- Vue 3.4+ 推出了 Reactivity Transform(响应式语法糖),用
$ref()更简洁。 - 如果你用的是旧版 Vue(或公司项目未升级),请用
const count = ref(0),并在模板中用.value访问(但在模板中不用写.value)。
Q2:为什么删任务要用 splice 而不是 delete?
因为 Vue 的响应式系统需要“感知”数组变化。splice 是 Vue 能检测到的数组方法,而直接 delete tasks[index] 不会触发更新。
Q3:如何把项目放到 GitHub?
- 在 GitHub 新建仓库(如
my-vue-todo) - 本地执行:
git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/你的用户名/my-vue-todo.git
git push -u origin main
✅ 求职加分项:把作品放到 GitHub,面试时直接展示!
Q4:学完这个能找工作吗?
单靠一个 Todo List 当然不够,但这是重要的第一步!你可以:
- 在此基础上增加“标记完成”、“本地存储”功能
- 用 GitHub Pages 免费部署(
npm run build后上传dist文件夹) - 写进简历:“独立开发 Vue 待办应用,实现增删改查与持久化”
下一步学习建议
恭喜你完成了第一个 Vue 应用!接下来该往哪走?
短期目标(1-2周)
- 学习 Vue Router:实现多页面跳转(比如“全部任务”、“已完成”)
- 学习 Pinia:状态管理(多个组件共享数据)
- 接入 真实 API:用
fetch获取远程数据
中期目标(1个月)
- 用 Element Plus 或 Naive UI 快速搭建后台管理系统
- 学习 组件通信(props / emit / provide/inject)
- 尝试 TypeScript + Vue(大厂越来越看重)
长期建议
- 不要只学 Vue:HTML/CSS/JavaScript 基础必须扎实
- 多造轮子:模仿微信聊天界面、电商商品列表等
- 参与开源:在 GitHub 上找 Vue 项目提 PR(哪怕只是改错别字!)
🌟 最后鼓励:我当初投简历时,作品集里就有一个 Vue 做的“运营活动配置工具”,虽然简单,但让面试官眼前一亮——因为它解决了实际问题!技术的价值,在于创造。
结语:你的前端之旅,从此刻开始
Vue.js 不是魔法,它只是一个工具。真正厉害的,是那个愿意从零开始、亲手敲下第一行代码的你。
无论你是想转行求职,还是帮运营团队提效,或是纯粹好奇技术世界——今天你写的这个待办应用,就是改变的起点。
记住:每个大神,都曾是个连 console.log 都打错的新手。你,也可以。
快去打开你的编辑器,写下 npm create vue@latest 吧!我在前端的世界等你 👋

评论 0