一、什么是Node

135 阅读2分钟

什么是node.js

  • Node.js是一个基于V8 JavaScript 引擎的JavaScript 运行时的环境

浏览器内核是什么

  • GECKO 早期网景和火狐浏览器使用
  • Trident IE4~IE11 浏览器使用
  • Webkit Safari浏览器使用
  • Blink Chrom、Chrome、Edge、Opera浏览器使用

浏览器内核指的就是浏览器的排版引擎

  • 排版引擎、也成为了浏览器引擎、页面渲染引擎或样板引擎

渲染引擎工作的原理

image.png

JavaScript运行原理 juejin.cn/post/707390…

浏览器和Node.js架构区别

image.png

Node.js架构

  • 我们编写的JavaScript代码会经过V8引擎,再通过Node.js的Bindings,将任务放到Libuv的事件循环中
  • libuv( Unicorn Velociraptor—独角伶盗龙)是使用C语言编写的库
  • libuv提供了事件循环、文件系统读写、网络IO、线程池等等内容

image.png

Node的版本工具

快速更新或切换多个版本时,可以借助于一些工具

  • nvm: Node Version Manager
  • n: Interactively Manage Your Node.js Versions(交互式管理你的Node.js版本) (以上两个都不支持windows)

常见的全局对象

image.png

process对象: process提供了Node进程中相关的信息:

  • 比如Node的运行环境、参数信息等;

console对象

  • 提供了简单的调试控制台

定时器函数:在Node中使用定时器有好几种方式:

  • setTimeout(callback, delay[, ...args]): callback在delay毫秒后执行一次;

  • setInterval(callback, delay[, ...args]): callback每delay毫秒重复执行一次;

  • setImmediate(callback[, ...args]): callback I/O事件后的回调的“立即”执行;

  • process.nextTick(callback[, ...args]):添加到下一次tick队列中;

global对象

  • 是一个全局对象,事实上前端我们提到的process、 console、 setTimeout等都有被放到global中

global和window的区别

在浏览器中,全局变量都是在window上的,比如有document、 setInterval、 setTimeout、 alert、 console等等

  • 在Node中,我们也有一个global属性,并且看起来它里面有很多其他对象。

  • 但是在浏览器中执行的JavaScript代码,如果我们在顶级范围内通过var定义的一个属性,默认会被添加到window 对象上:

  • 但是在node中,我们通过var定义一个变量,它只是在当前模块中有一个变量,不会放到全局中:

特殊的全局对象

  • 这些全局对象可以在模块中任意使用,但是在命令行交互中是不可以使用的;

    • 包括: __dirname、 __filename、 exports、 module、 require()
  • __dirname:获取当前文件所在的路径:

    • 注意:不包括后面的文件名
  • __filename:获取当前文件所在的路径和文件名称:

    • 注意:包括后面的文件名称