未验证 提交 3606a480 编写于 作者: P Phodal Huang 提交者: GitHub

Merge pull request #227 from hylerrix-coop/master

feat: add nodejs checklist
......@@ -84,6 +84,7 @@ function checklistsPlugin(route, config) {
{ route: '/checklists/xp-practise' },
{ route: '/checklists/code-review' },
{ route: '/checklists/frontend' },
{ route: '/checklists/nodejs-practices' },
{ route: '/checklists/api-security' },
{ route: '/checklists/microservices' },
{ route: '/checklists/self-org' },
......
......@@ -14,6 +14,7 @@ export const lists: DocRoute[] = [
{ displayName: '代码回顾检查清单', source: 'code-review' },
{ displayName: 'API 安全性检查清单', source: 'api-security' },
{ displayName: '前端项目检查清单', source: 'frontend' },
{ displayName: 'Node.js项目检查清单', source: 'nodejs-practices' },
{ displayName: '微服务生产就绪检查清单', source: 'microservices' },
{ displayName: '自组织团队建设检查清单', source: 'self-org' },
{ displayName: '需求阿尔法检查清单', source: 'semat-requirements' },
......
# 前端项目检查清单
[@hylerrix](https://github.com/hylerrix)提供, 基于: [Node Best Practices](https://github.com/goldbergyoni/nodebestpractices)
```checklist
- Node.js 项目检查清单
- 项目结构实践
- 组件式构建你的解决方案
- 分层设计组件,保持 Express 在特定的区域
- 封装公共模块成为 NPM 的包
- 分离 Express 'app' and 'server'
- 使用易于设置环境变量、安全和分级的配置
- 错误处理最佳实践
- 使用 Async-Await 和 promises 用于异步错误处理
- 仅使用内建的错误对象
- 区分运行错误和程序设计错误
- 集中处理错误,不要在Express中间件中处理错误
- 对 API 错误使用 Swagger 文档化
- 当一个特殊的情况产生,停掉服务是得体的
- 使用一个成熟的日志工具提高错误的可见性
- 使用你最喜欢的测试框架测试错误流
- 使用 APM 产品发现错误和宕机时间
- 捕获未处理的 promise rejections
- 快速查错,验证参数使用一个专门的库
- 编码风格实践
- 使用ESLint
- Node.js 特定的插件
- 在同一行开始一个代码块的大括号
- 不要忘记分号
- 命名您的方法
- 变量、常量、函数和类的命名约定
- 使用 const 优于 let,废弃 var
- 先 require, 而不是在方法内部
- require 文件夹,而不是文件
- 使用 === 操作符
- 使用 Async Await, 避免回调
- 使用 (=>) 箭头函数
- 测试和总体的质量实践
- 至少,编写 API(组件)测试
- 使用一个 linter 检测代码问题
- 仔细挑选您的持续集成(CI)平台
- 经常检查易受攻击的依赖
- 测试标签化
- 检查测试覆盖率,它有助于识别错误的测试模式
- 检查过期的依赖包
- 对于 e2e testing,使用 docker-compose
- 上线实践
- 监控!
- 使用智能日志增加透明度
- 委托可能的一切(例如:gzip,SSL)给反向代理
- 锁住依赖
- 使用正确的工具保护进程正常运行
- 利用 CPU 多核
- 创建一个“维护端点”
- 使用 APM 产品发现错误和宕机时间
- 使您的代码保持生产环境就绪
- 测量和保护内存使用
- Node 外管理您的前端资源
- 保持无状态,几乎每天都要停下服务器
- 使用自动检测漏洞的工具
- 在每一个 log 语句中指明 ‘TransactionId’
- 设置 NODE_ENV=production
- 设计自动化、原子化和零停机时间部署
- 安全最佳实践
- 拥护 linter 安全准则
- 使用中间件限制并发请求
- 把机密信息从配置文件中抽离出来,或者使用包对其加密
- 使用 ORM/ODM 库防止查询注入漏洞
- 通用安全最佳实际集合
- 调整 HTTP 响应头以加强安全性
- 经常自动检查易受攻击的依赖库
- 避免使用 Node.js 的 crypto 库处理密码,使用 Bcrypt
- 转义 HTML、JS 和 CSS 输出
- 验证传入的JSON schemas
- 支持黑名单的 JWT
- 限制每个用户允许的登录请求
- 使用非 root 用户运行 Node.js
- 使用反向代理或中间件限制负载大小
- 避免 JavaScript 的 eval 声明
- 防止恶意 RegEx 让 Node.js 的单线程过载执行
- 使用变量避免模块加载
- 在沙箱中运行不安全代码
- 使用子进程时要格外小心
- 隐藏客户端的错误详细信息
- 对 npm 或 Yarn,配置 2FA
- 修改 session 中间件设置
- 通过显式设置进程应崩溃的情况,以避免 DOS 攻击
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册