Windows 系统安装 node.JS 后有个执行程序 node.exe, 这是 Node.JS 的启动程序, 它负责引导整个 JS 引擎启动起来, 读取配置, 初始化环境.
在我们安装好 node 后在 node 根目录下有一个 node.exe 程序:
这是 Node.JS 的启动程序, 我们可以通过双击此程序来引导整个 JS 引擎启动起来, 读取配置, 初始化环境.
双击后效果如下:
Node.JS 区别于传统应用的特点:
1. 异步事件驱动
2. 非堵塞 I/O
3. 单线程 (这里指主线程)
4. 性能出众
接下来就对以上 4 点进行简单的阐述:
一, 事件驱动
首先, 解释下 "事件驱动" 这个概念. 所谓事件驱动, 是指在持续事务管理过程中, 进行决策的一种策略, 即跟随当前时间点上出现的事件, 调动可用资源, 执行相关任务, 使不断出现的问题得以解决, 防止事务堆积.
Node.JS 设计思想中以事件驱动为核心, 事件驱动在于异步回调, 他提供的大多数 API 都是基于事件的, 异步的风格. 而事件驱动的优势在于充分利用系统资源, 执行代码无须阻塞等待某种操作完成, 有限的资源用于其他任务.
事件驱动机制是通过内部单线程高效率地维护事件循环队列来实现的, 没有多线程的资源占用和上下文的切换.
二, 异步, 非堵塞 I/O
Node.JS 提供的很多模块中都是异步执行的. 比如, 文件操作的函数.
一个异步 I/O 的大致流程:
1. 发起 I/O 调用
1用户通过 JS 代码调用 Node.JS 的核心模块, 将回调函数和参数传入核心模块
2将回调函数和参数封装成
2. 执行回调
1操作完成将结果储存到请求对象的 result 属性上, 并发出完成通知.
2循环事件, 如果有未完成的, 就在进入对象请求 I/O 观察者队列, 之后当做事件处理;
三, 单线程
Node.JS 跟 Nginx 一样都是单线程为基础的, 这里的单线程指主线程为单线程, 所有的阻塞的全部放入一个线程池中, 然后主线程通过队列的方式跟线程池来协作.
我们写 JS 部分不需要关心线程的问题, 简单了解就可以了, 主要由一堆 callback 回调构成的, 然后主线程在循环过在适当场合调用.
四, 性能出众
底层选择用 c++ 和 v8 来实现的, 上面第一点讲到过, Node.JS 的事件驱动机制, 这意味着面对大规模的 http 请求, Node.JS 是凭借事件驱动来完成的, 性能部分是不用担心的, 并且很出色.
来源: http://www.css88.com/qa/node-js/12089.html