JS 原型链、this 与 class

原型链

目的

实现属性、方法共享

阅读全文

JS 事件循环

背景

JS 诞生时,为了简化多线程 DOM 操作带来的问题,设计成单线程。
单线程遇到异步逻辑(定时、网络请求)又会阻塞住,因此加入了调度逻辑——事件循环

阅读全文

Promise 必知必会

本文先讲讲现成的 Promise 对象怎么用,再讲怎么构造一个 Promise 对象。

怎么用

通过事件循环来异步执行的函数都有一个问题:如何优雅的调用函数,类似同步函数那样?

阅读全文

web 移动端开发踩坑

浏览器内核

所谓内核指渲染引擎,要和 js 引擎区分开来。js 引擎有 Chrome 用的大名鼎鼎的 V8 等,其他浏览器不尽相同。

阅读全文

TCP 连接的细节详谈

谈一谈 TCP 解决了什么问题,以及三次握手、四次挥手的细节,包括传输无误的流程以及每个环节出错的情况

如何保证可靠连接

在 TCP/IP 四层模型里,TCP 接收来自应用层的数据流,将其分割并封装为适当长度的 TCP 「报文」,通过 IP 层(网际层)传输数据。

阅读全文

React Diffing 算法

img

阅读全文

React 生命周期

React 16.3 之前(不包括 16.3)已弃用

img

阅读全文

BrowserRouter vs HashRouter

使用 React-Router 的应用一定是单页应用(SPA)。与多页应用相比,SAP 可以在前端自定义和控制路由。但后端也有一套路由处理的能力,此时前后端在控制路由层面如何权衡呢?

BrowserRouter :

普通的 url 路径,网络请求中会把 url 完整地发送给服务器,相应的,服务器要对前端定义的每个 pathname(window.location.pathname 这个东西) 都做相应的处理。
例如一个页面有 根、user 和 about 三个路径:
https://example.com/
https://example.com/user
https://example.com/about
后端需要分别写三个不同 GET 请求的方法(express 为例):
app.get('/')app.get('/user')app.get('/about')
目前有两个问题:

阅读全文

CSS 方式解决 iOS 微信橡皮筋效果与 position: fixed 联动的坑

iOS 的坑

为了解决 iOS 微信内,触发橡皮筋效果时 fixed 的元素依然位于窗口顶部(而整个页面已经下滑,漏出‘此网页由 xx 提供’字样,截图中是返回所在的行遮住了这句话)的问题,给 body 加一个子元素,同样设置成 fixed,占满全屏,背景设为白色。这样再触发橡皮筋效果时,这个元素实际上也位于窗口顶部(可以改背景颜色验证),但会把‘此网页由 xx 提供’字样遮住,且占满全屏的尺寸和白色背景也符合用户的正常期望,不会意识到实际的 body 已经被拉下去了。

阅读全文

安卓微信 视频播放 相关踩坑

前言

技术日新月异,本文仅记录截止 2019.12.11 的开发情况

背景

移动端 Web 页面开发,有视频功能。一切都运行得很好,只有在安卓微信有一个问题:视频会位于一切 dom 的最顶层,遮挡其他 dom。由此开始进行了一系列调查工作,整理成本文。

阅读全文