Jason
Jason

- GraphQL 的 field resolve 如果按照 naive 的方式来写,每一个 field 都对数据库直接跑一个 query,会产生大量冗余 query,虽然网络层面的请求数被优化了,但数据库查询可能会成为性能瓶颈,这里面有很大的优化空间,但并不是那么容易做。FB 本身没有这个问题,因为他们内部数据库这一层也是抽象掉的,写 GraphQL 接口的人不需要顾虑 query 优化的问题。 - GraphQL 的利好主要是在于前端的开发效率,但落地却需要服务端的全力配合。如果是小公司或者整个公司都是全栈,那可能可以做,但在很多前后端分工比较明确的团队里,要推动 GraphQL 还是会遇到各种协作上的阻力。
# React Native 组件的生命周期 最近在开发金钥匙经理端 RN 版本的时候,经常会用到组件生命周期的相关的方法,刚开始接触有些迷糊,现在整理 React Native 组件的结构和生命周期。 ### 生命周期函数 每一个组件都有一些生命周期方法,通过重写这些方法方便在程序运行的过程中使用。如带有 will 的方法被执行则表示某个状态的发生,RN 中的生命周期方法大致归类如下三类: #### Mounting **表示调用某个被创建的组件实例** - getInitialState & getDefaultProps 这两个回调函数分别表示组件最初被创建渲染后调用,用来获取初始化的 state 和 props,这两个方法在组件中全局只被调用一次。 - componentWillMount 在组件第一次绘制之后,会调用...
[Service Worker 简介](https://developers.google.com/web/fundamentals/primers/service-workers/?hl=zh-cn) ### 从 Web Worker 到 Service Worker Web Worker 的作用,就是为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行。在主线程运行的同时,Worker 线程在后台运行,两者互不干扰。等到 Worker 线程完成计算任务,再把结果返回给主线程。这样的好处是,一些计算密集型或高延迟的任务,被 Worker 线程负担了,主线程(通常负责 UI 交互)就会很流畅,不会被阻塞或拖慢。 Service Worker 是基于 Web Worker 的事件驱动的,执行的机制都是新开一个线程去处理一些额外的任务。对于...
### angular的数据响应机制 主要了解 $watch、$digest、$apply - $watch 绑定要检查的值,即当一个作用域创建的时候,angularJs 会根据如插值,内置指令和 $watch 建立绑定关系。当 $watch 绑定了要检查的属性之后,当绑定的属性发生变化,就会执行回调函数。回调函数的作用是如果新值和旧值不同时(或相同时)要干什么事,通常给开发来实现这个 callback。 - $digest 遍历递归,主要是解决数据绑定发生变化后,如何触发更新的问题。脏检查的核心,就是 $digest 循环。$watch 将相关绑定关系的属性推到 $$watchers 队列中,$digest 触发后就去检测哪些 $scope 属性发生变化,通过 dirty 进行标记,以此完成页面的渲染。 - $apply 触发 $digest(非必须,即业务中手动触发)。angularJs...
### hooks 相关基础性知识总结 React Hooks 是 React 16.7.0-alpha 版本推出的新特性,文章一下都简称 hooks。 hooks 与 Redux/mobx 解决的不是同一类问题,Redux/mobx 解决的状态共享问题: - 组件间(可能跨层级)如何共享状态?即订阅状态,响应变化等 - 当数据源发生变化时(如异步事件发生时),如何更新共享状态? hooks 其根本不是解决状态共享的问题,解决的问题是如何抽离、复用与状态相关的逻辑,是继 [render-props](https://reactjs.org/docs/render-props.html) 和 [higher-order components](https://reactjs.org/docs/higher-order-components.html) 之后的第三种状态共享方案,不会产生如类组件 JSX 嵌套地狱问题。 hooks 的好处是:...
团队中不少开发同事基本使用的是 --no-ff 的方式合并,但是这样会有很多无用的 commit log 信息,且 git log graph 不够线性。下面参考别人的动图,总结一下git的四种 merge 方式。 git 中的分支其实就是一类文件记录了分支所指向的 commit id,以下都用 master 和 test 分支举例。 #### fast-forward 如果待合并的分支在当前分支的下游,也就是说没有分叉时,快速合并是不错的选择。这种方法相当于直接把 master 分支 HEAD 指针移动到了 test 分支最近的一次提交,如下图: ...
1、[React 16 之上:Time Slicing 与 Suspense API](https://auth0.com/blog/time-slice-suspense-react16/) 本文介绍了 React 的新特性,Time-Slicing 将子组件切割为不同的块操作,并且能在不同的帧中异步执行; Suspense API 则允许 ReactJs 将界面的更新推迟到数据抓取完毕,是基于用户体验出发的编程模型。感兴趣的可以了解阅读。 2、[Web 前端中的增强现实(AR)开发技术]( https://qianduan.group/posts/5a5f89cb0cf6b624d2239c65) 文章力求把目前前端方向的 AR 技术都罗列一遍,细节不赘述,文章虽然是一两个月前的了,觉得能对 Web 前端工程师有一点的启发。 3、[The React and React Native Event...
Zones 是一个持续异步任务的执行上下文,允许 Zone 的创建者观察并控制其区域内代码的执行,Zones 的职责是对宿主环境的任务调度和处理,例如被用来 Debug 或测试等,对于某些框架如 Angular,Zones 主要被用作通知变化监测。 ### 创建子 Zone 在深入理解 Zones 之前,我们需要了解 Zones 是如何创建的。通过引入 zone.js 库,可以在应用中全局的使用 Zone,该 Zone 我们通常称之为跟 Zone。而创建子 Zone 只需要在父 Zone 中 fork 另一份实例即可,示例代码如下: ```JavaScript...