10 个技巧,2017 年成为更好的 Node 开发者

我会在这篇文章中简述 10 个技巧,帮助你在 2017 年成为更好的 Node 开发者。这些技巧有一些是我在实践中学习和领悟的,还有一些从优秀的 Node 和 npm 模块作者那里借鉴而来。本文的内容包含如下一些:

  1. 避免过于复杂 — 把代码按尽可能小的块来组织。

  2. 使用异步代码 — 避免像灾难一样的同步代码。

  3. 避免阻塞请求 — 把所有 require 语句放在文件的顶部,因为它们是同步的,会阻塞执行中的程序。

  4. 了解 require 会被缓存 — 这会在你的代码中起到正面或负面的作用。

  5. 总是检查错误 — 错误不是足球,不要抛弃错误,也不要跳过错误检查。

  6. 只在同步代码中使用 try…catch — try...catch 对异步代码无效,而且 V8 也不能像优化普通代码一样优化 try...catch。

  7. 返回回调或使用 if … else — 确定返回回调阻止继续执行程序。

  8. 监听错误事件 — 几乎所有 Node 的类/对象都从 EventEmitter 继承(观察者模式),并触发错误事件。请确认监听了这些事件。

  9. 了解 npm — 安装模块时使用 -S 或 -D,而不是 --save 或 --save-dev

  10. 在 package.json 中使用确定的版本:npm 会在你使用 -S 的时候选用默认版本,这很愚蠢。所以你需要手工修改版本号。不要相信 semver[译者注:语义化版本标准],但在开源模块中需要这样做。

  11. 加分 — 使用不同的依赖。把项目在开发阶段需要的东西放在 devDependencies 中,记得使用 npm i --production。多余的依赖越多,出现问题的风险就越大。

我们应该分别看待上述每一条,不是吗?

Viyi Viyi翻译于 1天前1人顶  翻译得不错哦! 

避免过于复杂

Isaac Z. Schlueter,是 npm 的创造者,我们来看看他写的代码。例如,用 use-strict 在模块中强制实施 JavaScript 严格模式,只需要三行代码:

var module = require('module')module.wrapper[0] += '"use strict";'Object.freeze(module.wrap)

为什么要避免复杂性呢?美国海军传说中,有一句短语很著名:化繁为简,返璞归真。(或者“保持简单,蠢货!”)。因为事实证明,人的大脑在同一时刻只能记忆 5 到 7 项内容。

把代码模块化为更小的部分,你和其它开发者才能更好的理解它。这样你也可以更好的测试它。看看这个例子:

app.use(function(req, res, nextif (req.session.admin === truereturn next()  else return next(new Error('Not authorized'))}, function(req, res, next{  req.db = db  next()})

或者这个:

const auth = require('./middleware/auth.js')const db = require('./middleware/db.js')(db)app.use(auth, db)

我相信大多数人会更喜欢第2个例子,尤其是在名称可以自解释的时候。当然,如果你在写代码,你会想知道它的工作方式。有时,你可能会耍耍小聪明,将多个方法在同一行里进行链式调用。不过,请按最简单的方式编写代码。因为在时隔 6 个月,或在你喝醉或极度兴奋的时候,再来看你写的这些代码,可能你自己都难以理解,更不用说那些不了解它的算法和复杂性的同事了。简单做事,尤其是在使用 Node 的异步方式的时候。