工作 or 其他地方看见的一些东西的随笔记录。
XXXX.XX.XX
-
React Context Rerender:https://zhuanlan.zhihu.com/p/50336226
-
IM:
https://blog.csdn.net/y4x5M0nivSrJaY3X92c/article/details/115222230
-
跨平台开发:
https://zhuanlan.zhihu.com/p/488684290
-
微信沙箱测试环境:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
2023.10.15
-
图片压缩网站:https://tinypng.com
压缩质量一般75~85即可,过高的压缩质量有时会导致压缩后的图片大小变大
-
border-image属性:https://developer.mozilla.org/zh-CN/docs/Web/CSS/border-image
用于给容器加一些花里胡哨的边框,在容器拉伸时,用作border-image的图片四边会拉伸,四角则保持原样。未使用过,暂不确定与直接设置background-image的区别和优缺点。
-
Element.scrollIntoView:https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollIntoView
与window.scrollTo类似,但scrollIntoView是直接操作当前元素,不用关心滚动元素是哪一个。
-
PAG动画:https://pag.art/
web端的libpag-lite因为播放动画时会使用videoReader,因此会受浏览器自动播放的限制(仅测试过webgl模式,2d模式未尝试)。libpag代码中pag-player也使用了videoReader,未测试是否会受限制。对于兼容性要求比较大的项目可能还是lottie更好,但同一动画导出pag文件会比lottie的json文件更小。
-
前端本地录音
WebRTC:
https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices/getUserMedia
https://juejin.cn/post/6844903953381982222
https://juejin.cn/post/7073725449162981384
MediaRecorder:
https://developer.mozilla.org/zh-CN/docs/Web/API/MediaRecorder
-
CSS Module的hash值会因为文件路径而改变,有时通过document.querySeletor(styles.xxx)获取DOM元素时,可能会出现因hash值中特殊符号无法作为seletor而报错的情况,可以尝试调整文件路径
-
html2canvas:
这个库会使用iframe将页面拷贝一遍,在某些场景下iframe可能被防劫持策略移除,导致无法正常生成图片。
2023.10.28
-
iScroll自定义滚动库:https://juejin.cn/post/6844903847941390349
-
QPS (Queries Per Second),每秒查询率,接口指标,如果一些页面的PV过高,可能导致查询接口QPS过高
-
网易云Tango低代码,基于AST实现:https://juejin.cn/post/7287134477838876707
传统低代码一般以私有协议实现,但私有协议不可避免的会因需求增加而不断膨胀
-
white-space: nowrap与flex布局的神奇反应:https://juejin.cn/post/7288962917395464232
-
lottie-web:https://zhuanlan.zhihu.com/p/103666502
-
React.Suspense是什么:https://juejin.cn/post/6893443109749784584
2023.11.25
-
Aria无障碍属性:https://developer.mozilla.org/zh-CN/docs/Web/Accessibility/ARIA
常用场景为:button、checkbox等原生样式修改起来较为麻烦,使用div等其他标签实现对应功能时,此时无障碍无法正常识别对应元素的功能,可以通过添加role属性显式声明此元素的功能,此时无障碍(如IOS旁白功能)即可正常识别,朗读”xxx按钮“、”xxx复选框“
-
对于Input的type=“file”,其onChange事件是在文件改变时触发,如果用户取消文件选择、或选择的文件与原来相同,此时无法正常触发onChange事件,因此如果需要选中文件后触发上传loading,需要在onChange事件中触发,而不是onClick事件,否则会导致无法正常关闭loading
-
对于前端开发来说,假如我们把一个项目当成应用来开发,此时可以存在B页面前置依赖A页面的数据,即只能通过A页面进入B页面,直接刷新B页面无法正常显示;如果我们把项目中的页面仅仅是当成页面,那么就不能出现刷新后无法正常显示的情况,所有页面的前置依赖数据必须能够在此页面中加载(可以前置加载,但是进入页面的时候需要判断前置是否已加载,没有前置数据时必须在此页面请求)
-
web端无网络判断较为可信的api:
window.navigator.connection
,window.navigator.onLine
,以及window.addEventListener("online", () => {})
-
Promise的finally函数在某些低版本内核上未实现,尽量避免使用或使用时添加polyfill
2023.12.09
-
pngyu:https://nukesaq88.github.io/Pngyu/
图片批量压缩工具,压缩完成之后可以直接覆写到原位置,可以用于压缩打包后的静态图片。
-
贝塞尔曲线调试:https://cubic-bezier.com/
-
木限东/CocosCreatorShader:https://gitee.com/yeshao2069/cocos-creator-shader
-
响应头:Content-Disposition: attachment;filename="xxx.ext"可用于自定义下载文件的文件名。
2024.05.12
-
Audio音频播放总结:https://zhuanlan.zhihu.com/p/74566301
-
判断当前视窗方向:https://developer.mozilla.org/zh-CN/docs/Web/CSS/@media/orientation
-
webpack动态加载解析:https://juejin.cn/post/7146501801649373197
-
linear-gradient线性渐变兼容:http://www.mrszhao.com/post/194.html
-
JSBridge相关开源仓库:
https://github.com/lzyzsd/JsBridge
https://github.com/wendux/DSBridge-Android
https://github.com/hcanyz/ZJsBridge-ZJs