跳至内容

第四部分 · 变成前端应用

上一部分你有了一个好看的静态页面,但它是个「样板间」——按钮点了没反应,任务是写死的假数据。这一部分我们请出 Vue,把这个页面变活:能真正添加任务、删除任务、标记完成。全程还是纯前端,数据先只存在浏览器里。至于「刷新一下数据就没了」这个坑——我们留到最后一章点破,它正是下一部分的引子。

16. Vue 是什么

这一章要解决什么问题

在动手之前,先花几分钟弄明白:我们为什么要换个方式做页面?Vue 到底帮我们解决了什么?搞懂这一层,后面几章你就知道自己在做什么,而不是照着敲。

这是什么

Vue(读作 /vju:/,就是英文单词 view 的发音)是一个前端框架。你可以把它理解成:一套让「页面」和「数据」自动挂钩的机制。

打个比方。静态页面像一张打印出来的纸——上面写着「买菜、写周报」,你想改,得重新排版、重新打印一张。而 Vue 页面像一块电子屏:屏幕连着一份数据清单,你往清单里加一条,屏幕上自动就多一行;你划掉清单里的一条,屏幕上自动就少一行。

你只管改数据,画面自己跟着变。这就是 Vue 最核心、也几乎是你现在唯一需要记住的能力。

为什么现在需要它

回想上一部分的痛点:任务是写死在页面里的。如果不用 Vue,你想「添加一条任务」,就得手动写代码去操作页面结构、往列表里塞一个新格子——又碎又容易出错。

有了 Vue,这件事变成:往数据清单里加一条,页面自己更新。 你的注意力从「怎么操作页面」变成「数据应该长什么样」,这正是初学者更容易想清楚的层面。

💡 你不需要懂 Vue 内部怎么实现这套「自动更新」的魔法,就像你不需要懂电子屏的电路。你只需要记住结论:改数据,画面自动变。 剩下的实现细节,交给 AI。

在 AI Todo 项目里怎么用

我们的 Todo 天生就是「一份任务清单 + 一个显示它的页面」,简直是为 Vue 量身定做的:

  • 一份数据:所有任务组成的列表。
  • 一个页面:把这份列表显示出来,并提供输入框、按钮去改它。

接下来几章,添加、删除、完成,本质上都是同一件事——改那份数据清单,然后看页面有没有跟着正确地变。

本章小结

Vue 就是让「数据」和「页面」自动挂钩的机制:你改数据,页面自动变。对我们的 Todo 来说,任务列表是数据,页面负责显示它。记住这一条,就能往下走了。


17. 让 AI 把页面改成 Vue 应用

这一章要解决什么问题

道理懂了,该动手了。这一章我们让 AI 把上一部分那个单个 HTML 文件,改造成一个正经的 Vue 项目。注意:这一步我们只搬家,不装修——页面看起来要和之前几乎一样,但底子已经换成 Vue 驱动了。

这是什么

「Vue 项目」和之前的「单个 HTML 文件」不太一样。它需要一个小工具来创建和运行,这个工具叫 Vite(读作 /vi:t/,法语「快」的意思)。你不用理解它,只要知道两件事:

  • 用 Vite 创建一个 Vue 项目(AI 会帮你敲命令)。
  • 之后用 npm run dev 启动它,然后在浏览器访问一个 http://localhost:xxxx 的地址看结果。

💡 别被「项目」「命令」这些词吓到。你在第二部分已经跑通过「AI 建项目 → 命令启动 → 浏览器看结果」这个循环了。这一章只是同一个循环,换了个更专业的壳。

让 Claude Code / Codex 执行的小任务

在你的 ai-todo 项目里启动 AI,把下面这段任务提示词发给它:

任务目标:
把我现在这个单个 HTML 文件的 Todo 页面,改造成一个用 Vue 3 的前端项目。

当前状态:
我现在只有一个静态 HTML 页面,有标题、输入框、添加按钮和几条写死的示例任务,
点按钮没有任何功能。我完全没有代码基础。

限制条件:
这次只做「搬家」:用 Vite 创建一个 Vue 3 项目,把现在页面的外观原样搬过去。
先不要新增任何功能(添加、删除、完成都下一步再做),不要接后端,不要加数据库。

期望结果:
1. 你告诉我用什么命令启动这个项目(我预期是 npm run dev 之类)。
2. 启动后,我在浏览器打开你给我的 localhost 地址,
   看到的页面和之前那个静态页面外观基本一致。

