react hook
useEffect(() => {
document.title = `You clicked ${count} times`;
}, [count]); // 仅在 count 更改时更新,如果不变 React 会跳过这个 effect,这就实现了性能的优化
不传第二参数,则如果组件多次渲染(通常如此),则在执行下一个 effect 之前,上一个 effect 就已被清除
如果想执行只运行一次的 effect(仅在组件挂载和卸载时执行),可以传递一个空数组([])作为第二个参数。这就告诉 React 你的 effect 不依赖于 props 或 state 中的任何值,所以它永远都不需要重复执行。这并不属于特殊情况 —— 它依然遵循依赖数组的工作方式。
快速创建数组
let f = length => Array.from({length}).map((v,k) => k);
进程与线程
一个进程由几个线程组成,进程是资源分配的最小单位,线程是CPU调度的最小单位
比如Chrome浏览器,可以把每个tab看做一个进程,当一个tab打开后,会对应开启其内部的线程,如JavaScript编译线程、css渲染线程、垃圾回收、service worker 等等
线程快、相互耦合性高,可互通消息,但是一个线程出问题则整个进程挂掉,如垃圾回收异常,这tab页可能因内存溢出而出问题。
进程可靠性高,因为相互之间无影响,
进制转换
十进制转二进制 => (10).toString(2) // 1010
二进制转十进制 => parseInt(1010, 2) // 10 第二个参数可以为2-36之间的整数
utf-8转ASCII码 => (‘ABC’).charCodeAt(2) // 67
ASCII码转utf-8 => String.fromCharCode(99, 67) // cC
其他
当非严格模式中的函数有包含剩余参数、默认参数和解构赋值,那么arguments对象中的值不会跟踪参数的值(反之亦然)相反, arguments
反映了调用时提供的参数
Mouseleave 鼠标离开: 在离开元素本身后立即触发,与子元素无关
touchend 滑动移开: 滑动移开元素后,手指拿开,可能执行的是touchcancel
Es9
正则 \p{}
es8
Shared memory and atomics
异步迭代
同步迭代
Iterable
filter: grayscale(100%) 灰度
css in depth
es6 的 Import export 静态结构语法 可以用于支持tree shaking 的webpack 即打包混淆代码会移除未引用的代码
Scope hoisting 作用域提升 分析模块之间的关系,使有关系的模块打包到一个函数,使代码量更小,需要使用静态结构
Weex :class 绑定时,不支持对象方式,支持数组方式
支持的连写有限,如 margin padding
- 关于组件化
- 可复用的、或区域性关系密切相关的,如弹框、页面大量重复的相同区域等,做成component引入页面,减轻页面复杂度以及代码量
页面中有使用定时器,需再页面卸载时关闭定时器
函数按照使用顺序书写
- 图片:Flex 定位的需要给图片最低宽高,以免变形
- 边框:最好给1px 因为1rpx在高倍屏上可能由于过低而被忽略为0
- 层级:Map等原生组件上每个文本都需要用cover-view包裹
- 兼容问题
- iPhone5里的 cover-view 不能使用flex-direction 修改方向,否则会出现无法正常显示的问题
- 疑? 小程序添加async / await 后,如果开启ES6转ES5会报错,regeneratorRuntime is not defined
- 如果不开启,则使用ES6语法的代码无法正常上传
外婆配送页面显示地图配送员,会存储配送地址、门店、骑手三个位置,页面中有拨打电话,后台页面后回来,骑手marker消失,原因可能是回来后data数据重置了,逻辑中this里的数据没有重置,导致判断没有往data里放入骑手信息,而只是更新骑手位置,于是导致了问题
避免部分机型运行速度过快,页面跳转快于缓存wx.setStorage(),所以需查看下是否需要修改为同步缓存sync
{} + {} = "[object Object][object Object]"
[] + [] = ‘’
{} + [] = 0
[] + {} = "[object Object]"
Var obj = { a: 1, b: 2 }, num = 0
if(num !== obj.a || num !== obj.b){…} 这个if判断没有必要,因为 num 如果不等于obj.a,则会短路运算,否则就等于了obj.a, 后面的比较没有意义
E2e (end to end 端到端测试)测试 : cypress、nightWatch、TestCafe 从用户层面对整个程序流程交互的测试。属于黑盒测试
单元测试 对一个功能模块测试
集成测试 对一个页面或组件测试
黑盒测试、不知道实现细节
白盒测试、知道内容
灰盒测试
Ssr vue
Css预处理器
来源:oschina
链接:https://my.oschina.net/mdu/blog/3215667