学过java的同学在接触前端的工程化时往往对nodejs这个词理解有点晕。
以下从一个java的学习者的角度来类比一下,给大家整理一下从java转学nodejs的思路。
nodejs如果我们用java中的东西来类比的话,那node就好比是一个jdk,熟悉Java的同学都知道JDK是由JVM和一些基础性的jar组成的。
那nodejs包含了一个执行javascript的引擎V8,可以理解成java的虚拟机JVM,负责对代JS代码进行执行。这样就可以让js代码脱离浏览器进行执行了。
大概提一下V8是个啥:V8是2008年谷歌出的浏览器时带的一个javascript执行引擎,因采用了实时编译技术因此提高了js的执行效率。
jdk除了提供JVM外其实还提供很多的已经实现的jar,如果操作文件的jar,事件机制,包括网络编程的socket,http等功能。
那对应的nodejs也提供了相关的功能包括操作文件的能力,网络编程的能力特别是webserver的编程的能力(例如 express 、koa等)可以类比成javaweb相关的编程能力。例如阿里的egg就是在koa上封装出来的web容器,可以类比一个jetty ,甚至以理解为一个springboot。
有了这些js的开发人员就可以自己的webserver了。
除了这些相似外 ,还有就是相关的打包工具和包管理工具也可以类比,例如 maven的包管理功能类似npm,maven的打包功能又有点像webpack