Jason

Results 65 comments of Jason

### 16.3/+ 新生命周期 React 在v16.3版本中将 componentWillMount, componentWillReceiveProps 以及componentWillUpdate 加上了UNSAFE_前缀,这些钩子将在React 17.0废除。 在17版本推出新的Async Rendering,提出一种可被打断的生命周期,而可以被打断的阶段正是实际dom挂载之前的虚拟dom构建阶段,也就是要被去掉的三个生命周期。 ![lifecycle-new](https://github.com/JTangming/tm/blob/master/images/react/lifecycle-new.jpg?raw=true)

### Service Worker Service Worker 是运行在浏览器背后的独立线程,一般可以用来实现缓存功能。使用 Service Worker 的话,传输协议必须为 HTTPS。因为 Service Worker 中涉及到请求拦截,所以必须使用 HTTPS 协议来保障安全。Service Worker 的缓存与浏览器其他内建的缓存机制不同,它可以让我们自由控制缓存哪些文件、如何匹配缓存、如何读取缓存,并且缓存是持续性的。 Service Worker 实现缓存功能一般分为三个步骤:首先需要先注册 Service Worker,然后监听到 install 事件以后就可以缓存需要的文件,那么在下次用户访问的时候就可以通过拦截请求的方式查询是否存在缓存,存在缓存的话就可以直接读取缓存文件,否则就去请求数据。 当 Service Worker 没有命中缓存的时候,我们需要去调用 fetch 函数获取数据。也就是说,如果我们没有在...

可以精读的文章: - [useEffect使用指南](https://zhuanlan.zhihu.com/p/65773322) - [React hooks: not magic, just arrays](https://medium.com/@ryardley/react-hooks-not-magic-just-arrays-cd4f1857236e) - [React Today and Tomorrow and 90% Cleaner React With Hooks](https://www.youtube.com/watch?v=dpw9EHDh2bM) - [精读《React Hooks》](https://github.com/dt-fe/weekly/blob/master/79.%E7%B2%BE%E8%AF%BB%E3%80%8AReact%20Hooks%E3%80%8B.md) - [深入浅出 React Hooks](https://juejin.im/post/5cf475d66fb9a07ea944594e)

### http 2.0 #### HTTP2 采用二进制格式传输 相对于 HTTP1.x 的文本格式,二进制格式解析更高效。关键之一就是在应用层(HTTP/2)和传输层(TCP or UDP)之间增加一个二进制分帧层。 ![binary-framing](https://raw.githubusercontent.com/JTangming/blog/master/images/http/http2-binary-framing.jpg) 在二进制分帧层中, HTTP2 会将所有传输的信息分割为更小的消息和帧(frame),并对它们采用二进制格式的编码。 #### 多路复用 代替了 HTTP1.x 的序列和阻塞机制,所有的相同域名请求都通过同一个 TCP 连接并发完成。在 HTTP1.x 中,并发多个请求需要多个 TCP 连接,浏览器为了控制资源会有 6-8 个 TCP 连接都限制。...

### 观察者模式 vs 发布订阅模式 #### 观察者模式 所谓观察者模式,其实就是为了实现**松耦合(loosely coupled)**。 举个例子,当数据有更新,如 changed() 方法被调用,用来更新 state 数据,比如温度、气压等等。 这样写的问题是,如果想更新更多的信息,比如说湿度,那就要去修改 changed() 方法的代码,这就是紧耦合的坏处。 对于观察者模式,我们仅仅维护一个可观察者对象即可,即一个 Observable 实例,当有数据变更时,它只需维护一套观察者(Observer)的集合,这些 Observer 实现相同的接口,Subject 只需要知道,通知 Observer 时,需要调用哪个统一方法就好了。如下图: ![observable](https://github.com/JTangming/tm/blob/master/images/JS/rxjs/observers.png?raw=true) #### 发布订阅模式 在发布订阅模式里,发布者,并不会直接通知订阅者,换句话说,发布者和订阅者,彼此互不相识。 那他们之间如何交流? 答案是,通过第三者触发,也就是在消息队列里面,发布者和订阅者通过事件名来联系,匹配上后直接执行对应订阅者的方法即可。...

举个具体点的例子,当你有一个 union type: ```TS interface Foo { type: 'foo' } interface Bar { type: 'bar' } type All = Foo | Bar ``` 在 switch 当中判断 type,TS 是可以收窄类型的 (discriminated union):...

算法近年来是面试中绕不过去的点了,楼主要不要搞一个专题篇哈?建议可以大家一同参与的,旨在提高质量的算法文章。 最近也在学习中,https://github.com/JTangming/algorithms

遇到了类似的问题,使用WeChat.xx相关API如shareWebPage后,一段时间后收到报错: ```JS console.js:35 Possible Unhandled Promise Rejection (id: 2): Error: WeChat API invoke returns false. Error: WeChat API invoke returns false. ```

> @JTangming 请问你调用 registerApp 的时候有传 universalLink 吗? 有的,我跑的是iOS真机调试。手机系统版本:10.3.3,微信版本:7.0.8。我试试打个ipa包安装看看

查看了微信文档 通过在Xcode中“TARGETS”一栏,在 “info”标签栏的“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI,现在能唤起微信并且分享正常。但是贼慢了,点分享后估计要30s左右才能唤起微信。 然后,universalLink 按照微信文档配置“https://xxx/apple-app-site-association/”,解决universal link校验不通过问题。