Koa2 源码赏析

随着 Node 新版本开始支持 async/await 异步控制写法,Koa 也相继发布了它的 2.0 版本。用 async/await 写法的 Koa 来开发项目,Node 开发者再也没有任何理由不「拥抱变化」——从 Express 转到 Koa 上来。实际上,对于普通 Node 开发者——Express 框架的用户——而言,从 Express 转到 Koa 没有任何技术壁垒,当然前提是你至少得知道 ES2017 中 async/await 是个什么东西。

图片显示错误
阅读全文 »

译文 | 入门概念:CSS 选择器是如何工作的

作者:Chris Coyier
参考原文地址:Beginner Concepts: How CSS Selectors Work

你刚接触 CSS 吗?这篇文章就是为你准备的!也许理解 CSS 最关键的就是理解「选择器」。选择器可以让你定位到具体的 HTML 元素并且把样式应用于它们之上。不过现在让我们暂时忘掉「样式」,而只是专注于「选择」。

在接下来的例子中,CSS 将会存在于一个被命名为 style.css 的文件中,并且被叫做 index.html 的 HTML 文档所引用。HTML 与 CSS 是分离的,这样能将「设计」与「内容」分离,这也是 CSS 出彩的地方。

阅读全文 »

MySQL 慢查询优化

在前一篇博客《Express 性能调优》中,我讲述了 Express 项目应该如何进行性能优化,但那些基本都只是官方文档上就已经明确指出的东西,也是对一个 Express 项目在性能上的基本要求。如果你已经足够仔细的阅读过文档,那么上一篇文章对你的收益几乎是 0。

除了规范所指出的基本要求,要优化一个 Web 项目的方法还有很多,比如合理的在后端给返回数据加缓存、充分利用浏览器的前端缓存、CDN,实在不行甚至需要「劳师动众」的部署多台机器做集群和负载均衡等等。这一篇博客的重点将放在数据库慢查询的优化上,这个话题对于 Web 项目而言更具有普适的意义。一方面它不局限于任何一种技术栈(当然这一篇以使用最普遍的 MySQL 为例),另一方面它更是直接在业务逻辑层面从代码本质上来优化你的项目性能,这往往也是单实例服务下性能的瓶颈所在。

阅读全文 »

Express 性能调优

最近遇到了一个奇怪的事情,自己负责的一个项目的 RC(Release Condidate)版本突然在某一天打开时访问非常之慢,达到了完全不能接受的程度。奇怪的是,就在前一天,页面的访问速度至少是不会让人觉得不可接受的。更加奇怪的是,代码我完全没有改动过。

NODE_ENV=production

在查找了一番资料之后,我在 Express 官网上发现了这样一段以前一直没有特别留意过的一段话:

阅读全文 »