初学Node.js

每接触一门新的知识,内心都有些许忐忑,总担心学不好,所以都认真听老师讲,但是即使那样小心翼翼,在一阶段知识学完后,总觉得学的不够活,而且用着用着都不知道这到底是用来干嘛的了。究其根源,还是知识没有学活,没有认真思考和运用。

虽然在用着说着Node.js,名字是挺洋气的,但是到底是什么呢?查了查资料,了解到,其实它是一个服务器程序,基于javascript的解释器。javacript最初是运行在浏览器上,它可以使用在不同的上下文中,而Node.js其实就是js的另外一种上下文,它可以在后台运行js代码,就是服务器端的js。Node本身运行V8 javascript,V8 javascript引擎是谷歌用于其Chrome浏览器的底层JavaScript引擎。在客户端,JavaScript引擎负责解释并执行代码,谷歌创建了一个用C++编写的超快解释器,该解释器拥有另一个独特特征;可以下载该引擎并将其嵌入任何 应用程序。V8 JavaScript 引擎并不仅限于在一个浏览器中运行。因此,Node 实际上会使用 Google 编写的 V8 JavaScript 引擎,并将其重建为可在服务器上使用。

同时,基础 Node 产品肯定不 像 Apache 或 Tomcat。(apache:侧重于http server ;tomcat:侧重于servlet引擎,如果以standalone方式运行,功能上与apache等效,支持JSP,但对静态网页不太理想;apache是web服务器,tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。换句话说,apache是一辆卡车,上面可以装一些东西如html等。但是不能装水,要装水必须要有容器(桶),而这个桶也可以不放在卡车上。)本质上,那些服务器 “安装就绪型” 服 务器产品,支持立即部署应用程序。通过这些产品,您可以在一分钟内启动并运行一个服务器。Node 肯定不是这种产品。Apache 能通过添加一个 PHP 模块来允许开发人员创建动态 Web 页,添加一个 SSL 模块来实现安全连接,与此类似,Node 也有模块概念,允许向 Node 内核添加模块。实际上,可供选择的用于 Node 的模块有数百个之多,社区在创建、发布和更新模块方面非常活跃,一天甚至可以处理数十个模块。

主要好处:在Java和PHP这类语言中,每个连接都会生成一个新线程(一个进程可包含多个线程),每个新线程可能需要 2 MB 的配套内存。在一个拥有 8 GB RAM 的系统上,理论上最大的并发连接数量是 4,000 个用户。随着您的客户群的增长,如果希望您的 Web 应用程序支持更多用户,那么,您必须添加更多服务器。Node 解决这个问题的方法是:更改连接到服务器的方式。每个连接发射一个在 Node 引擎的进程中运行的事件,而不是为每个连接生成一个新的 OS 线程(并为其分配一些配套内存)。Node 声称它绝不会死锁,因为它根本不允许使用锁,它不会直接阻塞 I/O 调用。Node 还宣称,运行它的服务器能支持数万个并发连接。

基于事件驱动的回调函数,这样做可以实现Node并行处理事件的功能,回调函数是当有事件发生时执行,异步执行,所以并行执行方便。

函数可作为参数进行传递。





你可能感兴趣的:(初学Node.js)