日常记录

做~自己de王妃 提交于 2020-04-05 22:27:40

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-8ASCII =>   (‘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

 

filtergrayscale(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 后,如果开启ES6ES5会报错,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 端到端测试)测试 cypressnightWatchTestCafe  从用户层面对整个程序流程交互的测试。属于黑盒测试

单元测试  对一个功能模块测试

集成测试  对一个页面或组件测试

 

黑盒测试、不知道实现细节

白盒测试、知道内容

灰盒测试

Ssr  vue

 

Css预处理器

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!