目录
1. node.js中的三个全局变量
1.1 global
1.2 __dirname 文件夹的绝对路径
1.3 __filename 文件名的绝对路径
2.模块化
2.1 什么是模块化
2.2 模块化的好处
3. Node.js 中模块化
3.1 Node.js 中的模块化规范
4. Node.js 中的模块作用域
4.1module 对象
4.2 module.exports 对象
4.3 exports 对象
5. npm与包
5.1 包
5.2 npm
1. node.js中的三个全局变量
1.1 global
在 Node.js 中,global 是一个全局对象,类似于浏览器环境中的 window 对象。在 Node.js 中,`global` 对象包含了所有全局变量和函数,在任何地方都可以访问它们。
一些常见用法包括:
1. 定义全局变量:通过在任何地方直接声明变量,可以将其添加到全局范围内。
global.myGlobalVar = 'Hello, Global!';
2. 访问全局变量: 通过`global`对象可以访问全局范围内定义的变量。
console.log(global.myGlobalVar); // 输出: Hello, Global!
3. 全局函数: 在应用程序中定义的函数可以作为全局函数,并通过`global`对象访问。
global.myGlobalFunction = function() {
console.log('This is a global function.');
};
myGlobalFunction(); // 输出: This is a global function.
需要注意的是,在 Node.js 中过度使用全局变量并不袗推荐,因为全局变量会增加代码的耦合性并且容易导致命名冲突。通常情况下,最好尽可能地避免使用全局变量,而是通过模块化的方式来组织代码,避免全局污染和其他潜在问题。
1.2 __dirname 文件夹的绝对路径
__dirname
是一个 Node.js 中的全局变量,用于表示当前模块的目录路径。它总是指向当前模块的所在目录的绝对路径。
fs.readFile(__dirname + '/flie/1.txt', 'utf-8', (err, data) => {
if (err) return console.log('读取失败' + err.message);
console.log(data);
})
1.3 __filename 文件名的绝对路径
__filename
是 Node.js 中的一个全局变量,用于表示当前模块的文件名(包含绝对路径)。与 __dirname
表示当前模块的目录路径不同,__filename
表示当前模块文件的完整路径,包括文件名。
console.log(__filename);
2.模块化
2.1 什么是模块化
模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块。
2.2 模块化的好处
- 提高了代码的复用性
- 提高了代码的可维护性
- 可以实现按需加载
3. Node.js 中模块化
node.js根据模块来源的不同,将模块分为了三大类,分别是:
内置模块 | fs、path、http |
自定义模块 | 需要导入( require('url'))和导出(module.exports = { }) |
第三方模块 | 就是包,需要进行下载操作,在控制台输入npm i 包名来下载包 |
使用 require() 方法加载其它模块时,会执行被加载模块中的代码。
3.1 Node.js 中的模块化规范
- 每个模块内部,module 变量代表当前模块。
- module 变量是一个对象,它的 exports 属性(即 module.exports)是对外的接口。
- 加载某个模块,其实是加载该模块的 module.exports 属性。require() 方法用于加载模块。
4. Node.js 中的模块作用域
和函数作用域类似,在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制,叫做模块作用域。
4.1module 对象
在每个 .js 自定义模块中都有一个 module 对象,它里面存储了和当前模块有关的信息,打印如下:
4.2 module.exports 对象
在自定义模块中,可以使用 module.exports 对象,将模块内的成员共享出去,供外界使用。外界用 require() 方法导入自定义模块时,得到的就是 module.exports 所指向的对象。
注意:使用 require() 方法导入模块时,导入的结果,永远以 module.exports 指向的对象为准
4.3 exports 对象
由于 module.exports 单词写起来比较复杂,为了简化向外共享成员的代码,Node 提供了 exports 对象。默认情况下,exports 和 module.exports 指向同一个对象。最终共享的结果,还是以 module.exports 指向的对象为准。因此不推荐使用exports 对象,而且严禁exports 对象 和 module.exports 对象混用 。
5. npm与包
5.1 包
在node.js中将第三方模块称为包。Node.js 中的包都是免费且开源的,不需要付费即可免费下载使用,包都是由第三方个人或团队(技术大牛)开发出来的。包是基于内置模块封装出来的,提供了更高级、更方便的 API,极大的提高了开发效率。
5.2 npm
npm(Node Package Manager)是 Node.js 的包管理工具,也是世界上最大的软件注册表之一。通过 npm,开发者可以方便地下载、安装、更新和管理 Node.js 包和依赖项,从而加快项目开发的速度并提高代码的可重用性。我们并不需要单独下载npm,在下载Node时已经将npm下载完了,我们可以通过在控制台输入npm -v来查看自己下载的npm的版本。然后如果有需要下载某个包时只需要在控制台输入npm i 包名 就可以进行下载包的操作。也可以安装指定版本的包