CYBERSWAT / 开发部自由练习 · v0.4.1

E01 · 让一条准备任务显示自己的状态

2026-10-26 · 自主学习题面;按步骤保留自己的运行记录。可随时暂停,不限定完成天数。

一场虚构的技术交流活动准备开始,你负责“检查演示材料”。现在先不做网站,只写一个程序:运行后告诉你这项工作完成没有。之后换一个目录,看看仅靠说明还能不能把它运行起来。

你最后会得到什么

summary.ts 显示一项任务。未完成时输出 [ ] 检查演示材料,完成时输出 [x] 检查演示材料。你可以改变标题和状态,解释变化,再把程序和运行说明保存在本地 Git 仓库。

这个程序不接收键盘输入、不保存点击、不连接账号或数据库。标题和状态直接写在文件中。整项实验不需要联网托管仓库、安装第三方程序依赖或使用 AI 服务。

写代码和修改由你本人完成,不使用 AI 生成或补全答案。可以请助手解释一个概念或报错,再亲手验证。手册里的教学例子可以阅读;本题的标题变更、状态切换和最后的变式自己做。

第 0 步:准备工作台

按 手册第 1 单元 对应操作系统的步骤准备编辑器和 Node。Windows 用户也可直接查看启动手册的 Windows 步骤。这里只使用手册已选的 Node 24.x 路线,不要求追逐最新主版本。终端执行 node --version,将实际结果记下。

本题使用手册中的 dev-first-week 练习目录;上一级可以是你自己的任意学习目录。已做过手册首周?先保留原目录和 summary.ts,对照本页目标与预期输出;两份练习分别记录,不自动互认,也不要求覆盖或重做原作品。需要继续本题时另建实验副本,并在下文使用自己的对应路径。尚未开始的人先在有写权限的位置创建目录,用编辑器打开它。

在该目录建立 notes.md,记下系统、Node 版本和本题进度。个人目录只需本地保存,公开反馈时遮去私人部分。按第 1 单元亲手建立并运行 hello.ts,确认修改、保存、再次运行是三个能分清的动作。

成功标志:node hello.ts 显示你刚保存的句子。找不到 node 时检查安装和是否重新打开终端;找不到文件时执行 pwd 和 ls,先确认工作目录。两类错误不要混在一起处理。

暂停点:保留 hello.ts、notes.md。下次打开同一个目录,重跑一句话即可继续。

第 1 步:给准备事项一个名字

阅读 第 2 单元 中工作目录、标题和条件输出的讲解。在自己的练习目录建立 summary.ts。先亲手写一个保存标题并输出它的版本,将题目标题设置为“检查演示材料”。

保存,在包含该文件的终端目录执行:

node summary.ts

预期:只输出 检查演示材料。如果出现 title 五个字母,比较变量名与带引号字符串的区别;如果仍是手册标题,确认修改的是当前运行的文件,并已保存。

自问:程序从哪里读到标题?今天有没有接收用户输入?把答案用自己的话记在 notes.md。

第 2 步:让状态决定输出

继续按第 2 单元学习布尔状态与条件表达式:条件 ? 为真时的值 : 为假时的值。条件为真选择前者,否则选择后者。在自己的文件里增加 done,用它决定标题前显示空框还是勾。先使用不带引号的 false。

按下表逐次操作。每次先写预测,再保存、运行;不要同时改标题和状态。

只做这项变化 应看到的完整一行
标题为“检查演示材料”,状态为 false [ ] 检查演示材料
只将状态改为 true [x] 检查演示材料
保持 true,标题改为“检查备用材料” [x] 检查备用材料
恢复原题标题,状态恢复为 false [ ] 检查演示材料

若每次出现两行,检查输出语句是否放在正确分支;若状态已经变化但标记不变,检查是否只改了显示文字,或把 false 写成了带引号的字符串。不要通过写死整行输出来绕过状态判断。

提示:怎样检查自己确实用到了状态? 只改 `done`,不碰输出语句。如果两种状态能分别得到对应标记,再解释为什么另一分支没有执行。画对一个勾并不能证明条件规则正确。

暂停点:保留原题标题和 done = false,将这一基线记到笔记里。

第 3 步:留下两个可以比较的版本

按 第 3 单元 检查 Git、初始化本地仓库、设置本仓库署名并建立 .gitignore。署名自行选择,未准备公开时不要向外发送任何内容。

先把当前未完成版作为第一次提交。用 git diff --cached 核对实际选择的文件,再提交。然后只把状态改成 true,保存并运行,确认得到 [x] 检查演示材料;用 git diff 看这次改了哪一行,再留下第二次提交。

成功标志:git log --oneline 能找到这两个版本,你能说出各自的区别。提交标识不是固定答案,也不以提交次数评价代码水平。此时 notes.md 尚未提交也可能正常,先读 git status,不为清空提示而删除文件。

暂停点:主程序保留完成状态。以后恢复学习时先运行它,再查看 Git 状态。