验收标准:
1. 项目能用一条命令启动,你要明确告诉我这条命令。
2. 浏览器打开后,标题、输入框、添加按钮、示例任务列表都还在,长得和之前差不多。
3. 启动和打开过程中没有报错。

运行后应该看到什么结果

  • AI 会敲一串命令,帮你把项目创建好、把依赖装好。
  • 它会告诉你运行 npm run dev(或类似命令)来启动。
  • 你启动后,终端里会打印出一个地址,通常是 http://localhost:5173
  • 在浏览器打开这个地址,你看到的页面和上一部分几乎一模一样

如何验收结果是否正确

这一章的验收有个特别之处:「看起来没变化」恰恰是对的。

  • AI 给了我一条明确的启动命令了吗?
  • 运行后终端给出了一个 localhost 地址吗?
  • 浏览器打开后,标题、输入框、按钮、示例任务都还在、布局没乱吗?
  • 启动过程没有红色报错吗?

四条都打勾,说明「搬家」成功——底层已经是 Vue 了,只是你还没让它露一手。

如果结果不对,怎么反馈给 AI

如果启动报错,把终端里那段红色文字原样复制给 AI:

我运行了你给我的启动命令,但终端报了下面这段错误(原文粘贴):
<把报错粘在这里>
请告诉我原因,并给我可以直接复制执行的解决命令。

如果页面能打开但样子乱了,就说:「页面能打开,但和之前的静态页面长得不一样了,示例任务没显示。请把外观改回和原来一致。」

本章小结

这一章只做一件事:把静态页面搬进 Vue 项目,用 npm run dev 启动,在浏览器看到「和以前一样」的页面。看起来没变,其实脱胎换骨——下面就让它活起来。


18. 添加任务

这一章要解决什么问题

这是整个部分的第一个真功能:在输入框里打字,点「添加」,任务真的出现在列表里。上一部分点了没反应的按钮,这一章让它动起来。

这是什么

还记得第 16 章的比喻吗?页面连着一份数据清单,改清单,页面自动变。「添加任务」就是:把输入框里的文字,作为一条新任务,塞进那份清单里。剩下的显示,Vue 自动搞定。

为什么现在做它,而且只做它

💡 这是一道关于「节奏」的选择题:我们本可以一口气让 AI 把添加、删除、完成全做了。但我们选择一次只做一个功能。为什么?因为一次只做一件事,验收最简单——出问题也一眼能定位是哪一步坏了。贪多,是初学者最容易翻车的地方。

让 Claude Code / Codex 执行的小任务

任务目标:
给 Todo 页面加上「添加任务」功能。

当前状态:
页面已经是 Vue 3 项目,有输入框和「添加」按钮,但点按钮还没有任何反应,
任务列表现在是写死的示例数据。

限制条件:
这次只做前端本地添加,不接后端、不加数据库。
只做「添加」这一个功能,先不要做删除和完成。

期望结果:
1. 我在输入框里输入一段文字,点「添加」按钮,这段文字作为一条新任务出现在列表里。
2. 添加成功后,输入框自动清空,方便我接着输入下一条。
3. 如果输入框是空的(或只有空格),点「添加」不添加任何东西。

验收标准:
1. 正常输入内容并点添加,列表里正确多出这一条。
2. 添加后输入框被清空。
3. 空内容点添加,列表没有多出空白任务。
4. 整个过程页面不报错。

运行后应该看到什么结果

刷新页面,在输入框里敲「健身 30 分钟」,点「添加」——列表底部多出「健身 30 分钟」,同时输入框变空。再敲一条、再点,又多一条。试着不输入直接点「添加」,列表不会多出一条空白。

如何验收结果是否正确

这四条验收标准,请你亲手一条条试,这就是判断题:

  • 输入「买菜」点添加 → 列表里出现「买菜」了吗?
  • 添加完,输入框清空了吗?
  • 什么都不输入直接点添加 → 有没有冒出一条空任务?(应该没有)
  • 全程按 F12 看控制台,有没有红色报错?

💡 注意第 3 条「空输入不添加」。这叫边界情况——正常人不会故意加个空任务,但真实产品必须扛得住「有人乱来」。能主动想到并验收边界情况,你就比很多人更像一个产品负责人了。

