第一章:嘿,抬头看!欢迎来到3D元素世界
1.1 一个可能你也曾有过的想法
你可能在化学课上,对着化学课本最后一页的那张密密麻麻的元素周期表发过呆;也可能在网上看到过一些很酷炫的、可以旋转拖拽的3D元素周期表网站。那些红绿蓝紫的小卡片,在屏幕上转来转去,看起来充满了“科技感”。
我也一样。
有一天我盯着屏幕上那个漂亮的3D化学元素周期表,脑子里突然冒出了一个想法,不是“哇,好厉害”,而是:
“如果让我自己从零开始写一个,不依赖任何所谓的‘3D图形库’,我能做到吗?”
这个想法一直在我的脑海中挥之不去。最终,我决定试一试。而这个项目,就是你即将要亲手构建的 THE118™ · 3D 交互式化学元素周期表。
它不仅仅是一个Web 3D 项目,更是一个完美的学习沙盒:它有你足够熟悉的业务逻辑(毕竟我们都背过“氢氦锂铍硼”),但它的实现方式,却足以挑战和重塑你对Web前端能力的认知。
通过这本书,你将会:
- 亲手搭建一个完整的前端工程化项目,而不是用工程模版一键生成。
- 理解3D图形在浏览器中绘制的数学本质,而不是只会调用库的API。
- 掌握如何管理一个复杂应用的状态,让代码不再是一团乱麻。
- 学会用“架构师”的视角去审视代码,并亲手重构它,让它变得更加强壮。
- 能够发布你的项目代码并将它部署到互联网上去,让全世界的人都能看到它。
- 明确你的习路径与职业成长,对它们有清晰的认知和规划能力。
但最重要的是,我希望带给你一种信念:那些看起来无比复杂、透着神秘光芒的软件,在拆开它们外壳之后,都是由最基础、最朴实的技术构成的。你完全可以理解它们,也可以创造它们。
1.2 我们到底要做一个什么东西?
在开始写第一行代码前,我们得先搞清楚我们的目标。用软件工程的话来说,这叫“需求”。
核心功能(MVP,最小可行产品):
- 在浏览器中展示118个化学元素卡片,每个卡片至少显示原子序数和元素符号。
- 并提供5种3D布局方式:标准的表格、一个大球、一段螺旋、一个魔方似的网格、以及一个看起来完全随机的元素分布。
- 然后能流畅的切换这五种布局,同时还应该有过渡动画。
交互体验:
- 点击一个卡片,它能“飞“到屏幕中央,让你看个清楚。
- 双击一个卡片,弹出一个元素详情面板,告诉你它的名字、用途等信息。
- 拖拽整个3D场景,它能转起来。且在松手的那一刻,不是立刻停住,而是像一颗打出去的冰球——缓慢停止。
其他一些锦上添花的事:
- 项目应该支持亮色和暗色主题。
- 整个项目要严格遵守代码规范。
是不是感觉要做的还蛮多的?别怕。我们不会试图一口吃成个胖子。回顾一下我们是抱着什么心态来做这个项目的:学习。甚至我们现在可以非常自信的断定,代码在未来一定是会被我们重写的,因为随着我们能力的增长,我们会越来越看不惯自己刚开始时写的那些“幼稚”的代码。这很正常,甚至可以说是一件值得高兴的事情。
所以,放轻松,享受这个创造的过程。
1.3 为什么我们要选择一条“更难”的路?
现在,我们要做出一个贯穿全书的最重要的决定。这个决定,将会定义我们整个项目的技术灵魂。
如果你去网上搜 “Web 3D 元素周期表”,99%的项目都会用到一个叫做 Three.js 的图形库。Three.js 是一个非常伟大的库,它把复杂的 WebGL 指令包装成简单易懂的 JavaScript 对象,让你能轻松地创建图形、灯光和摄像机等。
那为什么我们不用?
你想象一下,你是想成为一个只会驾驶“自动档汽车”的司机,还是一个能在发动机出问题时,打开引擎盖就知道该拧哪个螺丝的机修师?
Three.js 就是那个“自动档汽车”。它把我们和底层那些迷人的数学原理隔离开了。我们使用它,能做出东西,但我们不知道它为什么能工作。
我们这本书的目标,就是打开那个“引擎盖”。深入到底层,去触摸那些构成了整个3D世界的、看似枯燥却威力无穷的线性代数数学矩阵。
这,就是我们选择这条“更难”的路的原因。因为我们追求的不仅仅是“做到”,更是要“知道”。我们要的,是那种“一切尽在掌握”的自由。
1.4 你的学习旅程地图
下面是我们将要一起走过的路。我会把它分成三个大阶段,就像玩游戏升级一样。
第一阶段:新手村 · 磨刀不误砍柴工 (第2章 - 第6章)
在这个阶段,我们不写一行业务代码。我们会专注于搭建一个“专业”的开发环境。这听起来可能有点无聊,但它能让我们从一开始就养成受益终身的职业习惯。
- 环境与工具: 从零配置 Git, Node.js, Vite, TypeScript。
- 代码规范: 学会用 ESLint, Commitlint, Husky 来让你的项目保持整洁。
第二阶段:打怪升级 · 从原理到实现 (第7章 - 第17章)
这是本书最核心、最有挑战,也是最有成就感的阶段。我们将从最底层的数学矩阵开始,一步步构建出我们的3D元素舞台。
- 数学引擎: 亲手写一个4x4矩阵计算工具包。
- 领域核心: 实现那五种酷炫的元素卡片布局算法。
- 前端交互: 用React把我们的数据变成看得见、拖得动的3D元素。
第三阶段:觉醒时刻 · 重构与进化 (第18章 - 第25章)
等到整个项目跑起来之后,我们不会就此止步。我们会站在一个更高的角度,审视我们之前写过的代码。
- 代码评审: 一起找出项目代码中的“坏味道”。
- 架构重构: 学习更先进的FSD架构,并动手改造我们的项目。
- 放眼未来: 总结一路走来的收获,并聊聊如何成为一名更专业的软件工程师。
好了,旅行地图已经展开。我们旅程的第一步,将不是令人兴奋的3D画面,而是每一个专业项目开始的地方:需求分析与项目规划。不要小看它,正是这一步,让我们不至于在复杂的代码海洋中迷航。
现在,让我们深吸一口气,翻到下一页。