introduce to websocket

背景

在 webSocket 出现之前,为了实现消息推送,实现方式有轮询和Comet。Comet 又分两种:长轮询和流技术。

阅读更多

前端开发畅想

整篇文章的思路是这样子的:重新思考前端开发过程,有不少让人觉得不痛快的地方。如果没有这些束缚的话,理想中的开发部署又是怎样的?理想有点远,眼下我们又能做些什么呢?

阅读更多

HMR 踩坑记

昨天遇到一个问题:使用 next/tree 时报错,即使最简单的 Demo 也会报错,而官网提供的则不会,最终问题定位到 react-hot-loader 上。我使用的是 react-hot-loader@next版本,需要在 babel 配置中引入 react-hot-loader/babel plugin。禁用这个 plugin 正常渲染,启用就报错,这个问题太诡异了,所以有必要搞清楚 HMR。

阅读更多

探秘 MobX

MobX 是最近在 React 社区比较火的状态管理工具。与 Redux 相比,Mobx 简单又神秘。不止是因为 MobX 比较火,MobX 的双向绑定与 Vue 的实现也是非常相似,十分有必要去了解一下双向绑定的实现。这篇文章通过源码解释 MobX 这些奇怪的“特性”。
就像 Redux,MobX 跟 React 也没有关系,我们从最最简单的例子开始。MobX 版本 3.1.7

阅读更多

git 合并策略 之 recursive

前几天老婆大人考察:git merge 时什么情况下进行 auto merge 以及如何 merge ? 我只能回答:如果文件同一行都有修改就会冲突,如果没有冲突就会自动 merge 。另一个问题是:如果一个文件删除了,为什么 merge 时还存在?这个应该是在另一个分支上对该文件做了修改。在阅读后面的文章之前,假定你理解 git 的分支是由 commit 串起来的一条链。如果不明白上一句话,请先补下 git 分支 知识点。

阅读更多

Promise 被玩坏了

收到产品同学反馈的一个 bug:在 iOS 上,进入首页之后很快滑动,再点击切换到第二个页面会一直处于loading状态,可以稳定复现。拿自己的手机试了几次果然可以复现。在模拟器上准备调试,打开控制台并未看到错误。于是猜想有异常没有处理,检查代码是否遗漏:

1
2
3
4
showLoading();
fetch(url).then(() => {}, () => ([])).then(() => {
hideLoading();
});
阅读更多

前端公共资源完全共享的畅想

在每个前端项目中,多多少少都会依赖一些第三方资源,比如QueryReactAngularcore-jsbabel-runtime;如果我们能够尽最大程度的复用这些资源,那么我们就能够节约很大的首次请求成本,无需绞尽脑汁即可显著提升首屏首次加载速度。另外提升 webpack 构建速度,扯这么多构建优化方案,就设置 externals 效果最显著;

阅读更多

前端框架的最佳实践(AngularJS 和 React)

对框架的使用者来说,谈一个框架的思想,其实不如谈谈它的最佳实践。就是同一个框架,不同的人实现相同的功能,代码也是千差万别。不同风格的实现自然也有高低之分,而往往这些东西还没有成文的规定,不知道坑了多少前端。这些框架还有另一个特点—–非常容易上手(入坑),从而埋下更深的祸患。这么简单!其实往往是不明所以的时候就开始挖坑了。

阅读更多

【翻译】React.js 初学者应该知道的 9 件事

原文地址:9 things every reactjs beginner should know
2016年1月份的文章,现在才翻译,又落后了半年

现在为止我使用 React.js 已经6 个月了。6 个月 放长远看一点也不长。但是,在 JavaScript 框架层出不穷的今天,6 个月可以称为老前辈了。最近指点了几个新人入门 React ,所以想总结一下写篇文章启发更多的人。下面总结的这些点,一些点是我希望在自己入门的时候就已经知道的,另外一些则是让我真正的理解 React。

阅读更多

就一个静态页面

周二晚上邮件收到一个需求:下周有个活动页面,就一个静态页面。打开设计稿一看,一个秒杀活动页面,与设计对了一下,发现有个动画要做。之后需求方描述了一遍:倒计时结束,按钮可点,跳转到订单页面。后来,开发一对需求,发现秒杀后面的很多逻辑都没考虑:

阅读更多