这是我参与「第五届青训营 」笔记创作活动的第10天。
介绍
Node.js 在其标准库中提供了一组异步的 I/O 原语,以防止 JavaScript 代码阻塞,库是使用非阻塞范式编写的,使得阻塞行为成为异常而不是常态。执行 I/O 操作时,Node.js 将在响应返回时恢复操作(而不是阻塞线程和浪费 CPU 周期等待)。得以处理数千个并发连接,npm引入库更加方便。使用一种语言编写所有东西(前端和后端)的舒适性。
学习前的基础知识
异步编程和回调nodejs.cn/learn/javas…
Promise nodejs.cn/learn/under…
闭包
入门教程
安装之后,node app.js 运行你的程序
REPL 也被称为运行评估打印循环,是一种编程语言环境(主要是控制台窗口),它使用单个表达式作为用户输入,并在执行后将结果返回到控制台。
我们可以通过REPL来了解一些js类的属性和方法
尝试输入 JavaScript 类的名称,例如 Number,添加一个点号并按下 tab。
全局变量
通过输入 global. 并按下 tab,可以检查可以访问的全局变量:
%s 会格式化变量为字符串 %d 会格式化变量为数字 %i 会格式化变量为其整数部分 %o 会格式化变量为对象
清空控制台 console.clear() 会清除控制台(其行为可能取决于所使用的控制台)。
元素计数 console.count() 是一个便利的方法。
打印堆栈踪迹 在某些情况下,打印函数的调用堆栈踪迹很有用,可以使用 console.trace() 实现
计算耗时 可以使用 time() 和 timeEnd() 轻松地计算函数运行所需的时间
创建进度条 Progress 是一个很棒的软件包,可在控制台中创建进度条。 使用 npm install progress 进行安装。 以下代码段会创建一个 10 步的进度条,每 100 毫秒完成一步。 当进度条结束时,则清除定时器:
const bar = new ProgressBar(':bar', { total: 10 })
const timer = setInterval(() => {
bar.tick()
if (bar.complete) {
clearInterval(timer)
}
}, 100)
模块功能
Node.js 文件可以导入其他 Node.js 文件公开的功能。
导入:const library = require('./library')但是只能导入公开文件,这个时候可以使用两种方式来把文件导出
第一种方式是将对象赋值给 module.exports(这是模块系统提供的对象),这会使文件只导出该对象:
brand: 'Ford',
model: 'Fiesta'
}
module.exports = car
//在另一个文件中
const car = require('./car')
第二种方式是将要导出的对象添加为 exports 的属性。这种方式可以导出多个对象、函数或数据:
exports.car = {
brand: 'Ford',
model: 'Fiesta'
}
module.exports 和 export 之间有什么区别?
前者公开了它指向的对象。 后者公开了它指向的对象的属性。