nodejs?

JavaScript火了

如果我没记错的话,JavaScript是去年的统计的最流行语言。
JavaScript作为函数式编程的代表体现了很多优点

函数式编程只描述在程序输入上执行的操作,不必使用临时变量保存中间结果。重点是捕捉 “是什么以及为什么”,而不是 “如何做”。与将重点放在执行连续命令上的过程性编程相比,函数式编程的重点是函数的定义而不是状态机(state machine)的实现。

不仅仅是浏览器需要JavaScript

javascript最早是使用在web前端,现在已经广泛应用于除了web前端,还包括一些使用cordova,ionic搭建的跨平台app开发中。但是由于JavaScript的事件驱动及异步IO等特性,也被服务器端青睐。所以nodejs应运而生了。

Node.js 是服务器端的 JavaScript 运行环境,它具有无阻塞(non-blocking)和事件驱动(event-driven)等的特色,Node.js 采用V8引擎,同样,Node.js实现了类似 Apache 和 nginx 的web服务,让你可以通过它来搭建基于 JavaScript的Web App。

nodejs作为服务端的优势
  • 传统服务器端的问题:阻塞(blocking)
    比如,在整个数据查询的过程中,当前程序进程往往只是在等待结果的返回,这就造成了进程的阻塞。对于高并 发,I/O密集行的网络应用中,一方面进程很长时间处于等待状态,另一方面为了应付新的请求不断的增加新的进程。这样的浪费会导致系统支持的用户数远远小于后端数据服务能够支撑的,成为了系统的瓶颈。而且这样的系统也特别容易被慢链接攻击(客户端故意不接收或减缓接收数据,加长进程等待时间)。

  • Node.js 最大的特点就是异步式 I/O(或者非阻塞 I/O)与事件紧密结合的编程模式。
    为了解决阻塞问题,Node.js引入事件处理机制解决这个问题。在查询请求发起之前注册数据加载事件的响应函数,请求发出之后立即将进程交出,而当数据返回后再触发这个事件并在预定好的事件响应函数中继续处理数据。 我们看到若按照这个思路解决阻塞问题,首先我们要提供一套高效的异步事件调度机制。而主要用于处理浏览器端的各种交互事件的JavaScript,相对于其他语言,至少有两个关键点特别适合完成这个任务:一是它是函数式语言,这个特性使得为事件指定回调函数变得很容易。特别是JavaScript还支持匿名函数。二是它支持闭包,可在函数运行时保持上下文状态。
    实际上node.js的各种API都会发出各种事件,使我们指定的回调函数在接收到事件时会被自动调用。而闭包可以让回调函数在运行时能够访问到主函数定义时的所处作用域内的所有变量。

  • node.js是为服务器端响应大量用户的并发请求设计的,对于单用户/多任务型应用不太理想。比如在提供图形界面的同时进行某些计算。
    node.js适用于I/O密集型而不是计算你密集型应用。受制于它的单线程特点,对于计算密集型的应用,例如某个事件的回调函数要进行复杂的计算,那么事件循环中的所有请求都必须等待。另外,由于node.js的控制流不是线性的,它被一个个事件拆散,所以,在处理复杂的逻辑时会变得过于复杂。

参考:http://blog.csdn.net/cike110120/article/details/12916573

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值