作用:
1. Internet Browser(IE, FireFox, Chrome)
2. Web服务器(Apache)
内置的http模块可以用来开发Web服务器(类似Apache这种),也可以用来创建客户端发起http请求;
内置的net模块更加底层,可以用来开发Socket服务器,也可以创建客户端发起Socket请求。
特点:
1. 使用javascript作为主要的模块编程语言,但不仅限于javascript, 实际上Node.js可以使用任何语言来扩展模块(文本或二进制),注意Node本身使用C++实现的。
2. Node.js以模块的形式来管理,一个模块可能是一个文件,也可以是一个包(目录),以包的形式管理模块,可实现模块的独立性和可扩展性。包的定义符合CommonJS规范。
3. Node.js有一个包管理器npm-Node Package Manager,类似于Ubuntu下的apt-get命令,用来管理和发布扩展模块。
4. 根据作者所言,Node.js的设计目的是实现【 高性能的Web服务器】,因此Node.js的主要优点是 基于事件机制和 异步IO操作,这两点也是实现高性能服务器的基石。Node服务器是通过单进程下的单线程来实现高并发访问的服务器。
5. fs模块具有强大的的文件操作能力,这个在基于浏览器的javascript运行环境中是受到严格限制的(出于安全原因的考虑)。
6. buffer对象和stream对象很实用性的解决【流-二进制-文本】之间的关系。
7. http模块和net模块具有强大的网络操作能力,能够实现HTTP/SOCKET协议下的服务端和客户端程序。
1. Internet Browser(IE, FireFox, Chrome)
借助Google 的V8引擎,提供一套javascript解释器和执行环境。而运行NodeJS的命令也非常类似于Java,就是命令行下输入:
#node xxx.js param1 param2...
事实上,node.exe 命令确实是和平台相关的(对于win和linux,不同的操作系统内核,node在I/O异步和事件处理上是有着各自不同的底层实现的)2. Web服务器(Apache)
内置的http模块可以用来开发Web服务器(类似Apache这种),也可以用来创建客户端发起http请求;
内置的net模块更加底层,可以用来开发Socket服务器,也可以创建客户端发起Socket请求。
特点:
1. 使用javascript作为主要的模块编程语言,但不仅限于javascript, 实际上Node.js可以使用任何语言来扩展模块(文本或二进制),注意Node本身使用C++实现的。
2. Node.js以模块的形式来管理,一个模块可能是一个文件,也可以是一个包(目录),以包的形式管理模块,可实现模块的独立性和可扩展性。包的定义符合CommonJS规范。
3. Node.js有一个包管理器npm-Node Package Manager,类似于Ubuntu下的apt-get命令,用来管理和发布扩展模块。
4. 根据作者所言,Node.js的设计目的是实现【 高性能的Web服务器】,因此Node.js的主要优点是 基于事件机制和 异步IO操作,这两点也是实现高性能服务器的基石。Node服务器是通过单进程下的单线程来实现高并发访问的服务器。
5. fs模块具有强大的的文件操作能力,这个在基于浏览器的javascript运行环境中是受到严格限制的(出于安全原因的考虑)。
6. buffer对象和stream对象很实用性的解决【流-二进制-文本】之间的关系。
7. http模块和net模块具有强大的网络操作能力,能够实现HTTP/SOCKET协议下的服务端和客户端程序。
8. 具有强大的进程管理能力,process是全局对象,不是内置模块,因此可以在任何地方直接使用。
9. Node的API虽然在用户层面上是异步操作基于回调函数返回结果的方式,但从Node的实现底层上来讲,它仍然是将执行语句进行适当的解析、封装、处理等步骤后,丢入系统的线程池中执行的,换句话说,Node的底层操作是多线程的,但用户线程只有一个。
10. 在启动Node.js后,以Windows为例,Node会创建一个基于IOCP的事件循环loop的线程,该线程将一直处于后台运行状态;每次循环,它会调用IOCP相关方法检查线程池中是否有执行完的所谓的异步语句,如果有,就取出执行结果,并调用该语句所指派的回调方法,参看流程图