使用 ES2015。在 Node.js v6 版本已经支持 99% 的 ES2015 语法,这样你就可以放心去掉对 Babel 等转换工具的依赖,用 ES2015 写代码效率无疑将提升很多
使用 Promise。Node.js 中大量使用异步方法,使用 Promise 减少了 Callback Hell(回调地狱)风格的代码,让你的代码更具有可读性和可维护性;
遵照标准编写代码。团队里遵循按照同一个规范编写代码,减少移交项目所带来的成本;
使用 Docker 容器方式部署。Docker 容器能将代码、运行环境、工具库等隔离开来,具有轻量、更安全、易部署等优点;
监控应用运行状态。当应用发生异常时候,首先感知到的应该是维护者而不应是用户,可借鉴或使用 Prometheus 或者 Trace by RisingStack 等监控服务;
加强安全等级。在 2017 年,应用的安全性应该优先级最高任务之一,推荐阅读 Node.js Security Checklis(原文中有链接)逐一检查应用的安全项是否合格;
学习微服务。在接下来的 2017 年,微服务将继续保持热度,并将成为构建应用的主流架构,从今天开始这方面的资讯应当多了解;
文中还涉及到 多参加业界会议 、 使用语义化版本 、使用LTS Node.js 版本 等方面的实践建议,其中关于 “遵照标准编写代码” 方面,文中给出了一个非常霸气的 Github 项目 JavaScript Standard Style Guide,
module.exports vs exports
方法一:对module.exports赋值:
// hello.js
function hello() {
console.log('Hello, world!');
}
function greet(name) {
console.log('Hello, ' + name + '!');
}
function hello() {
console.log('Hello, world!');
}
module.exports = {
hello: hello,
greet: greet
};
// 用export的方法
// exports.hello = hello;
// exports.greet = greet;
但是你不可以直接对exports赋值:
// 代码可以执行,但是模块并没有输出任何变量:
exports = { hello: hello, greet: greet};
原因:Node的加载机制,是对export的赋值
如果要输出一个键值对象{},可以利用exports这个已存在的空对象{},并继续在上面添加新的键值;如果要输出一个函数或数组,必须直接对module.exports对象赋值。
结论:直接对module.exports赋值,可以应对任何情况:
module.exports = { foo: function () { return 'foo'; }};
或者:
module.exports = function () { return 'foo'; };
强烈建议使用module.exports = xxx的方式来输出模块变量,这样,你只需要记忆一种方法。