- Node.js教程
- Node.js - 教程
- Node.js - 简介
- Node.js - 环境设置
- Node.js - 首次申请
- Node.js - REPL 终端
- Node.js - 命令行选项
- Node.js - 包管理器 (NPM)
- Node.js - 回调概念
- Node.js - 上传文件
- Node.js - 发送电子邮件
- Node.js - 活动
- Node.js - 事件循环
- Node.js - 事件发射器
- Node.js - 调试器
- Node.js - 全局对象
- Node.js - 控制台
- Node.js - 流程
- Node.js - 扩展应用程序
- Node.js - 包装
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 缓冲器
- Node.js - Streams
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 快速入门
- Node.js - MySQL创建数据库
- Node.js - MySQL创建表
- Node.js - MySQL Insert Into
- Node.js - MySQL Select From
- Node.js - MySQL Where 子句
- Node.js - MySQL Order By
- Node.js - MySQL Delete
- Node.js - MySQL Update
- Node.js - MySQL Join
- Node.js MongoDB
- Node.js - MongoDB 快速入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB Insert
- Node.js - MongoDB Find
- Node.js - MongoDB 查询
- Node.js - MongoDB 排序
- Node.js - MongoDB Delete
- Node.js - MongoDB Update
- Node.js - MongoDB Limit
- Node.js - MongoDB Join
- Node.js模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - utility 模块
- Node.js - Web 模块
Node.js - 全局对象
Node.js中的全局对象是内置对象。Node.js运行时由许多核心模块组成。要合并任何核心模块的功能,例如 fs 模块或 http 模块(或从 npm 安装的任何外部模块,例如 express 模块),您需要使用 require() 函数加载它们。但是,一些模块、函数、类、变量等可以直接在 JavaScript 代码中使用,而无需使用 require() 函数加载它们。它们被称为全局对象。让我们看一下全局类、变量和函数 Node.js
Buffer 类
Buffer 类是一个全局类,可以在应用程序中访问,而无需导入 Buffer 模块。buffer 类的对象存储原始数据,类似于整数数组,但对应于 V8 堆之外的原始内存分配。
您可以创建一个由 10 个八位字节组成的未启动缓冲区 -
var buf = new Buffer(10);
也可以从给定数组创建缓冲区对象 -
var buf = new Buffer([10, 20, 30, 40, 50]);
或从给定的字符串 -
var buf = new Buffer("Simply Easy Learning", "utf-8");
您可以使用缓冲区执行不同的操作,例如读/写数据、将缓冲区转换为 JSON、缓冲区串联等。
控制台类
一个 Console 类,其中包含 console.log()、console.error() 和 console.warn() 等方法,可用于写入任何Node.js流。全局控制台可以在不调用 require('node:console') 的情况下使用。
以下 REPL 会话显示全局控制台对象的功能
> console.log("Hello World");
Hello World
undefined
> console.error("Some error occurred");
Some error occurred
undefined
> console.warn("This is a warning message!");
This is a warning message!
undefined
Process 对象
流程对象是一个全局对象,尽管它是在流程模块中定义的。它是 EventEmitter 类的一个实例。进程对象提供有关当前进程的信息。借助与此对象关联的许多方法和属性,可以控制当前进程。
Process 对象的属性之一是 argv 数组。它存储传递给节点可执行文件的命令行参数。
数组中的第 0 个元素是节点可执行文件,第一个元素是 javascript 文件,然后是传递的参数。
将以下脚本另存为 你好.js 并从命令行运行它,从命令行向它传递一个字符串参数。
const args = process.argv;
console.log(args);
const name = args[2];
console.log("Hello,", name);
在终端中,输入
PS D:\nodejs> node hello.js Qikepu
[ 'C:\\nodejs\\node.exe', 'D:\\nodejs\\a.js', 'Qikepu' ]
Hello, Qikepu
process.argv0 属性存储启动时传递的 argv[0] 原始值的只读副本Node.js。
Process 对象的 env 属性存储环境变量。您可以从命令行设置环境变量。将值分配给节点可执行文件名称之前的一个或多个变量。
USER_ID=101 USER_NAME=admin node app.js
在脚本内部,环境变量可用作 process.env 对象的属性
process.env.USER_ID; // "101"
process.env.USER_NAME; // "admin"
有关当前进程的一些有用信息存储在进程对象的属性中,如以下示例所示。
例
console.log('Process Architecture:'+process.arch);
console.log('Current working directory:'+ process.cwd());
console.log('Process PID: '+process.pid);
console.log('Process Platform: '+process.platform);
console.log('Process Version: '+process.version);
输出
Current working directory:D:\nodejs
Process PID: 11060
Process Platform: win32
Process Version: v20.9.0
全局定时器功能
Node.js 的 timer 模块定义了用于调度回调的函数。它们可以用作全局函数(无需导入模块)。
setTimeout() 函数用于在指定的持续时间(以毫秒为单位)后运行回调。
function printHello() {
console.log( "Hello, World!");
}
// Now call above function after 2 seconds
setTimeout(printHello, 2000);
clearTimeout() 函数用于停止之前使用 setTimeout() 创建的计时器。
setInterval() 函数用于在指定的持续时间(以毫秒为单位)后重复运行回调。
function printHello() {
console.log( "Hello, World!");
}
// Now call above function after 2 seconds
setInterval(printHello, 2000);
全局变量
__filename
__filename表示正在执行的代码的文件名。这是此代码文件的已解析绝对路径。对于主程序,这不一定是命令行中使用的相同文件名。模块内的值是该模块文件的路径。
例使用以下代码创建名为 main.js 的 js 文件 -
// 让我们尝试打印__filename的值
console.log( __filename );
现在运行main.js以查看结果 -
__dirname
__dirname表示当前正在执行的脚本所在的目录的名称。
例使用以下代码创建名为 main.js 的 js 文件 -
// 让我们尝试打印__dirname的值
console.log( __dirname );
现在运行main.js以查看结果 -
请注意,将给定模块导入 Node.js 运行时的 require() 函数也是一个全局函数。
全局对象
下表提供了我们在应用程序中经常使用的其他对象的列表。更多详情,可以参考官方文档。
模块名称 | 描述 |
---|---|
Console |
用于打印有关 stdout 和 stderr 的信息。 |
Process |
用于获取有关当前进程的信息。提供与流程活动相关的多个事件。 |