NodeJS

发布时间 2024-01-03 09:07:10作者: 背包の技术

坎坷的人生不可怕,可怕的是缺乏了自信,没有了自我。如果整天怨天尤人,埋怨老天的不公,命运的不顺,生活的不平。只会一蹶不振,碌碌无为,无所事事。只会向命运低头,迷失前进的方向,丧失自身的人生价值。

Node.js

运行时环境 -> 解释器

定义:Node.js 是一个基于 Chrome V8 引擎的跨平台 JavaScript 运行时环境。 Node.js 使用高效、轻量级的事件驱动、非阻塞 I/O 模型。让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与 PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。Node.js 的生态系统是目前最大的开源包管理系统。

什么是 Node.js?

脚本语言需要一个解析器才能运行,JavaScript 是脚本语言,在不同的位置有不一样的解析器,如写入 html 的 js 语言,浏览器是它的解析器角色。而对于需要独立运行的 js,Node.js 就是一个解析器。

每一种解析器都是一个运行环境,不但允许 js 定义各种数据结构,进行各种计算,还允许 js 使用允许环境提供的内置对象和方法做一些事情。如运行在浏览器中的 js 的用途是操作 DOM,浏览器就提供了document 之类的内置对象。而运行在 Node.js 中的 js 的用途是操作磁盘文件或搭建 http 服务器,nodejs 就相应提供了 fs、http 等内置对象。

能做什么?

Node.js 的作者说,他创造 Node.js 的目的是为了实现高性能 Web 服务器,他首先看重的是事件机制和异步 IO 模型的优越性,而不是 JS。但是他需要选择一种编程语言实现他的想法,这种编程语言不能自带 IO 功能,并且需要能良好支持事件机制。JS 没有自带 IO功能,天生就用于处理浏览器中的 DOM 事件,并且拥有一大群程序员,因此就成为了天然的选择。

如他所愿,Node.js 在服务端活跃起来,出现了大批基于 Node.js 的 Web 服务。而另一方面,Node.js 让前端众如获神器,终于可以让自己的能力覆盖范围跳出浏览器窗口,更大批的前端工具如雨后春笋。

因此,对于前端而言,虽然不是人人都要拿 NodeJS 写一个服务器程序,但简单可至使用命令交互模式调试 JS 代码片段,复杂可至编写工具提升工作效率。

npm

新版的 Node.js 已经集成了 npm,安装 Node.js 后 npm 也一并安装好。

定义:npm 是 Node.js 的软件包管理器,其目标是自动化的依赖性和软件包管理。这意味着,可以在 package.json 文件中为项目指定所有依赖项(软件包),当需要为其安装依赖项时,只要运行 npm install,这样就好了,它还提供了版本控制,即可以指定项目的依赖版本,这样可以在大多数情况下,防止更新破坏项目,或者使用首选版本。

npx

而我们很多人开始学习 React 时,都会普遍感到困惑,大家常常看见的是 npx 而非众所周知的 npm。一些人觉得它很奇怪,但没有多想,其他人则认为这是一个错字,甚至错误地要通过运行 npm 而非 npx 来“修复”。

当某件事不止一次发生时,就值得我们仔细揣摩,问题究竟出在哪里?可以肯定的是不是错字,是 npx,不是 npm ?。

通过上面我们了解到 npm 是 Node.js 的软件包管理工具,而 npx 是执行 Node.js 软件包的工具,它从 npm5.2 版本开始,就与 npm 捆绑在一起。

npx 的作用如下:

  1. 默认情况下,首先检查路径中是否存在要执行的包(即在项目中);
  2. 如果存在,它将执行;
  3. 若不存在,意味着尚未安装该软件包,npx 将安装其最新版本,然后执行它;

上文已说明,npm 行为是 npx 的默认行为之一,但它具有可用来阻止的标志。例如,如果运行 npx some-package --no-install,意味着告诉 npx ,它应该仅执行。some-package,如果之前未安装,则不安装。

示例:假设有一个名为 my-package 的软件包,想要执行它。

  • 若没有 npx,要执行一个软件包,必须通过其本地路径运行来完成,如下所示:

    ./node_modules/bin/my-package
    
  • 或在 package.json 文件的 scripts section 中将其定义为单独的脚本,如下所示,然后使用 npm run my-package 运行。

    {
    	"name":"something",
    	"version": "1.0.0",
    	"scripts": {
    		"my-package":"./node_modules/bin/my-package"
    	}
    }
    
  • 现在,运用 npx,只需运行 npx my-package,即可轻松实现此目的。

yarn

yarn 是由 Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具(取代 npm),是为了弥补 npm 的一些缺陷而出现。

这个包默认没有,需要使用 npm 来进行安装:

# 执行命令:
npm install -g yarn

yarn 在下载包的时候有一个缓存的过程,我们一般不会使用 yarn 默认下载缓存目录,而会自定义指定 yarn 下载缓存目录 :

yarn config set cache-folder "C:\Program Files\nodejs\yarn_cache"  

yarn 下载包分为本地下载和全局下载,本地下载会下载到指定的文件夹,而全局下载会下载到默认的全局包保存路径,我们一般不会使用 yarn 默认的全局包下载保存路径,而会自定义指定 yarn 全局包下载路径:

yarn config set global-folder "C:\Program Files\nodejs\yarn_global" 

注意:yarn 自定义修改了全局包存放路径,还需要去设置环境变量,将自定义全局包路径加到环境变量中,否则全局装的包没法在命令行窗口中正常使用。