如果结果不对,怎么反馈给 AI

比如添加后输入框没清空,就照实说:

添加功能能用,任务能正确加到列表里。但有两个小问题:
1. 添加后输入框里的文字没有清空。
2. 我不输入任何内容直接点添加,列表里会多出一条空白任务。
请修复这两点,其他保持不变。

本章小结

你实现了第一个真功能:能添加任务。更重要的是,你学会了给一个功能列验收清单,尤其是「空输入不添加」这种边界情况——这才是验收的精髓。


19. 删除任务

这一章要解决什么问题

有加就得有减。这一章给每条任务旁边配一个删除按钮,点一下,这一条消失,别的不受影响。

这是什么

同样回到那份数据清单:删除任务,就是把某一条从清单里拿掉,页面自动少一行。关键难点不在「删」,而在删得准——点哪条删哪条,绝不能误伤旁边的。

为什么这件事要单独验收

💡 删除是最容易「删错」的操作,也是初学者最该盯紧的判断题。你要验收的不只是「那一条没了」,还有「其他条一根汗毛都没动」。做产品养成这个意识:一个操作,既要看它做到了该做的,也要看它没碰不该碰的。

让 Claude Code / Codex 执行的小任务

任务目标:
给 Todo 列表的每一条任务加上「删除」功能。

当前状态:
页面是 Vue 3 项目,已经能添加任务了。任务以列表形式显示。

限制条件:
这次只做删除功能,仍然是前端本地操作,不接后端、不加数据库。
不要改动已有的添加功能。

期望结果:
1. 每一条任务的旁边,有一个「删除」按钮(或一个小垃圾桶图标)。
2. 点某一条的删除按钮,只有这一条从列表里消失,其他任务原样保留。
3. 当所有任务都被删光时,列表区域显示一句友好的提示,
   比如「还没有任务,先添加一个吧」,而不是一片空白。

验收标准:
1. 点第二条的删除按钮,消失的正好是第二条,第一条和第三条不受影响。
2. 把任务全部删完后,页面显示「暂无任务」之类的友好提示。
3. 添加功能依然正常。
4. 页面不报错。

运行后应该看到什么结果

每条任务右边多了个删除按钮。你先加三条「买菜、写周报、健身」,点中间「写周报」的删除按钮——只有「写周报」消失,「买菜」和「健身」还在原位。把三条全删掉后,列表区域出现一句「还没有任务,先添加一个吧」。

如何验收结果是否正确

  • 删得准:点第 2 条,消失的确实是第 2 条?
  • 不误伤:删完之后,剩下的任务对不对、顺序乱没乱?
  • 空列表的样子:全删光时,是友好提示,还是尴尬的空白?
  • 添加功能有没有被顺手改坏?
  • 有没有红色报错?

💡 第 3 条「空列表长什么样」很容易被忽略。空的时候页面别开天窗,给用户一句人话,这是产品是否用心的一个小细节。你现在就能想到并验收它,很棒。

如果结果不对,怎么反馈给 AI

假如删除误伤了别的任务:

删除按钮有问题:我点第二条的删除,结果消失的是第一条,删错了。
请修复,保证点哪一条就只删哪一条,其他任务不受影响。

本章小结

你实现了删除,并且守住了删除的两条铁律:删得准、不误伤。你还顺手照顾了「空列表」这个容易被忽略的细节。验收一个操作,永远要问「有没有碰到不该碰的」。


20. 完成任务

这一章要解决什么问题

一个 Todo,光能加能删还不够——你得能勾掉已经做完的事。这一章让每条任务可以在「未完成」和「已完成」之间切换,并且一眼就能看出区别。

这是什么

「完成」不是把任务删掉,而是给它换个状态:从「待办」变成「已完成」。视觉上通常用打勾加删除线来表示。而且这个状态要能来回切——万一你点错了,或者一件事又需要重做,再点一下就能变回未完成。

为什么强调「能切回来」

💡 这是一道体贴用户的选择题:完成后能不能反悔?我们选择让它可以来回切换。因为人会手滑、会改主意,一个不能撤销的操作会让人用得提心吊胆。好产品,允许用户犯错并轻松纠正。 这个小小的「可逆」设计,体现的是产品思维。

让 Claude Code / Codex 执行的小任务

任务目标:
给每条任务加上「标记完成 / 取消完成」的功能。

