前端编码规范

半城云前端开发规范

前言

这里只列出半城云特殊约定的规范、或者是 eslintprettier 难以限制的规则。其它未提及的可参考airbnb javascript 代码规范

组件

文件大小限制

单文件不能超过 600 行,若超过应进行拆分。

组件编写顺序

  1. 常量、变量、hooks 函数 (按照相关性)

  2. 工具函数、事件处理函数

  3. render

// 正例
const [visible, setVisible] = useState < boolean > false;

const [submitting, setSubmitting] = useState(false);
const handleSubmit = async (values: LoginParamsType) => {
  setSubmitting(true);
};

const { status } = data;
return <div className={styles.container}>{status}</div>;

事件处理函数

建议使用 handleSomething 命名形式,以及按照逻辑顺序排序

属性书写规范

  1. 小驼峰命名

  2. 布尔值为 true 可省略

  3. 事件放在最后

尽量不要手动操作 DOM

尽量(不到万不得已)不要手动操作 DOM,包括:增删改 dom 元素、以及更改样式、添加事件等。

css

属性顺序

  1. 展示类型及文档流相关/Display & Flow

  2. 定位信息/Positioning

  3. 边距/Margins, Padding

  4. 元素尺寸/Dimensions

  5. 边框/Borders, Outline

  6. 文字排版/Typographic Styles

  7. 背景/Backgrounds

  8. 其他如透明度,光标样式及衍生内容/Opacity, Cursors, Generated Content

不建议单一属性类

无太大意义,而且要写较多类名,以及无法获得编辑器补全提示。

约定前缀

bem 命名方式进行样式隔离时,可参考以下类名前缀 全局: g- 页面: p- 组件: c-

git

不建议忽略 package-lock.json

无法锁定版本,依赖版本不一致可能导致问题

rebase 代替 merge

html

语义化标签

HTML5 中新增很多语义化标签,所以优先使用语义化标签,避免一个页面都是 div 或者 p 标签

js

避免名称冗余

命名适用动词+名词形式

命名严谨性

代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。注意词性、单复数、时态等的准确表达。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。

正例:henan / luoyang / rmb 等国际通用的名称,可视同英文。

反例:DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3

杜绝完全不规范的缩写,避免望文不知义

反例:AbstractClass“缩写”命名成 AbsClass;condition“缩写”命名成 condi,此类随意缩写严重降低了代码的可阅读性。

不同逻辑、不同语义、不同业务的代码之间插入一个空行分隔开来以提升可读性

说明:任何情形,没有必要插入多个空行进行隔开。

使用字面值创建对象

使用 ES6,7

必须优先使用 ES6,7 中新增的语法糖和函数。这将简化你的程序,并让你的代码更加灵活和可复用。

必须强制使用 ES6, ES7 的新语法,比如箭头函数、await/async , 解构, let , for...of 等等

条件判断和循环最多三层

条件判断能使用三目运算符和逻辑运算符解决的,就不要使用条件判断,但是谨记不要写太长的三目运算符。如果超过 3 层请抽成函数,并写清楚注释。

其它

文件引用

按照外部包、公共文件、绝对路径、相对路径的顺序排序

另外要注意引用大小写问题,在一些对文件路径大小写敏感的系统会出问题。

控制台信息

留意排查项目报错或者警告信息,而不是能跑就行。

删除无用代码

使用了 git,对于无用代码必须及时删除,例如:一些调试的 console 语句、无用的弃用功能代码。

附: 函数方法常用的动词:

附:常用的缩写:

常见编程命名缩写

项目

项目命名

全部采用小写方式, 以中划线分隔。

正例:mall-management-system

反例:mall_management-system / mallManagementSystem

目录命名

全部采用小写方式, 以中划线分隔,有复数结构时,要采用复数命名法

正例: scripts / styles / components / images / utils / layouts / demo-styles / demo-scripts

反例: script / style / demo_scripts / demoStyles

【特殊】react 项目中的页面、组件目录,使用大驼峰命名

正例: HeadSearch / PageLoading

反例: head-search / page-loading / authorized / notice-icon

项目结构

参照 ant desiagn pro

页面、组件结构

基本原则

就近原则,相关的文件放一起。

最后更新于

这有帮助吗?