更新时间:2022-04-15 来源:黑马程序员 浏览量:
在Node.js中,global对象定义了全局命名空间。当我们定义了一个全局变量时,这个变量同时也会成为全局对象global的属性,反之亦然。可以说在全局作用域中,任何变量、函数和对象都是global对象的一个属性值。
本节中要介绍的是,在Node.js中提供的一些全局可用的变量、函数和对象,这里所谓的全局就是不需要进行模块加载,可以直接使用的,其中包括全局作用域的函数和对象,也包括另一种不在全局作用域,而是在每个模块作用域都存在的变量、函数和对象,在全局可用,但不是golbal对象的属性。
例如require()函数,在每个模块作用域中存在,所有不需要加载可以使用,我们可以说它是全局可用,但它不是全局函数。
Node.js6.2.1版本的相关手册中,在手册中对API都有介绍,在目录中打开index.html代表查看所有API,如图2-43所示。
图2-43index.html
在图2-43的右侧菜单中找到“Globals”并单击,然后会显示所有在全局可以使用的变量、函数和对象,如图2-44所示。
图2-44全局可用的变量、函数和对象
在图2-44中,_dirname、_filename、exports和module对象与require()函数相似,都是存在于每个模块作用域中,实际上并不是全局对象,Buffer和process在本书后面的章节中会陆续讲解到。
Node.js中提供了两个与文件操作相关全局可用变量_dirname和_filename,_dirname表示当前文件所在的目录,_filename表示当前正在执行的脚本的文件名。它将输出文件所在位置的绝对路径,且和命令行参数所指定的文件名不一定相同。如果在模块中,返回的值是模块文件的路径。
接下来通过一个案例来演示两个变量的具体使用。在C:\Course\code\chapter02\目录下创建demo2-6.js文件,在该文件下添加代码如下所示。
demo2-6.js
// 输出全局变量__dirname 的值 console.log('文件的目录是:'+__dirname); // 输出全局变量__filename 的值 console.log('文件的绝对路径是:'+__filename);
打开终端,执行demo2-6.js,执行结果如图2-45所示。
图2-45demo2-6.js执行结果
需要注意的是,无论通过开发工具还是记事本创建文件,如果文件内需要执行的代码中包含中文,都要将文件编码保存为utf8格式,否则在执行时会出现乱码问题,关于乱码问题在第5章节中会进行详细介绍。
关于文件的编码修改,可以用记事本打开方式打开文件,找到【文件】菜单,如图2-46所示。
图2-46【文件】菜单在图2-46中,单击【文件】->【另存为】,可以看到文件编码选项,如图2-47所示。
图2-47编码选项
在图2-47中可以进行文件编码的修改,单击“保存”可以完成修改,其他开发工具中可以在文件上右击,一般找到修改文件编码的位置。
Node.js中还提供的常用的全局函数,如表2-2所示。
表2-2Node.js的全局函数函数
5.console对象
在前面的学习过程中,经常会使用到“console.log()”语句,console对象就是一个全局对象,用于提供控制台标准输出,除了console.log()函数外还提供了其他的函数,如表2-3所示。
表2-3console对象提供的函数
由于表2-3在开发中不经常使用,这里只需要掌握console.log()的使用方法即可。