|
| 1 | +# 阿里巴巴前端规约 |
| 2 | + |
| 3 | +## 前言 |
| 4 | + |
| 5 | +「阿里巴巴前端规约」是在阿里经济体内广泛使用的一套前端编码和工程规范,致力于通过统一编码风格、普及最佳实践和代码缺陷检查帮助团队降低协作成本、提升前端项目的可维护性和稳定性。 |
| 6 | + |
| 7 | +「阿里巴巴前端规约」主要包括「规约文档」和「配套工具」两部分。你可以通过阅读规约文档了解各前端语言、框架及工程规范,并使用 [F2ELint](https://www.npmjs.com/package/f2elint) 等配套工具来为项目接入规约检查。 |
| 8 | + |
| 9 | +「规约文档」分为编码规约和工程规约两大类,包括: |
| 10 | + |
| 11 | +- 编码规约 |
| 12 | + - [HTML 编码规约](docs/coding/1.html-style-guide.md) |
| 13 | + - [CSS 编码规约](docs/coding/2.css-style-guide.md) |
| 14 | + - [JavaScript 编码规约](docs/coding/3.javascript-style-guide.md) |
| 15 | + - [React 编码规约](docs/coding/4.react-style-guide.md) |
| 16 | + - [Node.js 开发规约](docs/coding/5.node-style-guide.md) |
| 17 | + - [TypeScript 编码规约](docs/coding/6.typescript-style-guide.md) |
| 18 | + - [Rax 编码规约](docs/coding/7.rax-style-guide.md) |
| 19 | +- 工程规约 |
| 20 | + - [Git 规约](docs/engineering/1.git.md) |
| 21 | + - [文档通用规约](docs/engineering/2.doc-writing-practice.md) |
| 22 | + - [更新日志规约](docs/engineering/3.doc-changelog.md) |
| 23 | + |
| 24 | +## 单条规约格式说明 |
| 25 | + |
| 26 | +### 规约级别和对应的 Lint 规则 |
| 27 | + |
| 28 | +根据约束力强弱,一条规约依次分为强制、推荐、参考三个级别: |
| 29 | + |
| 30 | +- 【强制】必须遵守。是不得不遵守的约定,违反本约定或将会引起严重的后果。如有对应 Lint 规则,配套规则包中级别为 `error`。 |
| 31 | +- 【推荐】尽量遵守。长期遵守这样的规定,有助于系统稳定性和合作效率的提升。如有对应 Lint 规则,配套规则包中级别为 `warn`。 |
| 32 | +- 【参考】充分理解。技术意识的引导,是个人学习、团队沟通、项目合作的方向。如有对应 Lint 规则,配套规则包中默认不开启,开发者可根据需要自行开启。 |
| 33 | + |
| 34 | +一条规约的级别会在规约描述的开头标注,如有对应的 Lint 规则会在结尾标注,例如: |
| 35 | + |
| 36 | +- 1.1.1【强制】使用 2 个空格缩进。eslint: [indent](https://eslint.org/docs/rules/indent) |
| 37 | + |
| 38 | +### 代码示例 |
| 39 | + |
| 40 | +为了更加直观,规约描述之后通常会配上代码示例,例如: |
| 41 | + |
| 42 | +```js |
| 43 | +// bad |
| 44 | +function foo() { |
| 45 | +∙∙∙∙let name; |
| 46 | +} |
| 47 | + |
| 48 | +// good |
| 49 | +function foo() { |
| 50 | +∙∙let name; |
| 51 | +} |
| 52 | +``` |
| 53 | + |
| 54 | +我们约定用 `bad` 注释表示反例,用 `good` 注释表示正例。 |
| 55 | + |
| 56 | +除了 `bad` 和 `good`,有时你还会看到 `disallowed`、`allowed`、`best` 这几种注释,它们的含义如下: |
| 57 | + |
| 58 | +```js |
| 59 | +// disallowed - 禁止(用于部分明令禁止的用法) |
| 60 | +// bad - 反例 |
| 61 | +// allowed - 中例(用于允许但不推荐的用法) |
| 62 | +// good - 正例 |
| 63 | +// best - 最佳正例(多个正例中最好的实现) |
| 64 | +``` |
| 65 | + |
| 66 | +## 如何参与 |
| 67 | + |
| 68 | +非常欢迎大家通过 [Issues](https://github.com/alibaba/f2e-spec/issues) 反馈问题和需求,或者通过 [PRs](https://github.com/alibaba/f2e-spec/pulls) 参与贡献,请参考 [CONTRIBUTING.md](/CONTRIBUTING.md)。 |
0 commit comments