规范听起来很无聊,但它是"团队协作的地基"。你一个人写代码随便乱命名无所谓,但团队里十几个人一起改一个项目——你的代码别人 3 秒看不懂,沟通成本就爆炸。规范的核心就是让代码"见名知意",不用读细节就知道大概干嘛的。
三个最基本的:目录别堆一起(分开放)、命名别乱起(有规律)、注释别废话(写为什么不写是什么)。
很多新手项目打开根目录全是文件——html、css、js、图片全混在一起,找个文件要翻半天。规范的做法是按类型分文件夹:
project / ├─index.html 首页页面├─ login.html 登录页面├─ pages / 其他业务页面│└─ order.html├─ css / 样式文件夹│├─ common.css 公共通用样式( 重置、 按钮、 弹窗)│└─ order.css 订单页独立样式├─ js / JS 文件夹│├─ utils / 工具函数││└─ request.js 请求封装│├─ api / 接口管理││├─ user.js││└─ order.js│├─ common.js 全局公共逻辑│└─ pages / 页面业务逻辑│└─ order.js├─ images / 图片资源└─ lib / 第三方库( jQuery 等)
原则就三条:资源分离(html/css/js/图片分开)、功能分层(工具、接口、页面逻辑分开)、第三方库隔离(放 lib,不和自己代码混)。
// ===== 文件命名 =====
user - list.html // html 页面:全小写,单词用短横线
order - detail.css // css 同上
userApi.js // js 工具/接口文件:小驼峰
user - info // 文件夹:全小写 + 短横线
// ===== 变量命名 =====
let userName = "张三"; // 普通变量:小驼峰
const BASE_URL = "http://..."; // 常量(固定不变的):全大写 + 下划线
const $submitBtn = $("#submit"); // jQuery 对象:前面加 $ 区分原生 DOM
let isLoading = false; // 布尔值:用 is/has/can 开头
// 禁止:let a, b, c 这种单字母、中文命名、拼音命名
// ===== 函数命名:动词 + 名词 =====
getUserList // 获取数据
addOrder // 新增
updateInfo // 更新
deleteItem // 删除
renderTable // 渲染页面
function handleSearch() {} // 事件处理函数:handle 开头
// 禁止:func1、test 这种没意义的名字
jQuery 变量加 $ 前缀、布尔值加 is/has/can、函数动词开头——一眼就能看出这个变量是什么类型、干嘛的。
// 文件头部注释(工具/接口文件必须写)
/**
* 用户相关接口
* @author 你的名字
* @description 用户新增、查询、登录请求封装
*/
// 函数文档注释(通用工具、请求函数)
/**
* 通用接口请求
* @param {string} method 请求方式 GET/POST
* @param {string} url 接口路径
* @param {Object} data 请求参数
* @returns {Promise} 后端返回数据
*/
function request(method, url, data) {}
// 单行注释:解释"为什么这么写",不是复述代码
// 401 代表登录过期,清空 token 后跳登录页
if (res.code === 401) {}
别写废话注释——比如 let num = 10; // 定义一个数字 这就是废话,代码本身已经说明了。注释要解释"为什么这么写"——比如为什么要清 token、为什么这里要特殊处理。
可能在什么地方用:
① 团队协作项目必须按规范来,不然别人看不懂;② 自己的项目过半年回头看,不规范自己都看不懂自己写的啥。
常见的问题:
① 所有文件堆根目录,找文件找半天;② 变量名起 a、b、temp,过两周忘了是啥;③ 注释全是废话——"这是一个循环";④ 保留一大段注释掉的废弃代码,看着乱。
解决思路:
① 按上面的目录结构建文件夹;② 命名时多花 3 秒想个有意义的名字;③ 注释写"为什么",不写"是什么";④ 不用的代码直接删,别注释留着。
练习一:项目目录搭建——按上面的目录结构创建一个新项目,包含 index.html、login.html、pages/、css/、js/utils/、js/api/、images/、lib/。
练习二:命名实践——为以下场景起变量名和函数名:存储用户姓名、是否加载中、获取订单列表、删除用户、处理搜索点击。
练习三:注释实践——给 request.js 加文件头注释、给 request 函数加文档注释、在 401 跳转代码上方加单行注释解释为什么要清 token。