当前位置: 首页 > 工具软件 > node-firefox > 使用案例 >

node-red、nodejs与JavaScript之间的区别与联系

申屠项明
2023-12-01


  JavaScript是一门编程语言(脚本语言),而Node.js是一个平台,可以简单理解为它是JavaScript的一种执行环境。node.js是一个javascript的运行平台。
  npm是JavaScript运行时,环境Node.js的默认包管理器。
区别与联系:
  第一,JavaScript是一门编程语言(脚本语言),而Node.js是一个平台,可以简单理解为它是JavaScript的一种执行环境。
  第二,JavaScript以前是在浏览器里执行的,需要浏览器里的JavaScript引擎,Firefox有叫做Spidermonkey的引擎,Safari有JavaScriptCore的引擎,Chrome有V8的引擎,
现在有人把Chrome有V8的引擎的引擎拿出来做了包装,加入了 内置基本模块(大多用JavaScript编写),就构成了Node.js。
  第三,Node.js可以说是JavaScrip的一种独立于浏览器的运行环境。
  第四,JS运行在浏览器端,用于用户的交互效果,NodeJS运行在服务器端,用于服务器的操作,例如,Web服务器创建,数据库的操作,文件的操作等
  第五, JS运行在浏览器端,存在多个JS解释器,存在兼容性的问题;而 NodeJS只有V8引擎一种解释器,不存在兼容性问题
  第六,两者都有内置对象,自定义对象,有不同的宿主对象; (js的内置对象、自定义对象,和宿主对象:
  javascript中的内置对象有:Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各种错误类对象
  javascript中的宿主对象有:宿主对象就是执行JS脚本的环境提供的对象,对于嵌入到网页中的JS来说,其宿主对象就是浏览器提供的对象,所以又称为浏览器对象。浏览器对象有很多,如Window和Documen,Element,form,image,等等。
  javascript中自定义对象有:就是开发人员自己定义的对象)

node-red

  Node-RED 是构建物联网(IOT, Internet of Things)应用程序的一个强大工具,其重点是简化代码块的“连接”以执行任务。它使用可视化编程方法,允许开发人员将预定义的代码块(称为“节点”,Node)连接起来执行任务。连接的节点,通常是输入节点、处理节点和输出节点的组合,当它们连接在一起时,构成一个“流”(Flows)。
  Node-RED最初是IBM在2013年末开发的一个开源项目,以满足他们快速连接硬件和设备到Web服务和其他软件的需求——作为物联网的一种粘合剂,它很快发展成为一种通用的物联网编程工具。重要的是,Node-RED已经迅速形成一个重要的、不断增长的用户基础和一个活跃的开发人员社区,他们正在开发新的节点,同时允许程序员复用Node-RED代码来完成各种各样的任务。
  Node-Red是IBM技术团队发起的一个项目,在2013年开源,最初主要的应用领域是物联网,用于实现各种服务之间的数据传输,在IBM的Bluemix上也提供了Node-Red的云服务。物联网的智能设备制造公司也通过使用Node-Red对硬件设备进行控制,但是作为Node-Red作为一个可视化的数据流程编辑工具,在通过Web页面进行可视化的数据流程的编辑方面是具有通用性的,
  虽然Node-RED 最初是用来处理物联网的应用,也就是说,它与现实世界交互和控制设备,随着它的发展,它已经成为一个较为开放的物联网开发工具。

node js

  Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
  Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。
  使用npm作为官方包管理器
  以ECMASCRIPT为基础,然后在这个基础上扩展出来的一些操作其他东西(即操作非浏览器)的一些方法;
组成:
ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象)
os(操作系统)
file(文件系统)
net(网络系统)
database(数据库)
Node.js的结构
Node.js标准库:(即我们使用过程中能直接调用的API,在源码中的lib目录下可以看到)
Node bindings:(这一层是JavaScript与底层C/C++能够沟通的关键,前者通过bindings调用后者,相互交换数据)
支撑Node.js运行的基础构件:由C/C++实现的,其中包括4大部分:
V8 Google推出的JavaScript VM,也是Node.js用JavaScript的关键,为JavaScript提供了在非浏览器端运行的环境,是Nodejs之所以高效的原因之一。
libuv 为Nodejs提供了跨平台、线程池、事件池、异步I/O等能力,是Nodejs如此强大的关键
C-ares 提供了异步处理DNS相关的能力
http_parse OpenSSL zlib等 提供了包括HTTP解析、SSL、数据压缩等能力

Javascript

JavaScript = ECMAScript + DOM + BOM
现在就可以知道了,前端的JavaScript其实是由ECMAScript、DOM、BOM组合而成。
JavaScript:
ECMAScript(语言基础,如:语法、数据类型结构以及一些内置对象);描述了该语言的语法和基本对象;
文档对象模型DOM(基于ECMASCRIPT,一些操作页面元素的方法);描述处理网页内容的方法和接口;
浏览器对象模型BOM(基于ECMASCRIPT,一些操作浏览器的方法);描述与浏览器进行交互的方法和接口;

总结:

  node.js是什么?node.js是一个Javascript运行环境(runtime)。Node.js与JavaScript的区别是什么?
  本质:Javascript是一种web前端语言,主要用于web开发中,由浏览器解析执行;Node.js是一个可以快速构建网络服务及应用的平台,是用Javascript语言构建的服务平台,可用于后端建立服务器
区别
  Javascript 主要应用前端,是编程语言,客户端编程语言(需要浏览器的javascript解释器进行解释执行);
  node.js主要应用后端 ,1个平台,运行环境(一个基于Chrome JavaScript运行时建立的平台,它是对Google V8引擎进行了封装的运行环境)简单的说node.js就是把浏览器的解释器封装起来作为服务器运行平台,用类似javascript的结构语法进行编程,在node.js上运行。
  简单的说node.js就是把浏览器的解释器封装起来作为服务器运行平台,用类似javascript的结构语法进行编程,在node.js上运行。

分析:

  很容易看出,前端和后端的js相同点就是,他们的语言基础都是ECMAScript;
  只是他们所扩展的东西不同:
  前端需要操作页面元素,于是扩展了DOM,也需要操作浏览器,于是就扩展了BOM。而服务端的js则也是基于ECMAScript扩展出了服务端所需要的一些API,稍微了解后台的童鞋肯定知道;
  后台语音有操作系统的能力,于是扩展os,需要有操作文件的能力,于是扩展出file文件系统、需要操作网络,于是扩展出net网络系统,需要操作数据,于是要扩展出database的能力。
这么一对比,相信很多小伙伴对nodejs更加了解了,原来前端和服务端的js如此相似,他们的基础是相同的,只是环境不同,导致他们扩展出来的东西不同而已。

  nodejs和JS在底层都是一样的,都是ecmascript,但是扩展出来的功能却是不一样的。一个是偏向于偏向于后端,一个是前端浏览器。
  在ecmascript部分node和JS其实是一样的,比如与数据类型的定义、语法结构,内置对象。但在js中的顶层对象是window对象,但是在node中没有什么window对象,node中的顶层对象是global对象。这就是二者的差异性。
  在window对象中,定义一个全局变量是可以通过Window来访问的,但是在node中是不能通过global对象来访问的,如:
var a=100;
console.log(global.a);

这种方式是输出结果为undefined
  对于上面这个例子,因为在node中定义的变量是模块中的对象,而并不是global全局变量,所以结果为undefined

 类似资料: