Sch's Blog

你问我要去向何方,我指着大概的方向

聊聊nodejs的错误处理

在开发过程中,我们不可避免的要和程序中的错误打交道。尤其是使用nodejs进行服务端开发时,涉及到文件系统交互、数据库交互等,出现错误的场景更多。因此,正确认识和处理错误,对于我们写出健壮优雅的程序来说非常重要。 为什么要进行错误(Error)处理 首先我们需要明确,为什么要对错误进行处理,如果不处理会造成什么后果呢? 程序崩溃退出 HTTP请求无响应(web程序) 数据...

使用Preload&Prefetch优化前端页面的资源加载

对于前端页面来说,静态资源的加载对页面性能起着至关重要的作用。本文将介绍浏览器提供的两个资源指令-preload/prefetch,它们能够辅助浏览器优化资源加载的顺序和时机,提升页面性能。 从一个实例开始 如上图所示,我们开发了一个简单的收银台,支付过程中可以展开优惠券列表选择相应的券。从动图可以看到,列表第一次展开时,优惠券背景有一个逐渐显示的过程,体验上不是很好。问题的原因也很...

聊聊IM系统的即时性和可靠性

因为工作的原因,对IM相关的技术接触比较多,这篇文章来聊一聊IM系统最重要的两个特性:即时性和可靠性。 即时性 即时性,通俗来讲就是指低延迟。在双方通信过程中,一方发送的消息,另一方需要在短时间内立即收到。举例来说,微信聊天和短信聊天相比,微信的即时性明显要高得多。IM系统的即时性,主要是靠长连接和断线重连机制来保证。 (还有一种实时性的提法,一般是针对语音、视频通话、直播等场景,这些场景...

learn webpack step by step

webpack预备知识 webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。 webpack配置文件 webpack.config.js we...

单页应用状态管理方案

redux 流程 通过store调用dispatch派发action store调用相应reducer函数,计算得到新的state并返回 store将新的state保存下来,触发绑定的订阅函数进行后续操作(如生成新的视图,这一步可以借助React Redux来简化) 特点 状态数据只读,保存在store单例,所有的修改来自action 不可变数据(immu...