使用TypeScript编写Node项目

入 TypeScript 坑有一段时间了,由衷的看好,所以决定在自留地絮叨一番。

是什么

typescriptTypeScript (以下简称TS)是巨硬推出的JavaScript转译语言,这意味着:

  1. 它需要编译
  2. TS代码会被编译成JavaScript代码

TS的特点是提供 模块、类、接口等一系列[……]

阅读全文

Node.js中的流

什么是流?

说到流,就涉及到一个*nix的概念:管道——在*nix中,流在Shell中被实现为可以通过 |(管道符) 进行桥接的数据,一个进程的输出(stdout)可被直接作为下一个进程的输入(stdin)。

在Node中,流(Stream)的概念与之类似,代表一种数据流可供桥接的能力。[……]

阅读全文

闭包和高阶函数

引子

最近发现一个问题:一部分写JS的人,其实对于函数式编程的概念并不是太了解。如下的代码片断,常常让他们觉得不可思议:

上述片断来自开源项目node-oauth2-server,这个authCodeGrant原型函数涉及到JS[……]

阅读全文

Promise,Q及Async

引子

在使用Node/JS编程的时候,经常会遇到这样的问题:有一连串的异步方法,需要按顺序执行,前后结果之间有依赖关系,形如(片断1):

之前也介绍过,这就是著名的回调地狱(Pyramid of Doom)。

Promise

[……]

阅读全文

BDD和Mocha框架

引子

今天造了个轮子:写了个深拷贝任意JavaScript对象的模块(事实上npm上已经有类似的模块,纯造轮子 🙂 虽然是个轮子,依然是需要测试的,保不齐还有除我之外的人会用到。那么问题来了,应该怎么测试?

从需求视角来看,这样的模块涉及到的数据类型繁多(Object/Array/Date[……]

阅读全文

使用File API 异步上传文件

离上次更新已经有一个月了,惭愧。

最近在做一个网盘的项目,不出意外的涉及到大文件的上传,那么问题来了:如何实时的显示文件上传的进度?

问题分解

似乎是老生常谈,几年前我做过类似的功能模块(基于.NET平台),方案思路:

  • 基于表单提交
  • Server端根据上传文件分配标识符(GUI[……]

阅读全文