Skip to content

nodejs

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。 [1]

Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。

Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。Node是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

Node.js 主要由 V8、Libuv 和第三方库组成:

  • Libuv:跨平台的异步 IO 库,但它提供的功能不仅仅是 IO,还包括进程、线程、信号、定时器、进程间通信,线程池等。
  • 第三方库:异步 DNS 解析( cares )、HTTP 解析器(旧版使用 http_parser,新版使用 llhttp)、HTTP2 解析器( nghttp2 )、 解压压缩库( zlib )、加密解密库( openssl )等等。
  • V8:实现 JS 解析、执行和支持自定义拓展,得益于 V8 支持自定义拓展,才有了 Node.js。

架构

和Tomcat的区别

Nodejs是一个基于Chrome V8引擎的JavaScript运行环境,一个让JavaScript运行在服务端的开发平台。而Tomcat是一个应用服务器,一个免费的开放源代码的Web应用服务器,是广泛的jsp服务器。

当需要在console.log中打印中文:chcp 65001

node的模块查找策略

  • 当模块路径是绝对路径或相对路径时
  • 文件查找:当路径以绝对路径或相对路径书写时,去找这个文件,并会自动添加后缀查找js json
  • 文件夹查找:当文件查找找不到对应文件时,且有对应文件夹时,会进入文件夹,看package.json的main字段,若果没有则会使用index.js文件
  • 当模块是一个一般字符串
    • 内置模块:会查找看是不是内置模块
    • 第三方模块:不是一个内置模块,会去node_modules下查找,依次使用文件查找和文件夹查找
  • 找不到则报错

苏ICP备2025160170号-1 | 前端进化之路 | Released under the MIT License.