作为一个技术小白,我最近在学习node,发现对于node的定义很迷茫,特作此记录
官方解释:
Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。
V8引擎执行Javascript的速度非常快,性能非常好。 [1] Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
其实我不是很懂这个概念,因为我的计算机网络没学好,但我还是想先记录下来
下面我举一个在网上看到的一个别人举得小例子,能够帮助大家快速的理解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
以上都来自 heshuaicsdn的博客
我觉得这个例子很形象,可能是我比较适合这种举例说明吧
所以,node.js到底是什么?
Node.js是一个服务器端的、非阻断式I/O的、事件驱动的JavaScript运行环境,能够使得javascript脱离浏览器运行。