初识Node.js

Node.js简介

Node 定义

Node.js是一个建立在Chrome v8 引擎上的javascript运行时环境

Node 特点

  • 异步事件驱动
QRePV.jpg

node.js使用回调函数的方式来处理阻塞事件,node.js维护一个线程池,当遇到阻塞事件时,就从线程池中取出一个线程来执行阻塞事件,然后执行回调函数,线程归还线程池。

  • 非阻塞IO
  • 单线程
  • 可以通过 child_process.fork(modulePath[, args][, options]) API 实现多个线程
  • HTTP 在Node.js中是一等公民,Node.js非常适合Web应用

Node 架构

u1O2O.png

V8

Google开源的高性能javascript引擎,用作解释和执行javascript

libuv

高性能的事件驱动程序库,对Windows和Unix的一些底层平台特性进行了封装

C/C++组件库(c-ares http parser Open SSL Zlib等)

提供了对系统底层访问的功能

Node.js API

Node.js 提供使用的API

Node.js Bindings

胶水代码,将c/c++类库接口暴露给javascript

C/C++ Addons

动态链接对象,用于在Node.js和javascript以及C/C++之间提供接口

windows下Node安装目录结构

Node安装目录

node1.png

npm modules目录

Node2.png

Node API概括(v6.10.2)

Assertion Testing

断言测试

Buffer

操作二进制流

C/C++ Addons

动态链接对象,用于在Node.js和javascript以及C/C++之间提供接口

Child Processes

child_process模块提供了以与popen(3)相似但不完全相同的方式生成子进程的功能。 该功能主要由child_process.spawn()函数提供

Cluster

Node.js的单个实例在单个线程中运行。 为了利用多核系统,用户有时会想要启动一个Node.js进程的集群来处理负载。
Cluster 模块允许您轻松创建所有共享服务器端口的子进程

Command Line Options

Node.js配有各种CLI选项。 这些选项会公开内置调试,执行脚本的多种方式以及其他有用的运行时选项。

Console

控制台模块提供了一个简单的调试控制台,类似于Web浏览器提供的JavaScript控制台机制

Crypto

加密模块提供加密功能,其包括用于OpenSSL的哈希,HMAC,加密,解密,签名和验证功能的一组包装器。

Debugger

Node.js包括可通过基于TCP协议和内置调试客户端访问的进程外调试实用程序。 要使用它,启动带有调试参数的Node.js,后跟脚本的路径进行调试; 将显示提示,指示调试器成功启动

DNS

使用底层操作系统设施执行名称解析的功能

Domain

模块将被弃用。一旦替换API已经完成,该模块将被完全弃用。

Errors

用作错误处理

Events

Node.js事件API

File System

文件I/OAPI,由在标准POSIX功能上的简单包装器提供

Globals

所有模块都提供这些对象。 这些对象中的一些实际上并不在全局范围内,而在模块范围内

HTTP

Node.js Http接口,支持很多传统协议

HTTPS

HTTPS是TLS/SSL上的HTTP协议,在Node.js中单独使用一个模块来实现该协议

Modules

Node.js的简单模块加载系统

Net

异步网络包装器,用于实现服务端和客户端的网络通信的功能

OS

OS模块提供了一些与操作系统相关的方法

Path

提供文件或者路径处理的方法

Process

提供Node.js的进程处理以及进程信息获取等API,Process是全局的,不需要使用require()加载

Punycode

将被废弃,不建议使用

Query Strings

用于提供格式化和解析URL字符串的API

Readline

readline模块提供了从Readable流读取数据的接口

REPL

repl模块提供Read-Eval-Print-Loop(REPL)实现,该实现既可以作为独立程序使用,也可以包含在其他应用程序中

Stream

Stream 模块用于实现数据流处理的抽象接口,它提供了一个API,可以轻松构建流处理对象

String Decoder

提供API将buffer对象编码成字符串

Timers

定时器

TLS/SSL

tls模块提供了构建在OPENSSL上的传输层安全协议(TLS)和和安全套接层协议(SSL)

TTY

tty模块提供了tty.ReadStream和tty.WriteStream类

UDP/Datagram

dgram模块提供UDP数据报套接字的实现

URL

提供URL处理的API

Utilities

主要提供内部程序使用的基本方法,但是也可以被外部访问

V8

v8模块公开了特定于Node.js二进制内置的V8版本的API

VM

vm模块提供用于在V8虚拟机上下文中编译和运行代码的API

ZLIB

zlib模块提供使用Gzip和Deflate / Inflate等形式压缩功能

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,392评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,258评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,417评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,992评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,930评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,199评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,652评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,327评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,463评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,382评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,432评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,118评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,704评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,787评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,999评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,476评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,057评论 2 341

推荐阅读更多精彩内容