Nodejs和Node-red的关系

news2024/11/25 2:02:28

NPM相关知识

npm概念

  • npm:Node Package Manager,Node包管理器。
  • 是Node.js默认的,以JavaScript编写的软件包管理系统。

npm工作原理

 npm的操作原理是各个官网使用npm publish把代码提交到npm的服务器,其他人想要使用这些代码,使用npm install就会从服务器下载下来,下载完的代码会出现在 node_modules 目录里,到这里就可以随意使用了。npm的初衷:JavaScript开发人员更容易分享和重用代码。
  如果一个项目中存在package.json文件中,那么用户可以直接使用npm install命令自动安装和维护当前项目所需的所有模块,在package.json文件中,开发者可以指定每个依赖项的版本范围,这样既可以保证模块自动更新,又不会因为所需模块功能大幅变化而导致项目出现问题,开发者也可以选择将模块固定在某个版本之上。


npm的安装使用

现在的项目大都是使用npm包管理器的,所以就只举个npm安装的过程:先在本地安装完node.js
当使用 npm 安装软件包时,可以执行两种安装类型:本地安装和全局安装

默认情况下,当输入 npm install 命令时,
例如:npm install lodash
软件包会被安装到当前文件树中的 node_modules 子文件夹下。
在这种情况下,npm 还会在当前文件夹中存在的 package.json 文件的 dependencies 属性中添加 lodash 条目。
使用 -g 标志可以执行全局安装:
npm install -g lodash

在这种情况下,npm 不会将软件包安装到本地文件夹下,而是使用全局的位置。
全局的位置到底在哪里?npm root -g 命令会告知其在计算机上的确切位置。

npm的使用

  • npm -v 通过查看版本,看是否安装成功
  • npm install 使用npm命令安装模块
  • npm install -g 可直接在命令行使用
  • npm uninstall 卸载模块
  • npm list -g查看所有全局安装模块
  • npm list vue 查看某个模块版本号

npm搜索包

npm search 

npm install 包,提示安装成功,但是项目目录中没有出现node_modules的解决方案

查看npm当前安装包路径:

npm config get prefix

查看当前node-red检索的包目录

建议不要通过npm后台安装,通过nodered的web界面直接安装即可。

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

node-red

Node-RED是一种基于Node.js的编程工具,用于以新颖有趣的方式将硬件设备,API和在线服务连接在一起。它提供了一个基于浏览器的编辑器,可以使用调色板中的各种节点轻松地将流连接在一起,只需单击即可将其部署到运行时。

nodejs

Node.js 是一个开源和跨平台的 JavaScript 运行时环境,Node.js 是一个底层平台。npm 以其简单的结构帮助 Node.js 生态系统蓬勃发展,现在 npm 仓库托管了超过 1,000,000 个开源包,你可以自由使用。
Node.js是一个应用,而不是一个JavaScript运行环境。它像浏览器一样,可以解析执行JavaScript脚本,但不是运行在浏览器环境下,而是运行在操作系统环境下。或者说它和浏览器是一个并列的性质,都是操作系统下的一个应用。


JavaScript

JavaScript是一门编程语言(脚本语言),而Node.js是一个平台,可以简单理解为它是JavaScript的一种执行环境。node.js是一个javascript的运行平台。
npm是JavaScript运行时,环境Node.js的默认包管理器。
JavaScript 是互联网上最流行的脚本语言,这门语言可用于 HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。
 

  • JavaScript 是脚本语言。
  • JavaScript 是一种轻量级的编程语言。
  • JavaScript 是可插入 HTML 页面的编程代码。
  • JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。

JavaScript的解释器?

JavaScript解释器又名js引擎。

JavaScript解析执行过程

在整体上,JavaScript的解析执行过程分为两个步骤:

1)编译

2)运行

其中,编译是在解释器中进行,将代码编译成可执行码。运行是在JavaScript引擎中进行,执行可执行码。过程如下:

编译过程

编译过程不必多说,我们只要清楚这个过程会将字符串代码编译为可执行码。

执行过程

重点是运行过程,运行又由两个过程组成

1)预解析

2)执行

预解析

预解析的工作是

1)收集变量

2)分号补全

变量收集

重点注意收集变量这一功能,又名为变量提升,收集的变量有以下三种:

  1. var声明的变量,初始值为undefined
  2. arguments参数,值为传入的实参
  3. function声明定义

若是变量名有重复的话,按照优先级来确定:

nodejs和javascript的联系、区别

虽然不能说它们一点关系也没有,但它们的确关系不大:

第一,JavaScript是一门编程语言(脚本语言),而Node.js是一个平台,可以简单理解为它是JavaScript的一种执行环境。
第二,JavaScript以前是在浏览器里执行的,需要浏览器里的JavaScript引擎,Firefox有叫做Spidermonkey的引擎,Safari有JavaScriptCore的引擎,Chrome有V8的引擎,现在有人把Chrome有V8的引擎的引擎拿出来做了包装,加入了 内置基本模块(大多用JavaScript编写),就构成了Node.js。
第三,Node.js可以说是JavaScrip的一种独立于浏览器的运行环境。

