NodeJS简介 1. 什么是Node.js?
Node.js是一个基于“Chrome V8引擎”的JavaScript“运行环境”。
2、什么是V8发动机?
V8 引擎是一个解释和执行 JavaScript 代码的虚拟机。 任何程序只要集成了V8引擎就可以执行JavaScript代码。 浏览器集成V8引擎,可执行JavaScript代码; 如果NodeJS中嵌入了V8引擎,那么我们写的JavaScript代码就会被NodeJS执行。
3、运行环境是什么?
经营环境就是生存环境。
地球是人类的生存环境,浏览器是网页的生存环境,windows是.exe应用程序的生存环境,Android是.apk应用程序的生存环境。 也就是说,运行环境是具体事物的生存环境。
NodeJS也是一个生活环境。 由于 V8 引擎集成在 NodeJS 中,因此 NodeJS 是 JavaScript 应用程序的生存环境。
简而言之,NodeJS 不是一种编程语言,NodeJS 是一个运行时环境。 因为这个运行环境集成了V8引擎,JavaScript代码可以在这个运行环境中运行。 这个运行环境最大的特点是它提供了可以操作“操作系统底层”的API。 通过这些底层API,我们可以编写出在网页中无法实现的功能,比如打包工具、Web服务器等等。
搭建NodeJS运行环境
如何搭建NodeJS运行环境? 有2种常见的方式。
A。 施工方法一:
1、从NodeJS官网下载.msi安装包。
2.整个过程的下一步。 3、在cmd命令行工具中输入node -v,回车。 如果看到版本号,则表示已安装 NodeJS。
b. 施工方法二:
1、下载nvm-windows,选择nvm-noinstall.zip进行下载。
2、新建文件夹,例如在C盘新建一个文件夹,重命名为Dev。
3.在Dev中创建NVM和Node两个子目录,将nvm-noinstall.zip包解压到NVM目录下。
4、选中install.cmd文件右键选择【以管理员身份运行】,在终端直接回车,将弹出的文件settings.txt保存到NVM目录下。
5、打开settings.txt文件,修改如下: root: C:DevNVMpath: C:DevNode
6、配置环境变量: NVM_HOME: C:Dev NVM NVM_SYMLINK: C:DevNode Path添加%NVM_HOME%和%NVM_SYMLINK%
7、在cmd命令行工具中输入nvm version回车,有版本号说明已经安装。
NVM常用命令:
nvm list 查看当前安装的所有Node.js版本
nvm install version number 安装指定版本的Node.js
nvm uninstall version number 卸载指定版本的Node.js
nvm use version number 选择指定版本的Node.js
NodeJS 执行 JS 代码
浏览器和NodeJS都集成了V8引擎(注:V8引擎是JavaScript引擎之一,常见的JavaScript引擎有SpiderMonkey、JaegerMonkey、Carakan、Nitro、KJS等)。 浏览器和NodeJS是如何执行JS代码的?
浏览器执行 JavaScript 的方式:
A。 JS代码可以直接在浏览器控制台执行。
b. JS文件中的JS代码可以在浏览器中执行。
NodeJS 执行 JavaScript 的方式:
A。 您可以直接在命令行工具(REPL——Read Eval Print Loop:交互式解释器)中编写和执行 JS 代码。 在cmd命令行输入node,回车进入REPL环境。
b. JS文件中的JS代码可以在命令行工具中执行。
NodeJS环境和浏览器环境执行JS代码的区别
NodeJS环境和浏览器环境一样,都是JS运行环境,都可以执行JS代码。 但由于宿主不同,其特点也不同。
1.内置对象不同
全局对象window是在浏览器环境下提供的,但是NodeJS环境下的全局对象不叫window,而是global。
2.this默认为不同的
浏览器环境下的全局this默认指向window,NodeJS环境下的全局this默认指向空对象{}。
3.不同的API
浏览器环境提供操作节点的DOM相关API和操作浏览器的BOM相关API。 NodeJS 环境中没有 HTML 节点和浏览器,因此 NodeJS 环境中没有 DOM/BOM。
NodeJS 全局属性和方法
和浏览器一样,NodeJS环境中的全局对象也提供了很多属性和方法供我们使用。
例如:
__dirname:当前文件所在文件夹的绝对路径
__filename:当前文件的绝对路径
setInterval / clearInterval:与浏览器中窗口对象上的定时器相同
setTimeout / clearTimeout :与浏览器中窗口对象上的计时器相同
console :与浏览器中 window 对象上的打印功能相同
NodeJS 自定义模块 什么是模块? 1. 浏览器开发中的模块
在浏览器开发中,为了避免命名冲突,方便维护等,我们使用类或者立即执行函数来封装JS代码node全局变量,避免命名冲突,提高代码可维护性。 其实这里的一个类或者一个立即执行的函数,在浏览器开发中就是一个模块。
例如:let obj = {模块中的业务逻辑代码}; (function(){模块中的业务逻辑代码; window.xxx = xxx; })();
2. NodeJS开发中的模块
NodeJS 使用 CommonJS 规范实现了一个模块系统。 CommonJS规范规定了如何定义一个模块,如何暴露(导出)模块中的变量和函数,以及如何使用定义好的模块。
– 文件是 CommonJS 规范中的模块
– 在CommonJS规范中,每个文件中的变量函数都是私有的,对其他文件不可见
– CommonJS规范中,每个文件中的变量函数必须通过exports暴露(导出),其他文件才能使用
– 在CommonJS规范中,想要被其他文件暴露的变量函数必须通过require()导入后才能使用
NodeJS模块导出数据的几种方式
在 NodeJS 的模块中导出变量函数的方式有以下三种。
1.导出通过exports.xxx=xxx 2.导出通过module.exports.xxx=xxx 3.导出通过global.xxx=xxx
注意: 无论使用哪种方式导出,都需要导入(require)后才能使用。 b. 通过 global.xxx 导出不符合 CommonJS 规范,不推荐使用。
exports 和 module.exports 的区别
exports只能通过exports.xxx导出数据,不能直接赋值。
module.exports不仅可以通过module.exports.xxx导出数据,还可以直接赋值。
但是在实际开发中,不管是哪种方式导出,都不要直接赋值。
NodeJS-Require 注意点 1. require 导入模块时,可以不添加导入模块的类型
如果不指定导入模块类型,则依次查找.js .json .node文件。 无论是三种类型中的哪一种,导入后都会转化为JS对象返回给我们。
2.导入自定义模块时必须指定路径
require 可以导入“自定义模块(文件模块)”、“系统模块(核心模块)”、“第三方模块”。 导入“自定义模块”模块时必须在路径前面。 导入“系统模块”和“第三方模块”不需要添加路径,因为“系统模块”直接在环境变量配置的路径中查找,“第三方模块”是根据路径依次查找在 module.paths 数组中。
NodeJS包及包管理介绍 1.什么是包?
写代码的时候尽量遵循单一原则。 一个函数试图只做一件事。 比如:读数据函数/写数据函数/生成随机数函数等,没有读数据、写数据和生成随机数的函数,所以代码容易出错,难以维护。
模块化开发也是如此,尽量在一个模块(一个文件)中只完成一个特定的功能。 但是一些比较复杂的功能可能需要由多个模块组成,比如:jQuery选择器相关的代码在模块A,CSS相关的代码在模块B……我们需要将这些模块组合在一起才能完成查询。 那么这个时候我们就需要一些东西来维护多个模块之间的关系。 维护多个模块之间关系的东西就是“包”。
简单理解:一个模块就是一个文件,一个包中可以有一个或多个模块。
2.NodeJS包管理
为了方便开发者发布、安装和管理包,NodeJS推出了包管理工具NPM(Node Package Manager)。 npm不需要我们单独安装,只要搭建好NodeJS环境,就会自动安装。 NPM相当于电脑上的“软件助手”。 通过npm,我们可以快速的找到并安装我们需要的包,快速的删除我们不需要的包。
NodeJS-NPM使用1.NPM包安装方式
npm包安装分为全局安装和本地安装。 这两种方法有什么区别? 不同的是安装包的位置不同。
全局安装的包存放在全局的node_modules中,可以在同一台电脑的任何地方使用,一般用于安装全局使用的工具。
本地安装的包存放在当前项目的node_modules中,只能在当前项目下使用,一般用于安装当前项目使用的包。
全局安装说明:
npm install -g 包名(默认安装最新版本)
npm uninstall -g 包名
npm update -g 包名(更新失败可以直接使用install)
2.初始化本地包初始化命令:
npm init -> 初始化 package.json 文件 npm init -y -> 初始化 package.json 文件
包描述文件package.json定义了当前项目所需的各种模块,以及项目配置信息(如名称、版本、许可证等元数据)。 npm install命令会根据这个配置文件自动下载需要的模块,即配置项目所需的运行和开发环境。
因此,在将项目复制给别人或发布时node全局变量,我们不需要将所有的包都复制给别人,因为文件太大不利于部署。 我们只需要复制package.json,npm就会使用这个包。 json 文件下载所需的包。 请注意,不能向 package.json 文件添加注释。
– dependencies: 生产环境使用的包的依赖,通常是包的稳定长期支持版本,由包名和版本号组成的关联数组
– devDependencies: 开发环境中使用的包的依赖关系,通常是开发中的包或者最新版本,由包的名称和版本号组成的关联数组
本地安装说明:
有些包可能只在项目开发阶段需要,在项目上线阶段不需要,所以需要单独指定:
npm install 和 npm install –development 会安装 dependencies 和 devDependencies 中的包,即会安装所有的包。 npm install –production 只会安装依赖项中的包。
NodeJS-NRM使用 1.什么是nrm?
由于npm默认会去国外下载资源,国内开发者下载会比较慢。 有人写了一个nrm工具,可以把国外的资源下载地址切换到国内,提高下载包的速度。
2. NRM指令
A。 安装 NRM:npm install -g nrm
b. 检查是否安装成功:nrm –version
可以看到版本号,说明安装成功。
C。 查看允许切换的资源地址:nrm ls
带*号的为当前使用的来源(下载地址)。
d. 切换源:nrm 使用淘宝
淘宝资源地址和国外地址内容完全同步。 淘宝镜像与官网的同步频率目前为每10分钟一次,尽可能保证与官网同步。