博客迁移
1. 异步
1.1. 尽量使用 async/await 方式实现异步
1.2. 使用回调方式时,回调函数的第一个参数应该是错误对象
并不是所有回调函数都需要将第一个参数设计为错误对象。但是一旦涉及异步,将会导致 try catch
无法捕获到异步回调期的异常。将第一个参数设计为错误对象,告知调用方是一个不错的约定。示例代码如下:}; ``` # 2. 类与模块 ## 2.1. 类继承 请使用 ES6 的 class 和 extends 关键词获得语言层面的继承支持 ```const EventEmitter = require('events'); class MyStream extends EventEmitter { write(data) { this.emit('data', data); } } const stream = new MyStream(); stream.on('data', (data) => { console.log(`接收的数据:"${data}"`); }); stream.write('使用 ES6'); ``` ## 2.2. 导出 所有供外部调用的方法或变量均需挂载在 exports 变量上。当需要将文件当做一个类导出时,需要通过如下的方式挂载: ```module.exprots = Class; ``` # 3. 注解规范 一般情况下,我们会对每个方法编写注释,这里采用 dox 的推荐注释,示例如下: ````/** * Queries some records * Examples: * ``` * query('SELECT * FROM table', function (err, data) { * // some code * }); * ``` * @param {String} sql Queries * @param {Function} callback Callback */ exports.query = function (sql, callback) { // ... }; ```` # 4. 声名变量时加 var 关键字,不污染环境