JavaScript是动态语言还是静态语言

javascript是动态的,它是一种动态类型、弱类型、基于原型的语言。在JavaScript中,当对一个变量赋值时,是不需要考虑它的类型;且它能够动态修改对象的属性,没有办法在编译的时候知道变量的类型,只有在运行的时候才能确定。

静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。

动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。

Java是动态语言吗?

Java是静态语言,并且是强类型语言。

Java的编译器

JAVA编译器(javac.exe)的作用是将java源程序编译成中间代码字节码文件,是最基本的开发工具。

编译时首先读入java源程序(即在MS-DOS命令行下键入javac HelloWorld.java等文件名参数和其他选项参数),然后进行语法检查,如果出现问题就终止编译。语法检查通过后,生成中间代码即字节码,字节码文件名和源文件名相同,扩展名为.class。

字节码文件是一种和任何具体机器环境及操作系统环境无关的中间代码,它是一种二进制文件,是Java源文件由Java编译器编译后生成的目标代码文件。编程人员和计算机都无法直接读懂字节码文件,它必须由专用的Java解释器来解释执行,因此Java是一种在编译基础上进行解释运行的语言。

Java解释器负责将字节码文件翻译成具体硬件环境和操作系统平台下的机器代码,以便执行。因此Java程序不能直接运行在现有的操作系统平台上,它必须运行在被成为Java虚拟机的软件平台之上。

Java语言这种“一次编写,到处运行”的方式,有效地解决了大多数高级程序设计语言需要针对不同系统来编译产生不同机器代码的问题,即硬件环境和操作平台的异构问题,大大降低了程序开发、维护和管理的开销。

JAVA解释器

Java解释器负责将字节码文件翻译成具体硬件环境和操作系统平台下的机器代码,以便执行。因此Java程序不能直接运行在现有的操作系统平台上,它必须运行在被成为Java虚拟机的软件平台之上。

Java解释器的解释执行方式相对较慢,因为在每次运行时都需要将字节码转换成机器指令,且无法进行优化。因此,Java解释器在性能上通常比不上其他执行方式,例如编译执行方式。然而,Java解释器在一些特定的场景下仍然有其优点,例如在开发、调试和测试阶段,它可以提供更快的代码修改和调试的能力,同时也能够在跨平台的环境中实现Java程序的可移植性。

动态语言需要编译吗?

