我是靠谱客的博主 诚心水蜜桃,最近开发中收集的这篇文章主要介绍Nodejs的理解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Nodejs是什么?它是js的运行环境(和java上的jre有点像),可以让js脱离浏览器运行。

以下是在知乎上看到一篇文章对nodejs的理解比较好,就转载了。

作者:厂长
链接: https://www.zhihu.com/question/33578075/answer/56951771

在传统的Web服务器(Apache)中,浏览器对服务器的每个请求都点击打开链接会让服务器建一个新的进程来处理请求。传统服务器每次有新用户连到你的网站上,你的服务器就得开连接,每个连接都占进程,大部分时间进程都闲着(等着新鲜事物的发生),如果连接数量太多,服务器会耗光内存瘫痪掉。

然后有了Ajax,这样不用每次都请求完整页面了,只请求需要的部分信息(比如刷新朋友圈),这个需要用户和服务器保持长轮询(long polling)。

http请求不是连续的连接,你请求一次,服务器就响应一次。只要页面载入了,不管需不需要服务器响应信息,你都会发Ajax给服务器,服务器也不会立即给你响应,当有新鲜事物发生时在给你响应,然后收到响应后你立即又发Ajax给服务器,这样你的浏览器始终在等待响应。

这种情况怎么解决?解决方法就是刚才上边说的:非阻塞事件驱动。这些概念在我们谈的这个情景里面其实没那么难理解。你把非阻塞的服务器想象成一个loop循环,这个loop会一直跑下去。一个新请求来了,这个loop就接了这个请求,把这个请求传给其他的进程(比如传给一个搞数据库查询的进程),然后响应一个回调(callback)。完事了这loop就接着跑,接其他的请求。这样下来。服务器就不会像之前那样傻等着数据库返回结果了。


如果数据库把结果返回来了,loop就把结果传回用户的浏览器,接着继续跑。在这种方式下,你的服务器的进程就不会闲着等着。从而在理论上说,同一时刻的数据库查询数量,以及用户的请求数量就没有限制了。服务器只在用户那边有事件发生的时候才响应,这就是事件驱动。


FriendFeed是用基于Python的非阻塞框架Tornado 来实现上面说的新鲜事功能的。不过,Node.js就比前者更妙了。Node.js的应用是通过javascript开发的,然后直接在Google的变态V8引擎上跑。用了Node.js,你就不用担心用户端的请求会在服务器里跑了一段能够造成阻塞的代码了。因为javascript本身就是事件驱动的脚本语言。你回想一下,在给前端写javascript的时候,更多时候你都是在搞事件处理和回调函数。javascript本身就是给事件处理量身定制的语言。


Node.js还是处于初期阶段。如果你想开发一个基于Node.js的应用,你应该会需要写一些很底层代码。但是下一代浏览器很快就要采用WebSocket技术了,从而长轮询也会消失。在Web开发里,Node.js这种类型的技术只会变得越来越重要。



最后

以上就是诚心水蜜桃为你收集整理的Nodejs的理解的全部内容,希望文章能够帮你解决Nodejs的理解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(27)

评论列表共有 0 条评论

立即
投稿
返回
顶部