使用 Node.js 需要了解多少 JavaScript

  • JavaScript 概念:
    词汇结构
    表达式
    类型(string,number,boolean,ES6以后 symbol set map)
    类(class this为public var为private)
    变量(var,const,let)
    函数
    this
    箭头函数
    循环
    作用域
    数组
    模板字面量(使用反引号```(back-tick)包裹,并允许字符串中的内嵌表达式${expression})
    分号
    严格模式(比普通模式多一部分的js规则,js一般默认是普通模式,ES6的模块和Class类默认是严格模式)
    ECMAScript 6、2016、2017
    牢记这些概念,您就可以成为一名精通浏览器和 Node.js 的 JavaScript 开发人员。

  • 以下概念也是理解异步编程的关键,异步编程是 Node.js 的基本组成部分之一:
    异步编程和回调
    定时器
    Promise(通常被定义为最终会变为可用值的代理。一种处理异步代码(而不会陷入回调地狱)的方式。)
    Promise 如何运作
    当 promise 被调用后,它会以处理中状态开始。 这意味着调用的函数会继续执行,而 promise 仍处于处理中直到解决为止,从而为调用的函数提供所请求的任何数据。
    被创建的 promise 最终会以被解决状态或被拒绝状态结束,并在完成时调用相应的回调函数(传给 then 和 catch)。
    异步和等待
    ES2017 以来,异步的 JavaScript 使用 async/await 语法甚至更加简单。

将异步回调函数转换成返回promise函数

return new Promise((resolve, reject) => {
// 初始化promise状态为padding
// 执行异步操作
if(异步操作成功){
resolve(value) // 修改promise的状态为fullfiled
} else {
reject(errMsg) // 修改promise的状态为rejected
}
})

或者使用util的函数来转

const promisified = util.promisify(doSomething);

http://nodejs.cn/api/util.html#custom-promisified-functions
闭包
事件循环

  • module.exports 和 export 之间有什么区别?
    前者公开了它指向的对象。 后者公开了它指向的对象的属性。
    export.car = car
    下面的方式见的多一点
    module.exports = car module.exports = { car, people, animal }

http://nodejs.cn/learn/how-much-javascript-do-you-need-to-know-to-use-nodejs