动态语言也称为脚本语言,是介于标签语言(如HTML,XSLT,VML)和静态语言(如C++、C#、Java,也称编译语言)之间的语言。JavaScript、PHP、Perl、Ruby等都是动态语言。动态语言无需编译,它由解释器动态解释执行,一般来说,动态语言拥有比静态语言更大的灵活性和表达能力。动态语言优势在于灵活,易于开发和学习,劣势在于性能较低。在高性能服务器和并行处理的实现方案里,动态语言的优势掩盖自身的不足。一般来说,完成同样逻辑功能的程序,使用Ruby或Python之类的动态语言所需的代码量往往只有使用Java实现版本的1/10,相比C/C++差距更大。
 

安装node-red

centos通过源文件的方式安装node-red_centos安装node-CSDN博客


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1135457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20 行为型模式-策略模式

1 策略模式概述 策略模式(strategy pattern)的原始定义是:定义一系列算法,将每一个算法封装起来,并使它们可以相互替换。策略模式让算法可以独立于使用它的客户端而变化。 2 策略模式原理 3 策略模式实现 策略模式的本质是通过Context类…

高数基础常用公式(持续更新)

1、求根公式 2、三角函数特殊度数对应值 3、三角函数常用公式

4个方法,提高excel表格制作效率

使用excell文件的时候总是会少不了要大批量的数据进行操作,今天分享4个快速使用excel操作的小技巧。希望能够帮大家提高excel制作效率。 技巧一:快速求和 当你想要分别得到行列的总和,我们可以选中表格数据以及总和的单元格,按住…

SAP-PP-查询报工数据

有两个报表可以查询报工数据,COOIS和COHV 两个程序大致差不多 都需要在清单里选择工序或者确认, 工序查询的是有效的报工,而确认查询到的是所有报工,包括冲销的报工, 当然也可以在底表中查询,底表包括&am…

迎重阳,话养老:平安养老险如何助力国民“养老梦”?

10月23日,我们将迎来传统节日重阳节,又称敬老节,自古就有祭祖、登高、赏菊三大风俗,流传至今,已成为人们孝老敬老的重要节日。 随着老龄化日益加深,在“敬老”的同时如何“备老”成为人民群众长期热议的话题…

储能PCS的负载测试需求

储能PCS测试应覆盖的最小和最大负载范围,以确保其在不同负载条件下的正常运行,测试时可以逐步增加负载,直到达到最大负载,然后逐步减小负载,直到达到最小负载。测试应涵盖不同类型的负载,例如恒定负载、脉冲…

对于构建自定义协议的思考(Java)

工作转眼也1年时间了,回顾历程,协议占了绝大多数 JSON(比较常见的通信文本了),protoBuf(小编有写过教程),自定义协议(字节拼接,在一些iot领域中的标准几乎都…

【Java网络原理】 四

本文主要介绍了TCP/IP五层协议中的应用层常见的数组组织格式和传输层UDP协议。 一.应用层 1.网络通信数据的实质 网络上传输的数据,本质就是字符串(准确的说,是二进制的字符串) Java中的各种对象,是无法直接传输的 &…

共享WiFi贴项目地推技巧,轻松学会推广!

共享WiFi贴代理是一种热门的赚钱方式,通过推广共享WiFi贴来获取收益。但要想在竞争激烈的市场中脱颖而出并赚到钱,并不是一件容易的事情。在本文中,我们将介绍一些推广及赚钱的方法。 选择合适的位置是推广共享WiFi贴的关键。你需要选择人流量…

SpringAOP源码解析之advice执行顺序(三)

上一章我们分析了Aspect中advice的排序为Around.class, Before.class, After.class, AfterReturning.class, AfterThrowing.class,然后advice真正的执行顺序是什么?多个Aspect之间的执行顺序又是什么?就是我们本章探讨的问题。 准备工作 既…

QML(26)——多层qml界面传递信号

目录 使用场景传统方式高效方式代码效果展示 使用场景 界面嵌套关系如下 #mermaid-svg-Pt8AQGPjE5lV7nJh {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Pt8AQGPjE5lV7nJh .error-icon{fill:#552222;}#mermaid-svg…

2016年亚太杯APMCM数学建模大赛C题影视评价与定制求解全过程文档及程序

2016年亚太杯APMCM数学建模大赛 C题 影视评价与定制 原题再现 中华人民共和国成立以来,特别是政治改革和经济开放后,随着国家经济的增长、科技的发展和人民生活水平的提高,中国广播电视媒体取得了显著的成就,并得到了迅速的发展…

如何通过在线培训考试系统进行远程教育

随着互联网技术的不断发展,远程教育正在成为一种新型的学习方式,它使学生能够在任何地点、任何时间通过在线培训考试系统接受教育。 利用在线培训考试系统进行远程教育具有很大的灵活性。学生可以根据自己的时间和需求自由选择课程,无需受制…

MySQL进阶(日志)——MySQL的日志 bin log (归档日志) 事务日志redo log(重做日志) undo log(回滚日志)

前言 MySQL最为最流行的开源数据库,其重要性不言而喻,也是大多数程序员接触的第一款数据库,深入认识和理解MySQL也比较重要。 本篇博客阐述MySQL的日志,介绍重要的bin log (归档日志) 、 事务日志redo log(重做日志) 、 undo lo…

C语言系统化精讲(四):C语言变量和数据类型-下篇

文章目录 一、C语言中的小数1.1 小数的输出1.2 小数的后缀1.3 小数和整数相互赋值 二、在C语言中使用英文字符2.1 字符的表示2.2 字符的输出2.3 字符与整数2.4 C语言转义字符 四、C语言布尔类型(_BOOL)五、补充:C语言中的几个重要概念5.1 标识…

损失函数总结(六):KLDivLoss、BCEWithLogitsLoss

损失函数总结(六):KLDivLoss、BCEWithLogitsLoss 1 引言2 损失函数2.1 KLDivLoss2.2 BCEWithLogitsLoss 3 总结 1 引言 在前面的文章中已经介绍了介绍了一系列损失函数 (L1Loss、MSELoss、BCELoss、CrossEntropyLoss、NLLLoss、CTCLoss、Poi…

【mysql】实现设置表中所有数据的update_time,要求每1000条设置在一天

实现效果示例 执行SQL:(mysql 版本查看: select VERSION() :5.7.36-log) 实现效果: 这里最后一个id 9 > 总条数 6,所以没有更新到,直接手动补下就行 SELECT * FROM my_test S…

Capture One 23 Enterprise 16.3.0.76

Capture One 23 Enterprise是一款图像处理软件,旨在为企业用户提供高效、快速和灵活的工作流程。以下是该软件的主要特点和功能: 强大的图像编辑工具:Capture One 23 Enterprise提供了一系列强大的图像编辑工具,包括色彩校正、曲…

为什么自动驾驶需要5G?

什么叫自动驾驶? 自动驾驶分为6个等级: Level 0:人工驾驶,无驾驶辅助系统,仅提醒。 Level 1:辅助人工驾驶,可实现单一的车速或转向控制自动化,仍由人工驾驶(如定速巡航…

Java--for循环

1.for循环 控制一段代码反复执行很多次 2.for循环格式 3.for循环案例详细流程说明 执行的流程: ①循环一开始&#xff0c;执行 int i 0 一次 ②此时 i 0&#xff0c;接着计算机执行循环条件语句: 0 < 3返回true&#xff0c;计算机就进到循环体中执行&#xff0c;输出:…