我们都知道Node.js现在受到了所有的关注。每个人都对学习Node.js感兴趣并希望在Node.js上工作。在开始使用一项技术之前了解其背后的概念永远不会错。但对于初学者来说,由于不同的人使用不同的定义,它可能会造成混淆。Node.js究竟是什么?它是一门新语言还是一个新框架,一个新工具还是一个简单的JavaScript文件?即使对于经验丰富的Java开发人员来说,Node.js也很难快速理解。因此,在本文中,我将尝试为Java开发人员解释Node.js。运行环境我们知道Java需要一个叫做JRE的运行环境来运行Java程序。JRE有一个称为Java虚拟机(JVM)的虚拟机。JVM有许多组件,如垃圾收集器(GC)、即时(JIT)编译器、解释器、类加载器、线程管理器、异常处理程序,以在不同时间执行不同的任务。除了JVM,JRE还有一系列库(例如rt.jar)来帮助运行Java程序。我们为不同的平台(如Windows、Macintosh和Linux)以及JVM提供了单独的JRE。好吧,只要试着记住如何编译和执行Java程序即可。我们有源代码(.java),它由Java编译器编译成称为字节码(.class)的中间代码。此字节码提供给JVM,以便在给定的目标平台上执行。JVM在执行之前将字节码转换为特定于目标平台的机器码。一个Java程序的执行可以用下图来解释:Web应用架构一个典型的JavaWeb应用架构有四层:客户层(Client)、表现层(Presentation)、服务/业务层(Service/Business)和数据层层(数据)。客户层(Clientlayer)可以使用像jQuery这样的库来支持AJAX功能,并有一些客户端验证和DOM操作。表示层(Presentationlayer)通常是与客户层交互的层。该层通常已经实现了用于请求和响应处理的MVC模式。可以在此级别使用诸如SpringMVC之类的框架。此外,还有一个模板引擎,例如Velocity,可以根据预定义的布局动态呈现视图。服务或业务层(Service/Businesslayer)负责拥有业务逻辑并与其他层通信。在AJAX请求的情况下,该层直接向客户端层提供数据。该层执行业务逻辑并响应表示层以更新模型。服务层是与数据层通信以获取或更新所需数据的层。服务层可以有使用任何框架的服务实现,例如Spring的SOAP或REST。数据层(数据层)通常使用一些ORM框架,如Hiberate,或任何基于JDBC的库/模板(SpringJDBC模板)与任意RDBMS(如Oracle)进行通信。架构部署JavaWeb应用程序架构部署包括ApacheHTTP服务器,它充当代理服务器并提供静态内容。动态内容由Web容器提供,它实际上是处理Java文件的引擎。下图说明了JavaWeb应用程序的架构部署:我如何理解Node.js?运行时环境我们上面讨论JRE的原因是为了与Node.js进行直接比较。是的,你明白了!Node.js不是一种语言;它不是一个框架;它不是工具。它是运行基于JavaScript的应用程序的运行时环境。与JRE类似,Node.js有一个名为JavaScript虚拟机(JsVM?)的虚拟机。它为基于JavaScript的应用程序生成机器代码,以在不同平台上启用它。Node.js还有一组库,可以称为NodeAPI或NodeModules,以帮助在运行时运行JavaScript应用程序,类似于JRE中的Java库。我们对Windows、Macintosh和Linux以及JsVM等不同平台有不同的Node.js要求。JavaScript虚拟机是V8,一个来自Google的开源JavaScript引擎。与Java虚拟机一样,JsVM(V8引擎)也有JIT和GC等主要组件,分别用于任务执行、运行时编译和内存管理。现在,让我们尝试了解JavaScript程序是如何编译和执行的。源代码是用JavaScript(.js)编写的。在将其提供给JsVM(V8引擎)之前不会生成任何中间代码。JsVM直接获取此源代码并将其编译为特定于给定目标平台的机器码以供执行。下图可以简洁地说明上面的解释:Web应用程序架构基于Node.js的Web应用程序主要遵循JavaWeb应用程序架构。主要区别在于客户端请求处理。客户端请求将由单个线程处理,但在Node.js应用程序的情况下是异步的。使用Java,每个客户端请求将由一个单独的线程同步处理,因此它是多线程的。有许多框架/库可用于基于Node.js的Web应用程序开发。这里有趣的是所有框架/库都是基于JavaScript的。您可以从下图中快速了解这些Node.js应用程序层中使用的不同层和框架/库。客户端层使用Angular.js,一个客户端MVC框架。可以使用基于JavaScript的Web应用程序框架Express.js开发表示层和服务层。它还带有一个用于运行Node.js应用程序的独立服务器。数据层使用Mongoose.js等对象数据建模模块与MongoDB等NoSQL数据库进行通信。这个特殊的堆栈称为MEAN,它由MongoDB、Express.js、Angular.js、客户端MVC框架和Node.js(运行时环境)组成。架构部署基于Node.js的Web应用程序的架构部署遵循Java的Web应用程序部署架构。它有一个NGINX服务器,充当HTTP代理服务器并提供静态内容。动态内容由Node.js服务器提供,其中包含用于处理JavaScript文件的引擎。下图解释了基于Node.js的Web应用程序的架构部署:就是这样吗?.js支持。此外,除了我们在讨论中涵盖的那些之外,还有许多不同的架构解决方案、框架和工具。为了便于比较和理解,我采用了最简单和最可行的架构解决方案以及最简单的框架和库系列。所以一定要深入挖掘。祝大家学习愉快!
