到底什么是node.js

如果你去年注意过技术方面的新闻,我敢说你至少看到node.js不下一两次。那么问题来了“node.js是什么?”。有些人没准会告诉你“这是一种通过JavaScript语言开发web服务端的东西”。如果这种晦涩解释还没把你搞晕,你没准会接着问:“为什么我们要用node.js?”,别人一般会告诉你:node.js有非阻塞,事件驱动I/O等特性,从而让高并发(high concurrency)在的轮询(Polling)和comet构建的应用中成为可能。

我百度到的node.js :
Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。

当然这说的比较笼统,大家接着耐心的往下看;

什么是V8引擎?:
V8 JavaScript 引擎是 Google 用于其 Chrome 浏览器的底层 JavaScript 引擎。很少有人考虑 JavaScript 在客户机上实际做了些什么?
实际上,JavaScript 引擎负责解释并执行代码。

Node 本身运行 V8 JavaScript。服务器上的 JavaScript?没错,你没有看错。我们以往只在客户机上使用 JavaScript ,服务器端 JavaScript 可能是一个新概念,但这个概念本身并非遥不可及,因此为何不能在服务器上使用客户机上使用的编程语言?

下面我举一个在网上看到的一个别人举得小例子,能够帮助大家快速的理解node.js:

想泡壶茶喝。当时的情况是:开水没有;水壶要洗,茶壶茶杯要洗;火生了,茶叶也有了。怎么办?
办法甲:洗好水壶,灌上凉水,放在火上;在等待水开的时间里,洗茶壶、洗茶杯、拿茶叶;等水开了,泡茶喝。

办法乙:先做好一些准备工作,洗水壶,洗茶壶茶杯,拿茶叶;一切就绪,灌水烧水;坐待水开了泡茶喝。

办法丙:洗净水壶,灌上凉水,放在火上,坐待水开;水开了之后,急急忙忙找茶叶,洗茶壶茶杯,泡茶喝。

哪一种办法省时间?我们能一眼看出第一种办法好,后两种办法都窝了工。… 从这上可以一眼看出,办法甲总共要16分钟(而办法乙、丙需要20分钟)。…看来这是“小题大做”,但在工作环节太多的时候,这样做就非常有必要了。

…来源:华罗庚 统筹方法_百度文库

我们在用浏览器访问服务器的时候,就好像去茶叶铺买茶喝。
我们可以买回来自己沏,也可以在店里自带的茶座儿坐下来喝现成的。
如果我们买回来喝,参考华老师的课文,他自己都说了这是「小题大作」,因为16分钟和20分钟差不了太多,就我们自己和家人,慢生活4分钟也没什么毛病。但是如果我们在店里喝,那可不是咱一家儿等着。
比起16分钟的最少等候时间,第一桌多等4分钟,第二桌要同时来的话得多等24分钟,第三桌站起来走了,20多张桌子都闲着。忙活了半天,茶客不耐烦,茶铺不赚钱。

所以,茶叶铺不仅对于同一桌的不同请求要统筹安排,别认死理一件事不干完绝不开始下一件,甚至对于不同桌的不同请求也要尽量并行处理,比如等开水时可以帮好几桌点单、拿茶叶、洗茶杯茶壶,水开之前别闲着,水一开就给各桌上茶,让每桌客人都感觉嗖快嗖快的。

在这个故事里,
茶叶铺就是网络服务器。
我们自己就是浏览器。
我们要是不想浏览器事必躬亲,那就把活扔给服务器干;
当服务器一下子服务很多浏览器时就不能认死理非要串行操作,要灵活统筹,同时开始几件事,哪件完事关闭哪件。

这三个特征用江湖切口说就叫:
**服务器端JavaScript处理:server-side JavaScript execution
非阻断/异步I/O:non-blocking or asynchronous I/O
事件驱动:Event-driven**

总结:

Node.js是一个服务器端的、非阻断式I/O的、事件驱动的JavaScript运行环境,能够使得javascript脱离浏览器运行。

end

猜你喜欢

转载自blog.csdn.net/heshuaicsdn/article/details/78923476