经过15年的网页开发,我终于有了一个震惊的发现:现代JavaScript框架其实是不必要的,它们只是绕了数十年的弯路,而AI编码助手终于揭示了这一点。
大框架骗局揭秘多年来,我们被告知框架被描述为解决现代 Web 应用复杂性的必要工具。但如果我们面对的复杂性其实是我们人为制造出来的呢?我们是否在解决那些仅仅是由于我们自己创造出来的问题?
[编辑:当时我高中毕业后,用IBM的某个系统(可能是IBCADIC)处理MUDD内容,通过一个VT-100终端连接,只用文本编辑器。这并不漂亮,但有效——而且当时没人想到称它为框架。]
我们来看一个简单的例子。还记得这段 React 代码?
const 按钮 = ({ 子元素, 点击, 变体 = "primary" }) => {
return (
<button
className={`btn btn-${变体}`}
onClick={点击}
>
{子元素}
</button>
);
};
// 用法
<Button variant="warning" onClick={handleClick}>
点击我
</Button>
现在AI被要求用原生JS创建一个可复用的按钮时,给出了这样的建议:
// 定义一个函数来创建按钮
function createButton(text, onClick, variant = "primary") {
// 创建一个按钮元素
const button = document.createElement('button');
// 设置按钮的文本内容
button.textContent = text;
// 设置按钮的类名
button.className = `btn btn-${variant}`;
// 为按钮添加点击事件处理程序
button.addEventListener('click', onClick);
// 返回创建的按钮元素
return button;
}
// 示例
const button = createButton("点击这里", handleClick, "warning");
document.body.appendChild(button);
“且慢!”你可能要说,“React版本更直接!”没错,当一切都得手动写的时候,这确实很重要。但是当AI能在毫秒间生成任意版本时,价值主张就会大不一样了。
泰勒·德伦的碱水澡将AI编程助手想象成泰勒·德诺,先用氢氧化钠(vanilla JS知识)涂上自己,然后被复杂框架覆盖。结果,框架内部爆炸。
泰勒并不是在创造新的东西——他只是利用基础化学(类似于计算科学的基本原理)来揭示这种生物内在的不稳定性质。同样,人工智能也没有创造新的编程范式;它只是揭示了这一点,我们的复杂抽象原来是多么没有必要。
AI并不是取代基础——它是在放大基础。关于AI编程助手的一个常见误解是,它们不会取代计算机科学知识。实际上,它们只是打字很快,记忆力很好。这些AI编程助手只是非常快的打字员,具有很好的记忆力。
当我让AI用纯JavaScript实现一个平衡二叉树时,它并不会创新新的树结构。它利用的是几十年来一直存在的计算机科学基础知识。但不同之处在于,它可以几秒钟内实现这些结构,而无需框架的额外负担。
AI编程助手就像是编程伙伴,它们可以:
- 提供代码建议
- 帮助调试代码
- 解释编程概念和术语
- 永远不要忘记任何API
- 能以超快的速度打字
- 不需要休息
- 看过Stack Overflow上的每一个帖子
它们不是来取代你对计算机科学的理解的——它们是用来增强你的知识的。一旦这些基础知识被增强后,这些框架看起来像是为那些几乎不存在的问题过度设计的解决方案。
尾风事故那咱们就聊聊 Tailwind 吧——因为如果说人工智能暴露了什么问题,那就是实用性优先的 CSS 变得有多荒唐。
<div class="flex flex-col items-center justify-between p-4 m-2 bg-blue-500 hover:bg-blue-700 text-white font-bold rounded transition-colors duration-200">
你好,世界
</div>
即使人工智能也很难理解这些实用类字符串。当我让人工智能解释这代码时,它不得不费劲地将每个实用类翻译回它实际的功能。我们实际上创建了一个只有人脑或AI模型才能解码的CSS压缩算法。
换个说法,比如说:
.button {
display: flex; /* 显示为弹性项目盒模型 */
flex-direction: column; /* 弹性子项目的排列方式为垂直方向 */
align-items: center; /* 弹性子项目的对齐方式为水平居中 */
justify-content: space-between; /* 内容在垂直方向均匀分布 */
padding: 1rem; /* 内边距为1rem */
margin: 0.5rem; /* 外边距为0.5rem */
background: blue; /* 背景颜色为蓝色 */
color: white; /* 文本颜色为白色 */
font-weight: bold; /* 字体加粗 */
border-radius: 0.25rem; /* 圆角边框半径为0.25rem */
transition: background-color 0.2s; /* 背景颜色过渡时间0.2秒 */
}
我们遇到了一个单行CSS代码的“罪”(如犯罪般糟糕的代码),需要深厚的Tailwind知识才能解读。但AI却能轻松生成任意一个版本,揭示了这种荒谬。如果两者同样容易创建,为何选择那个可读性差的那个?
框架崩塌随着AI编程助手的改进,我们将见证一场令人着迷的混乱局面。框架将:
- 增加更多的智能功能。
- 更好地与AI工具整合,提供更流畅的开发体验。
- 添加更多功能(增加复杂度)
- 提高性能(解决由此引起的问题)
- 集成AI能力(暴露其自身的冗余)
就像异形怪兽吞噬了泰勒·德顿一样,他们也会在不知不觉中吞噬会从内部摧毁他们的东西。
真正的代价这种复杂性总是带来真正的成本。
- 更大的包体积
- 更复杂的构建流程
- 更高的认知负荷
- 更多的故障点
- 新开发人员学习曲线更陡峭
- 层层依赖的生态
AI 并没有改变这些费用——而是通过提供一个替代选择,让这些费用更加显而易见。
一个实际的建议这里是我大胆的建议:或许我们不需要用三层组件包裹每一个HTML元素。或许我们不必假装DOM不存在。
也许我们真正需要的并不是更多的框架,而是更好地应用基础计算机科学原理到原生代码的方法。而现在我们有了——这就是所谓的AI助力开发。
不可避免的火焰战我已经能猜到大家会怎么回答了。
- “但是状态管理怎么办呢?”
- “组件的生命周期呢?”
- “我怎么处理复杂的UI更新呢?”
对此,我的回答是:所有可以用纯 JS 和扎实的计算机科学基础解决的问题。你无法想象没有框架也能解决这些问题,并不是说这些问题没有解决方案——这实际上说明了框架如何限制了你的思维。
总结:框架其实不错。它们确实解决了当时的一些实际问题。不过那个时代已经过去了。我们现在有了更好的工具,能够根据计算机科学的基本原则生成高效的代码,而不需要额外的框架支持。
AI革命不会使优秀的开发人员过时——它会让冗余的框架过时。最早理解这一变化的开发者在未来几年中将具有显著优势。
碱已经用了,异形也吃下去了,现在我们只需要等着爆炸就行了。
嘿,我那保险代理说这篇文章比上一篇要“火药味”得多。我肯定能引来客气又有节制的回应。
作者简介:一位资深杰出架构师,代码高手,有15年的经验,让DOM元素以各种方式出现在屏幕上。
共同學習,寫下你的評論
評論加載中...
作者其他優質文章