原文:How to get a performance boost using Node.js native addons 也许你已经听说过上千次,但我今天要向你展示什么是Node.js的原生模块,以及你为什么应该关注它们。 Node.js addons是使用C或C++编写的动态链接共享对象,可以使用require()方法加载,并且像其他普通的Node.js模块一样使用。 (译注:addons: 扩展,为保持统一叫法,不予翻译) 说得这么好听,但是,为什么要我写C++代码,JavaScript已经让我很爽了,并且上一次看到C+…

Rock with async/await 本篇文章是作为上一篇的续集,考虑到第一篇的篇幅,还有更重要的一点就是上一篇讲的内容已经可以直接应用在最新版本的Node.js和一些高级浏览器(Chrome,FF)中,具体兼容性可参考:https://kangax.github.io/compat-table/es6/。 而这一篇讲的内容,是ECMAScript 2016(ES7)的async/await特性,目前的兼容性可参考:http://kangax.github.io/compat-table/esnext/#test-async_functions,虽然现在来看还不是非常乐观,但是我们可以通过第三方的代码转换工具(…

关于我 Hi, I am Mapping. 一名还在技术道路上不断修炼的无名小卒(亦或大卒,还不至于老卒)。技术方向由最初的微软系转向 Web 前端,现在给自己的定位,或者说是工作所迫,成为多面手的全栈工程师。 目前大致的技术栈如下: 以前就知识是应该学得更广,还是学得更精困扰过。那时更偏向于后者,因为梦想是成为某个领域的专家;但是工作后逐渐磨去了锋芒,各种需求劈头盖脸砸来,很难再独善其身,于是就委曲求全选择了前者,成不了专家那就成为多面手吧。 现在目标是让上面的雷达图网铺得更密,各个坐标点无限接近对应的顶点(当然这是不可能的,术业有专攻,有那么 4-5 个就好了)。 关于本站 本站使用 Ghost 搭建,…

新的开发同事入职,总是要去帮他们重新搭建开发环境,刚开始一两个倒觉得还好,花半天时间就可以搞定;但随着新加入人数越来越多,而且还经常会碰到同事电脑上的某个服务没启动,导致项目没法跑起来,又要帮忙调试,这些无脑的体力活也变得越来越冗长乏味。消除重复,是程序猿的天生职责,工作的重复也不例外。 于是我找到了Vagrant,其实早在2014年就听说,只是当时团队还很小,而且每个人都能驾驭自己的开发环境,所以没多留意,只是知道有这么个东西。现在回想,当时真是目光短浅,早用起来就不会发上面那段牢骚了。下面进入正题。 什么是Vagrant? Vagrant为开发环境而生,是用于创建并配置轻量的、可重现的、可移植的开发环境。 为什么要用Vagrant? 据我了解,目前团队合作的开发环境大致分为三种: 第一种:每个人的电脑都有一套独立配置的开发环境。这种方式如果在项目中需要依赖一个新的服务,那所有人的电脑都要挨个装个遍,虽然这个情况不会经常出现,…

本文通过一个简单的需求:读取文件并备份到指定目录(详见第一段代码的注释),以不同的js代码实现,来演示代码是如何变优雅的。对比才能分清好坏,想知道什么是优雅的代码,先看看糟糕的代码。 不优雅的代码是什么样的? 1、 回调地狱 /** * 读取当前目录的package.json,并将其备份到backup目录 * * 1. 读取当前目录的package.json * 2. 检查backup目录是否存在,如果不存在就创建backup目录 * 3. 将文件内容写到备份文件 */ fs.readFile('./package.json', function(err, data) { if (err) { console.error(err)…