什么是Node?
- Node.js 是一个基于 Chrome V8 Java 引擎的 JS 运行环境
- nodejs可以看做是一个平台,是一个运行环境。可以让我们脱离浏览器来运行JavaScript代码。
- 浏览器中的js只能操作DOM元素。不能读写文件,不能搭建网络服务,不能操作数据库。node可以。
如何运行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模块
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 app.js test
可以通过创建一个排除了前两个参数的新数组来仅获取其他的参数:
const args = process.argv.slive(2);
- __dirname -returns the value of directory where the current running file resides.