您的位置:首页 > Web前端 > Node.js

Node.js背后的技术体系和设计理念

2013-08-21 23:55 381 查看
上篇文章谈到Node.js在Cygwin和VS2010下的组合编译,费了点周折,还是编译成功

接下来看一看node.js背后的技术和设计理念

一:设计理念

快速构建网络服务及应用的平台

Node.js对网络协议和服务的封装,最终转换为内置的JavaScript语言体系的服务端支持,当然JavaScript作为动态的解释型语言,支持对象和结构化编程;

而这些必须依赖一个能够运行JavaScript的引擎

作为应用的平台,JavaScript是公认的浏览器语言,至今支持更多的应用,尤其HTML5的诞生;让JavaScript能够在服务端运行在JVM虚拟机上早已经OK,而Node.js对

V8的API的封装,让非JVM平台的服务端也能够运行JavaScript.

二:技术参数

高性能

事件驱动【事件循环】,通过“非阻塞”库来支持事件循环

RESTful
API

单线程避免多线程带来的问题,[这个的确不是JavaScript的强项,Java的多线程也是建立在对底层操作系统之上的,通过虚拟机来完成,如果V8引擎够强大,支持多线程也不是难题]

三:模块化

在编译Node.js时,在/lib下包含了一系列的*.js包括

_debugger.js
调试

_linklist.js
链接表

_stream_xxxx.js流的系列库

assert.js断言

buffer.js

child_process.js子进程

cluster.js集群

console.js控制台

constants.js常量

crypto.js

dgram.js

dns.js

domain.js

events.js事件

freelist.js自由链表

fs.js

http.js

https.js

modules.js模块化

net.js

os.js

path.js

punycode.js

querystring.js

readline.js

stream.js

string_decoder.js

sys.js

timers.js

tls.js

tty.js

url.js

util.js

vm.js

zlib.js

通过这些*.js就可以看到Node.js所支持的模块化已经到什么程度了

http://www.nodecloud.org/你还能够发现更多

了解网页编程中的JavaScript的知道JavaScript在浏览栏器中window,document,这些对象也是依赖浏览器内置的JavaScript的

引擎才支持的。

所以这些lib/*.js当然也离不开node.js的平台的支持

看看src下的源码,可以看到多个**_wrap.h,**_wrap.cc的封装类

包括

udp_wrap.h

tty_wrap.h

timer_wrap.cc

tcp_wrap.h

stream_wrap.h

signal_wrap.cc

req_wrap.h

process_wrap.cc

pipe_wrap.h

handle_wrap.h

fs_event_wrap.cc

cares_wrap.cc

通过这些wrap可以想象Node.js已经为服务端的JavaScript提供的最低层的网络系统的支持tcp,udp,stream,pipe,process,tty等。

接下来看看其他的h或者cc文件

这类文件通常以
node_开头

node_string.h

node_version.h

node_stat_watcher.h

node_script.h

node_os.h

node_object_wrap.h

node_natives.h

node_javascript.h

node_internals.h

node_http_parser.h

node_file.h

node_extensions.h

node_dtrace.h

node_crypto_groups.h

node_crypto.h

node_counters.h

node_constants.h

node_buffer.h

node_zlib.cc

这些头文件或者类文件复制node平台的建设

还有一部分为v8xxxx.*的文件

v8abbr.h

v8_typed_array_bswap.h

v8_typed_array.h

以及

tree.h和ngx-queue.h

这些是对V8
API的封装或者树、队列的封装。

接下来会进一步分析node.js的设计思路,有待进一步完善......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: