Node.js是当今最热门的技术之一,本文主要
介绍了Node.js的特点和应用场景。
js是一个基于
浏览器的Javascript
运行平台,这是用来方便地建立快速和易于
扩展的
网络应用,具有事件驱动的Node.js的援助,阻止我/ O模型变得轻便快捷的非,是数据密集型实时
应用程序运行在分布式设备非常适合。
1。特点
1.1异步I/O
所谓的异步I / O是相对于
同步我/ o.a很多我 / O
操作是在程序
执行的过程要求,如读写
文件,
输入和输出,请求响应,等等。一般来说,我 / O操作非常time-consuming.in传统编程模型,例如,你想读几G的文件,和整个
线程暂停,
等待文件读下去。换句话说,我 / O操作阻止代码的执行,大大降低了程序的效率。
异步I/O对前端工程师并不陌生,因为Ajax请求的
启动是最常见的异步调用,在节点中,读取文件(读取文件是一个耗时的I/O操作)作为示例,类似于编写Ajax请求:
复制代码代码如下所示:
VaR FS =需要('fs);
Fs.readFile( /
路径功能(呃,文件){
console.log(读取文件完成);
});
console.log('begin读取文件);
在代码中调用fs.readfile,后续的代码是立即执行,时间和读取的文件是不可预知的。当线程遇到我/ O操作,线程不等待的我/ O操作在一个封锁的方式结束,但只有发送我的I/O请求给操作
系统,继续执行后续语句。当
操作系统完成我 / O操作,线程是在一个事件中的一个事件通报的形式,和线程将在一个特定的时间过程中的事件。
1.2事件循环和回调
函数 所谓的活动周期意味着节点将使用事件机制
解决所有异步操作,和一个线程不断循环
检测事件队列,事件循环
检查是否有未
处理的事件队列中的事件直到项目结束。事件编程是轻量级的,松散耦合的,并且只关注交易点。然而,在多个异步
任务下,事件和事件是
独立的、协作的,在Javascript,回调函数是无处不在的,回调函数是接受异步调用返回数据的最佳方式。
1.3单线程
节点保持JS的单线程的浏览器的特征。单线程的最大优点是它并不在意国家同步,如死锁的存在和线程上下文切换成本。单线程也有它的缺点,主要表现在三个方面:无法使用多核CPU;误差会导致整个应用程序
退出,应用鲁棒性是
值得研究的,和很多的计算会占用CPU,导致它无法继续调用异步我 / O。
为了解决这一问题,节点使用相同的想法作为HTML5的网络
工作者,利用child_process解决单线程
运算量大的问题。通过分布计算每个子过程,大量的计算可以分解并通过过程之间的事件
消息。
1.4跨平台
节点是一个跨平台的,那就是,JS代码一样可以部署到运行在Windows,Linux,OSX和其他平台。这主要是由于一层建筑,libuv节点施工、操作系统和节点上的模块系统之间。
2。应用场景
1),实时应用:如在线
聊天、实时通知推送等(如socket IO)。
2)分布式应用程序:通过有效的
并行I/O来使用现有的数据
3)
工具类应用程序:大量的工具,小到前端
压缩部署(如咕噜),大到
桌面GUI应用程序
4)、
游戏类应用:游戏领域对实时性和并发性要求高(如网易柚子框架)
5)通过使用稳定的
界面来提高Web渲染能力。
6)在统一编程
语言环境结束前和结束后:前端开发人员可以很快地切入开发
服务器(例如著名的纯Javascript全堆栈平均架构)