什么是node.js
- Node.js是一个基于V8 JavaScript 引擎的JavaScript 运行时的环境
浏览器内核是什么
- GECKO 早期网景和火狐浏览器使用
- Trident IE4~IE11 浏览器使用
- Webkit Safari浏览器使用
- Blink Chrom、Chrome、Edge、Opera浏览器使用
浏览器内核指的就是浏览器的排版引擎
- 排版引擎、也成为了浏览器引擎、页面渲染引擎或样板引擎
渲染引擎工作的原理
JavaScript运行原理 juejin.cn/post/707390…
浏览器和Node.js架构区别
Node.js架构
- 我们编写的JavaScript代码会经过V8引擎,再通过Node.js的Bindings,将任务放到Libuv的事件循环中
- libuv( Unicorn Velociraptor—独角伶盗龙)是使用C语言编写的库
- libuv提供了事件循环、文件系统读写、网络IO、线程池等等内容
Node的版本工具
快速更新或切换多个版本时,可以借助于一些工具
- nvm: Node Version Manager
- n: Interactively Manage Your Node.js Versions(交互式管理你的Node.js版本) (以上两个都不支持windows)
常见的全局对象
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:获取当前文件所在的路径和文件名称:
-
注意:包括后面的文件名称
-