今天写一篇水文,借用java平台中对应的概念,谈谈对node.js的理解
as a Runtime
node中最重要的组件或许是v8引擎(其他如libeio、libev初学者不需要关注)。这是一个javascript的运行环境,类似于java中的jvm。java代码需要运行在虚拟机里,同样javascript代码也需要一个运行的环境
在node出现之前,运行环境一般就是浏览器。但是有了node就不一样了,不借助浏览器,开发者同样可以得到一个javascript的运行环境。以前想写一段javascript代码执行,一般需要写一个空的html,然后用<script>引入js,在浏览器里跑。现在有了node,可以直接用node xxx.js的方式跑起来,比原来方便很多。所以,即使不准备用node写web app,用node来作为学习javascript的环境也是不错的选择
console.log("hello node");
当然,node环境毕竟不同于浏览器环境。node的top object是global,而不是浏览器的window,所以在浏览器里能执行的代码,在node里不一定能执行(比如DOM API),但是javascript的语法特征则是完全一致的
as a module system
node与浏览器里的javascript还有一个显著的不同,就是node支持模块,遵循CommonJS的模块规范。这点对于一个编程语言来说非常重要。在浏览器里,a.js想引用b.js里的代码,如果不借助框架,原生的办法只有依赖全局变量。比如自定义的js,使用jQuery框架的方式,就是依赖$变量,这是一个global function
在java里,通过import语句,就可以把其他编译单元的代码引用过来,但是js缺乏类似的机制。node通过模块化解决了这个问题,通过require(),module.exports,可以比较简单地实现模块划分和依赖,就类似于java平台的import
as a develop kit
jdk里提供了丰富的API,来支持各种编程任务。比如File来支持文件操作,Socket支持网络编程等,这原本是javascript缺乏的,主要原因是浏览器为了安全目的而故意不提供。这也造成javascript无法胜任服务端编程的工作。但是node提供了类似的丰富API,使得javascript也可以在server端完成这些工作了
比如:
HTTP API
File System API
这里node起的作用,就类似于jdk
as a webserver
以下几行代码,就可以启动一个最基本的http server
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
而在java平台,这需要一个servlet容器,比如tomcat,jboss等。这个时候,node就类似于java平台中的servlet container。这里说得太简单了,事实上,node的设计与tomcat等thread per request的设计有明显区别,node不仅是一个web server,而且是一个高性能的web server
as a specification
在java平台,开发web app需要遵循servlet规范,否则的话,开发者就需要自己处理http协议,线程管理……还需要自己实现一个服务器。但只要遵循servlet规范来开发,这些都是现成的,而且如果针对接口编程,还不需要绑定具体的容器,可以在servlet container中间件中自由选择。这是java平台规范的威力,但是有的时候也是负担,因为太笨重了
在node中开发一个web app明显没有这么复杂。事实上只有一种实现,所以也谈不上规范,因此也没有很多的server可供选择。究竟是node的简单小巧更好,还是java里由jcp牵头的非常繁杂的jsr更好呢?现在我也不太清楚。但在这里,node就类似于java规范,区别在于只有一种实现
as a framework
用servlet规范完全可以写出一个完整的web app,但是还有谁会这么做呢?一般都会在某种web框架的基础上开发,比如struts2,spring mvc等。同样,在node里只用http module来开发也没问题,但是有框架更好,比如express。所以,基于node的各种package module,就类似于java里的各种web框架
总结
第一次知道node大概是半年之前,那时候就问自己一个问题:node究竟是什么玩意,好像不止是个服务器,也不止是一堆开发API。现在有了更多一点的了解,还是感觉很难用一句话回答node是什么,所以用java里相似的概念,来形容一下node都能做什么
如果整体来比较的话,node应该和java一样,都是一个完整的平台,提供了执行环境、服务、API……但是目前有一个显著的区别,在于java的规范体系比node要更加成熟,所以中间件厂商非常地繁荣,任何一种规范都有很多厂商提供了实现,产品的选择余地很大,而且不与具体的实现耦合。在node里貌似就没有这个现象,反正就只有一种,也没什么可选的
此外利用npm,可以拿到各种各样的package module,质量也是良莠不齐,这点和java也是差不多,java平台上也有各种或好或坏的第三方库,同样需要开发者自己筛选鉴别
分享到:
相关推荐
通过详细研究这个"Node.js入门经典源代码"压缩包,新手开发者可以逐步理解Node.js的工作原理,并且能够动手实践,从而快速掌握Node.js开发技能。记得在实践中不断学习和调试,这是提升编程能力的关键。
《Node.js in Action》中文版是一本专门针对Node.js技术的实战指南,由业界知名人士“狼叔”推荐,旨在帮助读者深入理解和掌握这一强大的JavaScript后端开发平台。Node.js以其异步、非阻塞I/O模型和高效的性能在Web...
这个版本的文档是理解、学习和使用Node.js的关键资源,无论是新手还是经验丰富的开发者,都能从中受益匪浅。 首先,Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让开发者可以在服务器端编写JavaScript...
《Node.js开发实战详解》是一本深度探讨Node.js开发技术的专业书籍,旨在为读者提供一个全面、详实的学习路径,引领他们深入理解并熟练运用Node.js进行web开发。本书不仅适合初学者,也对有一定经验的开发者有很高的...
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript ...无论你是新手还是经验丰富的开发者,理解并熟练运用 `iconv-lite` 都将有助于提升你的 Node.js 应用程序质量。
总之,《Node.js 入门中文版》是一本全面而深入的教程,适合希望将JavaScript技能扩展到服务器端的开发者,无论你是JavaScript的新手还是资深程序员,都能从中获益。通过本书,你将掌握Node.js的核心理念,能够构建...
Node.js在IT行业中被广泛应用于构建可扩展的网络应用,其强大的异步处理能力使得它在...无论你是新手还是经验丰富的开发者,只要具备基本的Node.js知识,都能快速上手并利用这个库构建出高效、灵活的打印解决方案。
Node.js是基于Chrome V8引擎的JavaScript运行环境,它让JavaScript得以在服务器端运行,开辟了前后端统一语言的新时代。在"Node.js-NASA API的Node.js封装"这个项目中,开发者创建了一个名为`nasa-sdk-master`的库,...
读者对象是那些具备至少一门面向对象编程语言(如Ruby、Python、PHP、Java等)经验,但是对JavaScript还不太熟悉,尤其是对Node.js是新手的开发者。书中强调,并不会详细介绍基础的编程概念如数据类型、变量和控制...
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它以其高效、非阻塞I/O操作和事件驱动的特性在服务器端编程领域占据了一席之地。Node.js非常适合构建网络应用,包括HTTP客户端,它可以方便地发送HTTP请求并...
在技术层面,Hexo依赖于Node.js的生态系统,Node.js是一个JavaScript运行环境,利用了Chrome V8引擎,使得JavaScript可以用于服务器端编程。由于Node.js的非阻塞I/O模型和事件驱动的特性,Hexo具有较高的性能和响应...
这部分对于JavaScript新手尤为重要,确保他们能快速上手Node.js开发。 接下来,书里会深入讲解Node.js的模块系统,包括内置模块、核心模块和用户自定义模块的创建与使用。模块是Node.js组织代码的关键,理解和掌握...
Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程,从而打破了JavaScript只能在浏览器端使用的局限。本压缩包包含的书籍资源是关于Node.js学习的重要参考资料,...
总的来说,《Node.js开发指南》涵盖了Node.js从基础到进阶的各个方面,无论你是JavaScript新手还是希望转战服务器端的前端开发者,都能从中受益匪浅。通过阅读这本书,你将具备使用Node.js开发高效、可扩展的网络...
总之,《Node.js开发指南》是一本覆盖了Node.js从入门到进阶各个层面的书籍,无论是对JavaScript新手还是有经验的开发者,都能从中获得宝贵的指导和启示,帮助他们在Node.js的世界里游刃有余。通过阅读这本书,你将...
无论是对于想要入门Node.js的新手,还是希望进一步提升技能的开发者来说,这都是一本不可多得的好书。通过本书的学习,相信每位读者都能够迅速成长为一名合格的Node.js开发者,并能够在自己的项目中发挥出Node.js的...
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行编程,极大地推动了前端与后端技术的融合。"nodejs-zh-CN, node.js 中文化 & 中文社区.zip" 是一个针对 ...