为什么在代码之前先卡在扩展名上
学习氛围编程的人,会在代码之前先卡住的地方,是文件扩展名。当 .json、.yaml、.env、.md 这类陌生扩展名扑面而来时,他们便以「果然我不是开发者」放弃了。然而这数十种格式只分三类。
装数据的容器、在屏幕上呈现的东西、设置与机密。只要抓住这三条分支,即使是从没见过的扩展名,也能大致感觉到它属于哪个盒子。下表就是那张地图。
| 格式 | 全称 | 分类 | 一句话定义 |
|---|---|---|---|
| CSV | Comma-Separated Values(逗号分隔值) | 数据 | 去掉一切格式的电子表格 |
| JSON | JavaScript Object Notation(JavaScript 对象表示法) | 数据 | 贴了标签的盒子(应用与 AI 的通用语) |
| XML | eXtensible Markup Language(可扩展标记语言) | 数据 | 用标签包裹的旧式数据 |
| HTML | HyperText Markup Language(超文本标记语言) | 画面 | 网页的骨架 |
| Markdown (.md) | 并非缩写 · 源自 markup 的谐名 | 画面 | 用几个符号排版的文字 |
| YAML | YAML Ain't Markup Language(指向自身的递归缩写) | 设置 | 用缩进整理的设置 |
| .env | environment(环境变量) | 机密 | 存放 API 密钥与密码的保险箱 |
| TXT | text(纯文本) | 其他 | 毫无规则的纯字符 |
装数据的格式:CSV、JSON、XML
CSV 是去掉所有颜色与格式、用逗号分隔各列的纯表格。第一行是列名,从下一行起是数据。从商城下载的订单记录或问卷结果通常就是 CSV,直接交给 AI 分析也很方便。
JSON 是当今程序之间交换数据的事实标准。每个值都带着标签,还能在盒子里再套盒子。AI API 的响应、应用的设置、数据库的结果几乎都是 JSON,所以氛围编程时最常遇到它。
XML 是把同样的数据用一开一合的标签包裹起来的旧方式。政府机关和银行的老系统里仍在使用,有趣的是,把 Excel 文件(.xlsx)拆开来看,里面就是 XML。新做项目时,人们通常会选更轻的 JSON。
把三种格式用同一笔订单并排放在一起,样貌一眼就能看清。
order_id,name,price,qty,status
1001,Americano,4500,2,paid
1002,Cafe Latte,5000,1,paid
1003,Cold Brew,5500,3,pending
1004,Espresso,4000,1,cancelled{
"customer": { "id": "sh", "name": "SH Consulting", "vip": true },
"orders": [
{ "item": "Americano", "price": 4500, "qty": 2 },
{ "item": "Cold Brew", "price": 5500, "qty": 3 }
],
"total": 25500,
"paid": true
}<order id="1001" status="paid">
<customer>SH Consulting</customer>
<items>
<item qty="2">
<name>Americano</name>
<price>4500</price>
</item>
<item qty="3">
<name>Cold Brew</name>
<price>5500</price>
</item>
</items>
<total>25500</total>
</order>呈现的格式:HTML、Markdown
HTML 是浏览器绘制画面的蓝图。标签指定「这是什么」——<h1> 是标题、<p> 是段落、<button> 是按钮。用氛围编程做出的网站或邮件通讯全是 HTML,骨架(HTML)、装饰(CSS)、动作(JavaScript)作为一套一起运作。
Markdown (.md) 是用 # 或 - 这类简单符号来表现排版的文字。学习只需五分钟,带着符号也能读懂,渲染后就成为整洁的文档。GitHub 的 README、AI 聊天机器人的回答、Notion 备忘录大多是 Markdown。
<!DOCTYPE html>
<html lang="en">
<head>
<title>SH Consulting</title>
</head>
<body>
<h1>Hello</h1>
<p>We help teams adopt AI.</p>
<ul>
<li>Corporate training</li>
<li>Vibe coding</li>
</ul>
<button>Contact us</button>
</body>
</html># Project Title
A short intro paragraph goes here.
## Install
- npm install
- npm run dev
## Features
- First feature
- Second feature
- Third feature
> A blockquote looks like this.
**Bold**, *italic*, and a [link](https://sh.consulting).设置与机密:YAML、.env
YAML 是与 JSON 相同的数据,用缩进代替括号来整理。它对人类友好,因此常用于部署设置和应用环境配置。只是要当心:错一个空格就会整体崩坏,务必留意缩进。
.env 是把 API 密钥、密码等敏感值与代码分离存放的文件。接入 AI 服务时,密钥就放在这里。有一条铁律:绝不能把 .env 推送到公开仓库。那等于把整把钥匙交给陌生人。因此通常用 .gitignore 将其排除。
app:
name: my-app
port: 3000
debug: false
database:
host: localhost
port: 5432
name: shdb
features:
- login
- search
- export
users:
- name: sh
role: admin
- name: guest
role: viewer# Server
PORT=3000
NODE_ENV=production
# AI / external API keys
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
AZURE_OPENAI_ENDPOINT=https://example.openai.azure.com
# Database
DATABASE_URL=postgres://user:pass@localhost:5432/shdb只看扩展名就能有感觉的方法
核心直觉很简单。CSV、JSON、XML、YAML 是数据,即内容物。HTML、Markdown 是呈现的文字与画面。.env 是机密。只要一看扩展名就有「这是数据、这是画面、这是设置」的感觉,就足够了。
从 AX(AI 转型)的角度看,这种直觉比想象中重要。非开发者用 AI 做东西时,真正的障碍往往不是代码语法,而是对陌生文件的模糊恐惧。当你握住把扩展名分成三类的地图,陌生文件便不再可怕。氛围编程,正是从那一刻真正开始。