前端编码规范
半城云前端开发规范
前言
这里只列出半城云特殊约定的规范、或者是 eslint、prettier 难以限制的规则。其它未提及的可参考airbnb javascript 代码规范。
组件
文件大小限制
单文件不能超过 600 行,若超过应进行拆分。
组件编写顺序
常量、变量、hooks 函数 (按照相关性)
工具函数、事件处理函数
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 命名形式,以及按照逻辑顺序排序
属性书写规范
小驼峰命名
布尔值为 true 可省略
事件放在最后
尽量不要手动操作 DOM
尽量(不到万不得已)不要手动操作 DOM,包括:增删改 dom 元素、以及更改样式、添加事件等。
css
属性顺序
展示类型及文档流相关/Display & Flow
定位信息/Positioning
边距/Margins, Padding
元素尺寸/Dimensions
边框/Borders, Outline
文字排版/Typographic Styles
背景/Backgrounds
其他如透明度,光标样式及衍生内容/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
页面、组件结构
基本原则
就近原则,相关的文件放一起。
最后更新于
这有帮助吗?