
【基本简介】
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时。 Node.js 使用高效、轻量级的事件驱动、非阻塞 I/O 模型。Node.js 的生态系统是目前最大的开源包管理系统。Node.js 是一套用来编写高性能网络服务器的 JavaScript 工具包,一系列的变化由此开始。比较独特的是,Node.js 会假设你是在 POSIX 环境下运行它 Linux 或 Mac OS X。如果你是在 Windows 下,那就需要安装 MinGW 以获得一个仿 POSIX 的环境。在 Node 中,Http 是首要的。Node 为创建 http 服务器作了优化,所以你在网上看到的大部分示例和库都是集中在 web 上(http 框架、模板库等)。

【命令介绍】
ctrl + c - 终止当前命令ctrl + c twice - 终止 Node REPL
ctrl + d - 终止 Node REPL
Up/Down Keys - 查看命令历史记录和修改以前的命令
tab Keys - 当前命令列表
.help - 列出所有命令
.break - 退出多行表达
.clear - 从多行表达式退出
.save - 当前 Node REPL会话保存到一个文件
.load - 加载文件的内容到当前Node REPL会话

【功能介绍】
Node.js模块和包1. 模块
Node.js官方提供了很多模块,这些模块分别实现了一种功能,如操作文件的模块fs,构建http服务的模块http等,每个模块都是一个JavaScript文件,当然也可以自己编写模块。
2. 包
包可以将多个具有依赖关系的模块组织在一起,封装多个模块,以方便管理。Node.js采用了CommonJS规范,根据CommonJS规范规定,一个JavaScript文件就是一个模块,而包是一个文件夹,包内必须包含一个json文件,命名为package.json。一般情况下,包内的bin文件夹存放二进制文件,包内的lib文件夹存放JavaScript文件,包内的doc文件夹存放文档,包内的test文件夹存放单元测试。package.json文件中需要包含的字段及包的使用,后面的实验再做详细介绍。
3. npm包管理工具
npm是Node.js的包管理工具,npm定义了包依赖关系标准,我们使用npm主要用来下载第三方包和管理本地下载的第三方包。

【安装教程】
1.打开百度,搜索nodejs,一般第一个就是nodejs的官方下载
2.进入下载页面,选择windows版本,需要提前确认下自己的系统是32位还是64位,然后选择对应的版本,我们这里选择windows x64 .msi版本安装

3.双击安装文件,点击next下一步,然后勾选同意安装协议,安装路径可以修改成自己的路径,也可以默认路径安装,点击next下一步



4.自定义安装,点击树形图标来选择你需要的安装模式,再点击next下一步

5.点击Install按钮进行安装,这一步稍微比较慢,需要耐心等待一会,出现Finish,点击完成安装



6.安装完成之后,windows键+R,打开运行窗口,输入cmd,打开cmd运行窗口,输入node -version,验证下nodejs是否安装成功。出现如图所示的版本号提示,则表示nodejs正确安装可以使用了。

【使用技巧】
如何使用node.js写入文件信息?1.首先创建一个新文件,命名为writeFile.js,如图所示;

2.使用sublime Text3打开,如图效果;

3.然后我们来引入fs核心模块,如图代码所示;

4.定义我们要写入的数据信息,如图所示,‘hello world’;

5.然后我们利用fs模块的writeFile方法,进行对文件的写入,如图代码所示;

6.接着,我们来进行存在错误抛出错误,如果没有错误,视为成功,打印success!

7.让我们来运行一下程序,结果很明显,成功了;

8.我们来看看text.txt文件中,是否存在hello world;
我们可以看到如图所示,yes成功了;

【更新日志】
断言现在,通过在检查彼此比较的值时对对象属性进行排序,可以稍微改善diff输出。 #22788
CLI
选项解析器现在归 _ 到 - 所有多字的命令行标志,例如 --no_warnings 具有相同的效果 --no-warnings。 #23020
添加了node 二进制文件的bash完成 。要生成bash完成脚本,请运行 node --completion-bash。输出可以保存到文件中,可以获取该文件以启用完成。 #20713
加密
添加了对PEM级加密的支持。 #23151
添加了API非对称密钥对生成。新的方法 crypto.generateKeyPair 和 crypto.generateKeyPairSync 可以用来生成公钥和私钥对。API支持RSA,DSA和EC以及各种密钥编码(包括PEM和DER)。 #22660
FS
recursive 为fs.mkdir 和 添加了一个 选项 fs.mkdirSync。如果此选项设置为true,则将自动创建不存在的父文件夹。 #21875
http2
每当 收到非ack时,就会发出 一个 'ping' 事件 。 #23009Http2SessionPING
添加了对ORIGIN 框架的支持 。 #22956
将nghttp2更新为1.34.0。这增加了RFC 8441扩展连接协议支持,允许通过HTTP / 2使用WebSockets。 #23284
模
补充说 module.createRequireFromPath(filename)。此新方法可用于创建自定义require函数,该函数将解析相对于文件名路径的模块。 #19360
处理
添加了 多次尝试解析'multipleResolves' 时发出的 进程事件 Promise,例如,如果 在 执行程序中调用resolve 和 reject函数,则会发生这些事件 Promise。 #22218
网址
添加 url.fileURLToPath(url) 和 url.pathToFileURL(path)。这些方法可用于在文件:URL和绝对路径之间正确转换。 #22506
有帮助
添加了 sorted 选项 util.inspect()。如果设置为 true,则对象的所有属性以及Set和Map条目将在返回的字符串中排序。如果设置为函数,则将其用作比较函数。 #22788
该 util.instpect.custom 符号现在在全局符号注册表中定义为 Symbol.for('nodejs.util.inspect.custom')。 #20857
添加了对BigInt 数字的 支持 util.format()。 #22097
V8 API
许多V8 C ++ API已被标记为已弃用,因为它们已在上游存储库中删除。必要时添加替换API。 #23159
视窗
Windows msi安装程序现在提供了一个选项,可以自动安装构建本机模块所需的工具。 #22645
工作人员
已经实现了使用DevTools协议的Worker的调试支持。 #21364
inspector 现在,在Workers中启用了公共 模块。 #22769
添加了新的协作者:
digitalinfinity - Hitesh Kanwathirtha