当前状态:
页面是 Vue 3 项目,已经能添加和删除任务。

限制条件:
这次只做「完成状态」的切换,仍是前端本地操作,不接后端、不加数据库。
不要破坏已有的添加和删除功能。

期望结果:
1. 每条任务前面有一个可以点的勾选框(或点击任务本身即可)。
2. 点一下,把这条标记为「已完成」:给它加上删除线,颜色变淡,
   让它明显区别于未完成的任务。
3. 对已完成的任务再点一下,能取消完成,恢复成未完成的样子。

验收标准:
1. 点一条未完成任务,它变成「已完成」的样子(有删除线、颜色变淡)。
2. 对已完成任务再点一下,恢复成未完成的样子。
3. 完成和未完成的任务,视觉上一眼能区分。
4. 添加、删除功能依然正常,页面不报错。

运行后应该看到什么结果

每条任务前多了个可点的勾选框。你点「买菜」——它立刻加上删除线、颜色变灰,一看就是「做完了」。再点它一下,删除线消失、颜色恢复,又变回「待办」。完成的和没完成的混在列表里,你一眼就能分清。

如何验收结果是否正确

  • 能标记完成:点一下,变成完成的样子?
  • 能取消完成:再点一下,变回未完成?
  • 区分明显:完成 vs 未完成,扫一眼就能分辨?
  • 加、删功能没被弄坏?
  • 没有红色报错?

如果结果不对,怎么反馈给 AI

比如能标记完成但没法取消:

完成功能大体能用,但有个问题:任务标记为完成后,再点一下没法取消,
一直是完成状态。请让它可以来回切换:已完成的再点一次能恢复成未完成。

本章小结

你的 Todo 现在能加、能删、能勾完成了,而且完成状态可以来回切换。「可逆」这个小设计背后,是「允许用户犯错」的产品思维。到这里,一个真正能用的待办清单,功能上已经齐了。


21. Tailwind CSS 是什么

这一章要解决什么问题

功能齐了,但你可能发现:加了这么多按钮、勾选框之后,页面样式有点乱、有点杂。这一章介绍 Tailwind CSS,让 AI 用它来把整个界面快速拼得统一又好看

这是什么

Tailwind CSS 是一套样式积木

打个比方:普通写样式,像每次都要自己调颜料——想要一点间距、一个圆角、一个阴影,都得从头描述。而 Tailwind 给了你一大盒乐高积木间距-大圆角-中阴影-淡文字-灰……每一块都是现成的、标准尺寸的小样式。你要装修页面,不用调颜料,直接拼积木

因为大家用的是同一盒标准积木,拼出来的东西风格自然就统一——间距是一套标准间距,圆角是一套标准圆角,不会这里 7 像素那里 13 像素地各行其是。

为什么现在需要它

我们的页面元素越来越多,最怕的就是东一块西一块、风格打架。Tailwind 用「统一的积木」从根上避免了这个问题。而且它特别适合和 AI 搭配:你只要让 AI「用 Tailwind 统一美化」,它就能用这套标准积木把风格拉齐,你验收起来也省心。

💡 你完全不需要去背这些积木叫什么名字(那是 AI 的活)。你只需要记住一句话:让 AI 用 Tailwind 来做样式,页面风格会更统一、更好看、更好维护。 这就是你现在需要知道的全部。

在 AI Todo 项目里怎么用

我们不新增功能,只让 AI 用 Tailwind 把现有界面整体梳理一遍:让间距、圆角、颜色、按钮风格统一起来,让完成/未完成的对比更清晰。

任务目标:
用 Tailwind CSS 统一美化整个 Todo 页面的样式。

当前状态:
页面是 Vue 3 项目,已经能添加、删除、标记完成,但加了这些元素后样式有点杂乱。

限制条件:
只调整样式,不要改动任何功能(添加、删除、完成都要照常能用)。
风格要简单清晰、干净现代,不要花哨。请用 Tailwind CSS 来实现。

期望结果:
1. 整个页面用 Tailwind 统一风格:间距、圆角、颜色协调一致。
2. 输入框和「添加」按钮好看、协调。
3. 任务列表每一条清爽、有合适的分隔,删除按钮位置合理。
4. 已完成和未完成的任务,视觉对比清晰。

验收标准:
1. 页面明显比之前整齐、好看,风格统一。
2. 在手机窄屏和电脑宽屏下都不错乱。
3. 添加、删除、完成三个功能全部照常可用,页面不报错。

