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的设计思路,有待进一步完善......
接下来看一看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的设计思路,有待进一步完善......
相关文章推荐
- Node.js背后的V8引擎优化技术
- 专访雪球网技术团队:用Node.js做前端的类SOA架构
- nodejs session 设计
- Node.js的学习历程五设计模式的解读
- node入门demo-Ajax让前端angularjs/jquery与后台node.js交互,技术支持:mysql+html+angularjs/jquery
- Arale 背后的一些设计理念(引)
- unity3d + photon + grpc + nodejs + postgis/postgresql 游戏服务器设计
- 微信高并发资金交易系统设计方案——百亿红包背后的技术支撑
- 【基于node.js+express的web开发备忘】--技术分享(TShare)站点-提问模块
- 基于人本理念的绩效管理体系设计(九)
- Node.JS + MongoDB技术浅谈
- 数据仓库系统的技术体系架构设计
- 质量体系——技术预研与设计
- Node.js 开发模式(设计模式)
- Node.js调试技术总结分享
- 技术栈的选择:从Groupon转向Node.js、淘宝去IOE谈起
- (pomelo系列入门教程)深入浅出node.js游戏服务器开发——Pomelo框架的设计动机与架构介绍
- 【基于node.js+express的web开发备忘】--技术分享(TShare)站点-话题讨论模块
- Node.JS + MongoDB技术浅谈