Taobao FED

分类:Node.js

纠结的链接:ln、ln -s、fs.symlink、require

最近在使用 fs.symlink 实现软链时,发现文档里面写的是:fs.symlink(target, path);然而 man ln 的时候显示的是:ln source_file target_file;而且,require 模块的时候其实还会处理软链但是处理的又不是想象中那样。于是,我彻底被相关东西绕晕。这篇文章算是我的学习笔记,希望对你有帮助。

Promise 反模式

Promises are about making asynchronous code retain most of the lost properties of synchronous code such as flat indentation and one exception channel. – Bluebird Wiki: Promise Anti Patterns Promises

如何定位 Node.js 的内存泄漏

在 《一次 Node.js 应用内存暴涨分析》中,我们处理了一个 Node.js vm 引发的内存泄漏问题,处理过程也是比较艰辛。而在我们实际开发中,可能经常会碰到内存泄漏的问题,但很多情况下,我们对于这种问题的处理是有些迷茫的,没有一定的操作流程,效率比较低。虽然这种问题对于经验的要求比较高,但如果有一个简单的排查流程,还是会有一定帮助的。 这里简单整理一个流程,欢迎一起探讨,补充。 基础知识

企业级 Node.js Web 应用解决方案设计的零零总总

年前一直在忙着做新版 Midway 升级的事情,不少同学都知道 Midway 是淘宝的 Node.js Web 应用解决方案,目的是为了更好的做前后端分离,让前端同学开发更简单,生活更幸福(笑)。 如今 Midway 5 正式发布了,横跨了几个月的开发个工作,期间带来的感慨,也算是史上最多。 Midway 的诞生也有 2 年多的时间,我个人参与维护也有 1 年多,经历了从 v3 到 v5 的变化

「开往春天的 Node.js」 - Node 地下铁第二期线下沙龙总结

前言寒冬已逝,春之伊始。 3 月 26 日下午,Node 地下铁第 2 次线下沙龙在上海世博展览馆万信酒店举行。本次沙龙邀请了四位在不同领域应用 Node.js 进行探索的大牛,带着我们在温暖的午后,感受 Node.js 的魅力。 虽然当天是近来久违的好天气,而且会场地点有些偏,但这些都没有令同学们对 Node.js 的热情衰减,13 点半签到,很快会议室的位置所剩无几了,在这里,组委会感谢各位

从 left-pad 事件我们可以学到什么

最近 NPM 圈发生了“一个 17 行代码的模块引发的血案”。left-pad 工具模块被作者从 NPM 上撤下,所有直接或者间接依赖这个模块的 NPM 包就忧伤的挂掉了,包括 babel 这样的热门项目。 而其中的原因大概是这样:作者 Azer 写了一个叫 kik 的工具和某个公司同名了,这天公司的律师要求其删掉这个模块,把 kik 这个名字“让”给他们,作者不答应,律师就直接找 NPM 了,

新版卖家中心 Bigpipe 实践(二)

自从上次通过 新版卖家中心 Bigpipe 实践(一) 阐述了 Bigpipe 实现思路和原理之后,一转眼春天就来了。而整个实践过程,从开始冬天迎着冷风前行,到现在逐渐回暖。其中感受和收获良多,和大家分享下。代码偏多,请自带编译器。 核心问题一切技术的产生或者使用都是为了解决问题,所以开始前,看下要解决的问题: 同步加载首屏模块,服务端各个模块并行生成内容,客户端渲染内容依赖于最后一个内容的生

如何优雅的在 koa 中处理错误

软件开发时,有 80% 的代码在处理各种错误。 ——某著名开发者 想让自己的代码健壮,错误处理是必不可少的。这篇文章将主要介绍 koa 框架中错误处理的实现(其实主要是 co 的实现),使用 koa 框架开发 web 应用时进行错误处理的一些方法。 基础在 Node.js 中,错误处理的方法主要有下面几种: 和其他同步语言类似的 throw / try / catch 方法 callbac

深入理解 GraphQL

0.引子通过上一篇文章我们对 GraphQL 有了基础的了解。我们知道 GraphQL 使用 Schema 来描述数据,并通过制定和实现 GraphQL 规范定义了支持 Schema 查询的 DSQL (Domain Specific Query Language,领域特定查询语言)。Schema 帮助将复杂的业务模型数据抽象拆分成细粒度的基础数据结构,而 DSQL 的实现则赋予了前端开发者自由

进程间通信的另类实现

背景Node.js 内置的进程间通信使用非常简单,但也有一定的局限性,只能在父子进程间通信。下面是官方文档给的一个例子。 首先是父进程的 parent.js : 12345678const cp = require('child_process');const n = cp.fork(`${__dirname}/sub.js`);n.on('me