如何验收结果是否正确

  • 整体比之前顺眼、统一了吗?
  • 拉窄浏览器窗口试试(第三部分学过的手机效果检查),会不会挤成一团?
  • 三个功能——加、删、完成——是不是都还好用?(改样式最怕顺手改坏功能,一定逐个试)
  • 有没有红色报错?

如果结果不对,怎么反馈给 AI

样式统一多了,好看了不少。但发现一个问题:美化之后,删除按钮点不动了,
点了没反应。请检查是不是样式覆盖影响了删除功能,修好它,样式保持现在这样。

本章小结

Tailwind 是一盒「标准样式积木」,让 AI 拼出来的界面风格统一、好维护。你不用背积木名字,只要记得「让 AI 用 Tailwind 美化」,并在验收时顺带确认功能没被改坏


22. 页面结果验收

这一章要解决什么问题

前面几章我们一个功能一个功能地做、一个功能一个功能地验。这一章把这一整个「前端应用」当成一个整体,从头到尾完整验收一遍,给你一份可以随身带走的清单。也正是在这次完整验收里,我们会撞见一个「说好的坑」。

「前端应用」完整验收清单

打开你的页面,跟着这份清单,一条条亲手试过去:

基本外观

  • 页面能正常打开,不空白、不报错(F12 看控制台没红字)?
  • 标题、输入框、添加按钮、任务列表都在,布局整齐、风格统一?

添加

  • 输入内容、点添加,任务正确出现在列表里?
  • 添加后输入框自动清空?
  • 空输入点添加,不会冒出空白任务?

删除

  • 点某条的删除,消失的正是那一条,其他不受影响?
  • 全部删光时,显示友好提示而不是一片空白?

完成

  • 点一下能标记完成(删除线 / 变淡)?
  • 再点一下能取消完成?
  • 完成与未完成,一眼能区分?

扛得住吗

  • 窄窗口 / 手机尺寸下,布局不乱、不溢出?
  • 输入超长文字、连续快速点按钮,页面不崩?

最后,也是最关键的一条——

  • 添加几条任务后,刷新一下浏览器(按 F5),你的任务……还在吗?

撞见那个「说好的坑」

你会发现:刷新之后,你辛辛苦苦加的任务,全没了,页面又回到了最初的样子。

这不是 bug,别去找 AI 修——这是我们这一整部分的技术选择必然带来的结果

💡 还记得开头说的吗?我们这一部分的数据「只存在浏览器内存里」。内存就像人的短期记忆:页面一刷新,内存清空,它就全忘了。 想让任务记住、存下来、下次打开还在,光靠前端不够——我们需要给它配一个后端和一个数据库,一个专门负责「长期记住数据」的地方。

这,就是下一部分要解决的问题。你现在能亲手复现并理解这个「刷新即失忆」的痛点,说明你已经完全看懂了「纯前端」的边界在哪——这份理解,比任何代码都值钱。

本章小结

用这份完整清单,你能独立验收一个前端应用:能加、能删、能完成、空输入被拦、窄屏不乱。你也亲手撞见并读懂了那个致命痛点——刷新一下,数据全没。带着这个痛点,我们进入下一部分。


这一部分的收尾

回头看看你这一部分收获了什么。你的 AI Todo 从一个「样板间」变成了一个真正能用的前端应用

  • ✅ 用 Vue 让页面随数据自动变化(改数据,画面就变);
  • ✅ 能添加任务(还挡住了空输入这种边界情况);
  • ✅ 能删除任务(删得准、不误伤、空列表有友好提示);
  • ✅ 能标记完成 / 取消完成(可逆,允许用户反悔);
  • ✅ 用 Tailwind 把界面拼得统一又好看;
  • ✅ 学会了把一整个应用当成整体来验收

更重要的是,你一次只做一个小功能、每个功能都列清单验收的工作节奏,已经越来越熟练了。

但你也亲手摸到了一堵墙:刷新一下,数据就全没了。 因为这些任务只活在浏览器的「短期记忆」里,没有一个地方帮它们长期保存

要让任务真正「记得住」,我们需要给应用配上后端和数据库。带着这个再明确不过的目标,我们进入 第五部分:加入后端,让你的 Todo 拥有一个「不会失忆」的大脑。

最后更新于