持续记录一些有用的库,主要是在前端的工作范畴内,会包含日常开发和工程化等几个大类,使用过的会附上一些使用感受,大概就这样吧。
移动端web页面对比native最绕不过去的一个坎儿就是:性能;尤其是在长列表上的表现。iOS 天然带有长列表优化,当界面中的列表内容变得,且列表元素较为复杂时,移动端 web 页面的性能劣势会体现的更加明显。
react-virtualized
可以算作当前 react 生态中,优化长列表最常使用的组件,其原理就是只渲染可见区域内的元素,滚动高度等通过 css 方法来模拟。并且提供了 <InfiniteLoader />
和 <AutoSizer />
等直接解决滚动加载和高度计算的组件,让优化过的长列表的使用方式更贴近普通列表的使用方式。
虽然已经做了很多的优化,但是就目前的体验来说,如果列表过长,或者列表元素较为复杂时,还是会出现不流畅以及白屏的情况。
在开发一些 List -> Detail 页面时,如果 List 很长的话,通常会希望从 List 进入到 Detail,再返回后,List 仍然可以保持之前的状态;如果在单纯的 spa 环境下是无法实现的,因为从 List 进入到 Detail 时,List 已经被 unmount 掉了,再次进入只能是重新渲染。
这个库就是为了解决这个问题而产生的,可以通过 <Provider />
和 <KeepAlive />
的组合来在本地缓存住对应的页面。
webpack
已经是现代前端开发的标配了,在项目中, production、development、dev 环境中的 webpack config 通常都会有一些细微的差别,虽然 webpack config 中已经提供了 mode
参数可以快速配置 development
和production
,但在较为大型的项目上,还是不能够满足需求。
通常我的做法是会提取一份公用的 webpack config,以此作为 base config,然后通过 webpace config
来直接把 base config 和 env config 再 merge 成一份,然后使用,避免了写很多重复的配置项的工作。
commitizen
是一个可以将 git commit 快速格式化的工具,提供了一个固定的句式,只需要按照提示填入所需的内容,即可生成整齐的 git commit log。