JavaScript-OOP.md
在平时的 CodeReview 中要如何去分辨代码的好坏呢?最近看到 https://github.com/ryanmcdermott/clean-code-javascript 这个仓库的总结,感觉蛮有参考价值的。特别是关于类这一章,涉及很多设计模式的思想。刚好相关的中文仓库似乎缺失了类这章节的翻译,以下为类以及 SOLID 这个章节的翻译并添加个人理解。
在平时的 CodeReview 中要如何去分辨代码的好坏呢?最近看到 https://github.com/ryanmcdermott/clean-code-javascript 这个仓库的总结,感觉蛮有参考价值的。特别是关于类这一章,涉及很多设计模式的思想。刚好相关的中文仓库似乎缺失了类这章节的翻译,以下为类以及 SOLID 这个章节的翻译并添加个人理解。
h5 的单行/多行文字溢出截断实现如下
// 单行
div {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
// 多行
div {
display: -webkit-box;
overflow: hidden;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
text-overflow: ellipsis;
}
在 h5 中,多行文字截断的兼容性并不好,而在 RN 中,实现文字截断则简单的多,只需要给 Text 组件添加 numberOfLines 属性即可。
但是通常我们还会遇到如下需求:
文字在不超出 N 行时,全部展示,超出 N 行时截断,并显示 阅读更多 按钮,用于点击展开,展开后 阅读更多 按钮显示为 收起,点击后折叠文字。
最近有同事遇到一个问题,有个页面的图片(www.xxx.jpg)在安卓和 pc 都能正常显示,但是用 ios 就展示不了。通常出现在这种情况是因为 WKWebview 不支持 webp 的图片导致的。通过 https://caniuse.com/?search=webp,可以看到 safari 在 14.0 之后才支持 webp。
项目组中 RN 之前使用的状态管理是小伙伴自行封装 redux, redux-saga 的一个组件库,然而由于文档不全,使用起来不方便等原因,经过讨论,决定替换成 mobx。主要参考官方文档: https://mobx.js.org/react-integration.html#react-integration。本文记录我将 mobx 加入 RN 的过程以及使用 mobx 的一些注意事项(实际上与普通的 React 项目差不多)
早些时候在公司内部的做过一个内部项目 api-docs,该项目是提供一个 Api 管理文档平台,类似于 YApi 。项目是半路接过来的,前端使用 vue,服务端使用 eggjs 提供符合 restful 规范的接口,数据库则选择的是 mongodb。
在不断的迭代中,遇到以下一些问题
因此我引入了 graphql 来解决上述的问题。基本想法是前端自行构建需要的字段,服务端无需变更。
本文尝试去还原引入的过程是防止遗忘( 实际上时间隔得比较久了,一些细节确实已经模糊了 )。由于当时也是摸石头过河,可能会有一些不是最佳实践的地方,还望指教。
在项目中看到一段小伙伴写的代码,简化后大概如下:
enum A {
"ONE" = 1,
"TWO" = 2
}
const a = Math.random() > 0.5 ? A.ONE : A.TWO
const b = Math.random() > 0.5 ? a : 0
if(b === 1 || b === 2) {
}
此时,b === 2 处 ts 会提示:
This condition will always return 'false' since the types '0' and '2' have no overlap.ts(2367)
为何 TypeScript 会提示 0 与 2 没有重合的地方呢?