2021 年 2 月 2 日
- 骨架屏和 Spinner 分别表示初次请求数据、更新数据
2021 年 2 月 1 日
- Ant Design 主题定制推荐做法:less 编译器静态编译替换@primary-color
2021 年 1 月 16 日
- 异常 ReferenceError: Cannot access 'xx' before initialization 基本是因为存在循环导包。所以不建议使用聚合导出。
2021 年 1 月 15 日
Spin 的位置应该在容器内,内容外,即容器->Spin->内容。内容必须提供空数据占位。
不要因为 H5 不需要 seo 就彻底抛弃服务端渲染,服务端渲染可以提高首屏视口范围内体验。谁也不想一打开就是一个 loading。注意是视口范围内需要 ssr!
2021 年 1 月 14 日
seo 与加载速度不可兼得,提高访问速度的办法就是减少 ssr 接口的数量
yarn 安装依赖时请务必设置 timeout,避免因为下载某些依赖卡住导致长时间无响应。
非文字类 UI 不需要 ssr,例如图表。图表接口应该异步请求,能有效提升页面访问速度。
2021 年 1 月 13 日
- next 如果需要 assetPrefix 根据环境变量来设置的话,建议放弃自动静态优化,即你应该为每个页面声明 getServerSideProps。
2021 年 1 月 12 日
antd 的 Modal 下面最好是组件, 不要直接渲染, 因为 Modal 默认是异步渲染的, ref 会直接空引用! (当然启用 forceRender 也可以, 但不建议)而且当 Modal 销毁时也难以清除订阅器, 而在组件中可以调用 Effect Hooks .
代码管理必须遵循向下兼容原则, 尽量不要删除代码, 代码拒绝破坏性重构(必须兼容原有代码). 每个代码模块应高度抽象, 细节由调用者提供. 复制粘贴可以有效且快速地降低代码复杂度. 代码模块化的意义是: 视图与逻辑分开, 视图与视图分开, 逻辑与逻辑分开, 第一点是为了易于界面重构, 第二点是为了美化代码, 第三点是为了降低心智负担. 重复的代码才需要模块化.
2021 年 1 月 11 日
dockerHub 上面搜索 node,会有很多版本,buster 表示稳定版,alpine 精简版,stretch 旧版。alpine 一般内置 yarn,不支持 cpp 插件。前端项目一般推荐使用 alpine。如果项目使用的是 yarn,dockerFile 中也必须使用 yarn,yarn.lock 文件也一定要提交。如果你总是发现本地开发正常,一到线上就报错,说明项目没有提交 lock 文件。lock 文件用于锁定依赖版本,避免发生依赖冲突、不兼容等情况!
在做退出登录功能的时候,退出要达到这个网站没有访问过一样的状态,即清空这个网站的 localStorage、sessionStorage、cookie 等客户端存储!尽量不要使用 localStorage 里的值来渲染界面,保持 localStorage token 的唯一性,即只依赖 token,避免出现因为缓存导致的其他问题。