第 4 步:遇到错误时有路可查

按 第 4 单元 建立 error-demo,完成三个小实验:类型错误、运行路径错误、括号缺失。每次只制造一个问题;在实验文件中进行,主程序保持可运行。

新建 error-cards.md,每个实验写一张卡:

原本想得到什么:
当前目录与运行命令:
实际错误类别及关键消息:
我先检查了哪里,为什么:
我只改了什么:
重新运行后的实际结果:
还不能解释的地方:

成功标志:三张卡记录的是你实际看到的错误,error-demo/index.js 和 error-demo/syntax-error.js 最终保留修复版,error-demo/data.json 随实验一起保留;在 error-demo 目录分别运行 node index.js 和 node syntax-error.js,得到 你好,同学甲 和 已修复。错误措辞可能随版本变化,核对类别、位置和原因,不要求逐字一致。

最后重跑 node summary.ts,仍应得到 [x] 检查演示材料。删除所有代码导致“不报错”不算修复。

第 5 步:写一份只靠它就能运行的说明

参照 第 6 单元 的结构,新建 README,使用自己的实际版本、题目标题和输出,不直接沿用手册示例中的任务名或版本行。

说明至少回答:这是做什么的,工具实际版本是多少,在哪个目录运行哪条命令,正确输出是什么,如何切换状态,三个错误记录在哪里,哪些功能还没有,AI 实际参与了什么。写明直接运行 TS 不等于做过类型检查,独立类型检查会在下一实验学习。

保存后,把 README、三张排错卡和修复后的实验文件加入提交;先查看暂存差异,再提交。可以另将脱敏后的笔记纳入历史。不要提交私人资料或秘密。

成功标志:说明与当前完成状态一致,所有说明中提到的必要文件均已记录进 Git。

第 6 步:从一个新目录重做

阅读 第 5 单元 关于本地克隆的说明。从 dev-first-week 的上一级目录执行以下步骤;每次只运行一行并确认结果:

git clone --branch main dev-first-week dev-first-week-lab01-check
cd dev-first-week-lab01-check
node summary.ts

若目标目录已经存在,换一个未使用的名字,并相应修改下一行,不覆盖旧练习。已有练习采用不同目录名的人,应替换来源与目标名。

随后只按副本里的 README 运行主程序和两个修复后的排错文件。主程序在副本根目录运行 node summary.ts,预期 [x] 检查演示材料;进入 error-demo 后运行 node index.js 和 node syntax-error.js,预期分别为 你好,同学甲 和 已修复。JSON 文件应与 index.js 同在该目录。

缺文件时回原目录检查是否提交;结果不对时检查版本和 README。修正后提交,再克隆到另一个新目录验证,不手工往检查副本塞文件来掩盖遗漏。将首次失败与修订原因留在记录里。

你可以独立完成这一步,记录为“本人干净目录自检”。如果有人自愿帮你按说明操作,再另记实际结果;无需等待别人才能继续学习。

第 7 步:合上例子,自己改一个要求

在检查副本进行变式,不影响原件:已完成时,任务行后多显示“材料检查完毕”;未完成时,多显示“还需要检查材料”。先写出两种状态各有几行输出,再修改、保存和分别运行。

自检:两种状态都应恰好输出两行;提示语必须与状态一致。把标题换成“检查演示设备”,保留规则,再验证一次。不要只测完成状态。

提示:两个提示语都出现时看哪里? 检查各条输出属于哪个花括号代码块。放在整个条件语句之后的语句,会在两种状态下都执行。先找位置,不用重新生成整个文件。

保留变式副本与实际输出。原目录仍保持一步前的基础版,后续实验从原目录继续;若决定将变式带回原目录,应同步 README、提交并重做干净副本检查。

完成后怎样继续

逐项核对:能改变状态与标题;能解释选择哪个分支;三张错误卡齐全;Git 差异可解释;README 与实际相符;新目录能运行;独立变式两种状态都验证;AI 参与如实记录。

未完成的项回到对应步骤补做。全部完成可记录“E01 本人自检完成”,下一步学习 第 8 单元,继续完成手册 08–14,再进入训练营 U01/U02/U03。不用等组织者批准;自检不代表已经由他人正式认定 G0。

留一份短记录:实验版本、实际日期、工具版本、原件与副本位置、提交标识、验证结果、卡点和下一步。当前程序运行完即退出,没有需要常驻的服务;下次打开目录后重跑即可。

做完之后往哪里走

  1. 保存并自检。 保留代码、运行结果、Git改动和运行说明,按本页要求复查;完成本地作品还没有提交到站群任务。
  2. 有卡点就求助。 学习问题求助使用站群账号,游客账号也可提交,无需先报名。提交后回反馈页查看回复。
  3. 要交正式作业。 已报名并领取任务的同学,到全队共享学员中心的对应任务提交证据,再回任务查看验收意见。还未报名可先去本届报名页;填写作品模板不会自动提交。