最近在调试 SnowAdmin 的验证码组件时,突然意识到一个很有意思的现象:这段生成随机验证码的代码,完美诠释了当代程序员的真实工作状态。
arduino
// 生成随机数
const randomNum = (min: any, max: any) => {
return Math.floor(Math.random() * (max - min) + min);
};
这几行代码简单直接 ------ 不需要先精通概率统计,不需要理解随机数生成算法的底层原理,甚至不需要记住Math.floor和Math.random的所有参数细节。你只需要知道 "我需要一个范围内的随机整数",然后就能写出或让 AI 生成这段代码。
1、验证码背后的「用中学」哲学
SnowAdmin 的验证码组件实现逻辑其实很朴素
1.用randomNum生成随机数字和颜色
2.通过 Canvas 绘制干扰线和噪点
3.将生成的验证码字符串存储起来
4.登录时比对用户输入与存储值
整个过程中,开发者可能并不完全掌握 Canvas 的所有 API,也不需要知道色彩理论,但这丝毫不影响完成功能。遇到 "如何让文字旋转" 的问题时,才去查rotate方法的使用;需要调整干扰线密度时,才去优化循环次数。这种 "遇到问题→解决问题→掌握知识" 的模式,正是「用中学」的精髓。
2、AI 时代,提前学习为何越来越不划算?
在 AI 成为全能助手的今天,"提前储备知识" 的性价比正在急剧下降:
1.知识半衰期缩短:去年还在用的框架 API,今年可能就被废弃。SnowAdmin 里用的 Vue3+TypeScript 组合,几年前还是前沿技术,现在已成为标配
2.AI 的即时性碾压记忆 :忘记NProgress的配置参数?问问 AI 就有答案;不知道如何实现表单验证?AI 能直接生成类似verify-tools.ts里的正则表达式
3.问题复杂度飙升:现代项目需要整合的技术栈越来越多,从验证码组件到权限管理,从国际化到性能优化,没人能提前学完所有知识
就像 SnowAdmin 集成的 NProgress 配置:
php
import NProgress from "nprogress";
NProgress.configure({
easing: "ease",
speed: 500,
showSpinner: false
});
大多数开发者不会提前背诵这些配置项,而是在需要自定义进度条时,才去查阅文档或让 AI 生成示例。
3、程序员的核心竞争力迁移
1.需求拆解能力能把 "做一个验证码" 拆解成 "生成随机字符→绘制图像→存储与验证" 这些步骤,比记住 Canvas API 更重要
2.调试与优化意识SnowAdmin 的验证码组件通过添加干扰线、随机旋转文字来提高安全性,这种基于场景的优化思考,是 AI 难以替代的
3.跨角色沟通能力和产品经理确认 "验证码错误是否需要提示具体原因",与测试工程师讨论 "暴力破解防护策略",这些沟通决定了功能的最终形态
4.技术选型判断力为什么 SnowAdmin 选择自己实现验证码而不是用第三方库?这种权衡背后的考量,需要对项目规模、安全性要求、维护成本有深刻理解
4、「用中学」的实践方法论
结合 SnowAdmin 的开发场景,分享几个实用技巧:
1.以组件为单位学习:研究verify-tools.ts里的表单验证函数,就能同时掌握正则表达式、TypeScript 类型定义和工具函数设计
2.带着问题查源码 :想知道如何实现响应式布局?直接看 SnowAdmin 的布局组件如何使用useDevicesSize钩子
3.渐进式改造:先实现基础功能(如 4 位数字验证码),再逐步添加干扰元素、过期逻辑,每一步都解决一个具体问题
4.善用 AI 但不依赖:让 AI 生成初始代码后,一定要亲手调试修改,比如调整验证码的字符集或干扰线数量,这个过程才能真正理解逻辑
结语:在解决问题中构建知识体系
现代编程就像搭建乐高积木 ------ 你不需要知道每块积木的制作工艺,只要明白如何组合它们实现特定功能。SnowAdmin 的验证码组件如此,整个项目的架构亦是如此。
AI 确实取代了部分初级程序员的工作,但也解放了我们的认知带宽,让我们能专注于更核心的问题解决与系统设计。与其焦虑 "被 AI 替代",不如拥抱 "用中学" 的模式:在实现功能的过程中积累经验,在与团队协作中提升软技能,在不断优化中深化技术理解。
毕竟,编程的本质从来不是背诵 API,而是创造性地解决问题。