Node.js只支持单线程,故不会产生死锁,采用非阻塞I/O机制和事件环机制。很是适合与开发须要处理大量并发的输入/输出的应用程序。node
一. Node.js的核心模块有不少,这里先写几个比较经常使用的(目前我我的较经常使用的,不表明大众):
1.buffer:用于实现二进制数据的存储和转换;
2.child-process:用于实现子进程的建立与管理;
3.console:用于控制台输出信息;
4.events:用于为事件处理提供一个基础类;
5.fs:用于操做文件及文件系统;
6.http:用于实现HTTP服务器端及客户端;
7.https:用于实现HTTPS服务器端及客户端;
8.path:用于处理文件路径;
9.string_decoder:用于实现从二进制数据到字符串数据之间的转换;
10.url:用于实现URL字符串的解析与格式化。
二.Node.js中有如下几个追加的类、函数及对象能够在不引用任何模块的状况下使用:
1.buffer类:用于为二进制数据的存储提供一个缓存区;
2.setTimeout函数:
3.clearTimeout函数:
4.setInterval函数:
5.clearInterval函数:
6.require对象:用于加载模块;
7.module对象:用于访问模块信息;
8.process对象:用于访问进程信息。
三.REPL
REPL是Node.js提供的一个交互式运行环境。在命令行窗口输入“node”命令并按下回车便可进入REPL运行环境,REPL运行环境中的命令提示符默认为“>”。
1.在REPL运行环境中,能够经过下划线“_”来访问最近使用的表达式;
2.在REPL运行环境中的基础命令:npm
四.Node.js中经常使用的方法及函数
1.console.dir:用于查看一个对象中的内容并将该对象的信息输出到控制台中;
2.console.time方法与console.timeEnd方法:统计一段代码的执行时间。console.time用于标记开始时间,console.timeEnd用于标记结束时间。并将通过的毫秒数输出到控制台;使用方法:
console.time(label) console.timeEnd(label)
这两个方法的参数必须相同,参数值能够是任何字符串。
3.console.assert方法:用于对一个表达式的执行结果进行评估,若是该表达式的执行结果为false。则输出一个消息字符串,并抛出AssertError异常。
4.使用require.resolve函数查询完整模块名:(只作查询,不加载)
用法,例: require.resolve("./test.js");
5.require.cache对象:该对象表明缓存了全部已被加载模块的缓存区。能够用“console.log(require.cache)”来查看。
五.Node.js中的包
一个包中一般包含如下内容:
1.包的根目录中存放package.json文件;
2.在lib子目录中存放Javascript文件;
3.在bim中存放二进制文件;
4.在doc中存放对包和包的只用方法的说明文件;
5.在test子目录中存放一些测试用的文件。
package.json文件中包含的字段及做用:
name:包名,包名必须是惟一的,由小写字母、数字、下划线组成,不能有空格;
preferglobal:是否支持全局安装,true为支持,false为不支持;
description:包说明;
version:版本号;
author:做者信息;
repository:仓库托管地址数组;
dependencies:本包所依赖的包,是一个关联数组,有包名和版本号组成;
npm包管理工具:
1. npm root -g //查看Node.js的全局包的安装路径
2. npmconfig set prefix “d:\node” //修改Node.js的全局包的安装路径到“d:\node\node_modules”;
3. npmlist //查看当前目录下安装的全部包,若要查看全局,加“-g”;
4.npm uninstall <包名> //卸载当前目录下的某个包,若要卸载全局中的,在包名前加“-g”;
5. npm update <包名> //更新当前目录下的某个包,若要卸载全局中的,在包名前加“-g”.json