Node

135 阅读2分钟

什么是Node?

  • Node.js 是一个基于 Chrome V8 Java 引擎的 JS 运行环境
  • nodejs可以看做是一个平台,是一个运行环境。可以让我们脱离浏览器来运行JavaScript代码。
  • 浏览器中的js只能操作DOM元素。不能读写文件,不能搭建网络服务,不能操作数据库。node可以。

如何运行node.js脚本

从命令行运行 Node.js 脚本

# 运行node.js应用程序文件
node app.js
# 运行一串字符串脚本
node -e "console.log(123)"

模块化-CommonJS模块化

在 Node.js 模块系统中,每个文件都被视为独立的模块。

module scope

nodejs你不知道的__dirname和__filename

当使用commonjs模式时,在一个文件模块被执行时,会被传入五个变量。

__filename: 当前模块的文件名称---解析后的绝对路径。

__dirname: 当前模块的文件夹名称。

exports: 是module.exports的引用。

require: 引入模块的方法。

module: module 的自由变量是一个指向表示当前模块的对象的引用。

Node核心模块

nodejs中使用的最多的核心模块主要有以下几个

fs:提供对文件的读写等操作

http:提供了搭建本地服务器的API

path:提供文件路径操作的API

os:操作系统相关信息的API

url:提供了操作URL信息的API

Process模块

(www.nodeapp.cn/process.htm…)

(nodejs.org/api/process…)

process 对象是一个全局变量,它提供当前 Node.js 进程的有关信息,以及控制当前 Node.js 进程。 因为是全局变量,所以无需使用 require()。

process 对象是 EventEmitter 的实例。所以可以通过process.on('事件名', 事件处理函数)绑定事件处理函数。 process 对象上挂载了很多与当前进程相关的方法和属性。

常用的属性和方法有:

process.env

返回一个包含用户环境信息的对象

// 修改变量
process.env.foo = 'bar';
console.log(process.env.foo);
// 新增属性
process.env.test = 'hello';
console.log(process.env.test);
// 删除属性
delete process.env.test;

process.execPath

返回启动Node.js进程的可执行文件所在的绝对路径。

process.argv

process.argv 属性返回一个数组,这个数组包含了启动Node.js进程时的命令行参数。第一个元素为process.execPath。第二个元素为当前执行的JavaScript文件路径。剩余的元素为其他命令行参数。

process.cwd()

返回 Node.js 进程当前工作的目录。

Node.js 从命令行接收参数

Node.js 从命令行接收参数

当使用以下命令调用 Node.js 应用程序时,可以传入任意数量的参数:

node app.js test

可以通过创建一个排除了前两个参数的新数组来仅获取其他的参数:

const args = process.argv.slive(2);
  • __dirname -returns the value of directory where the current running file resides.