首页 > 其他分享 >web学习笔记(四十七)

web学习笔记(四十七)

时间:2024-03-28 18:03:10浏览次数:25  
标签:Node web exports 笔记 js 四十七 npm module 模块

目录

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 包名 就可以进行下载包的操作。也可以安装指定版本的包

标签:Node,web,exports,笔记,js,四十七,npm,module,模块
From: https://blog.csdn.net/shan33__/article/details/137076580

相关文章

  • 王道操作系统个人向笔记-第一章
    目录操作系统的基本概念操作系统的概念操作系统的功能和目标操作系统的特征操作系统的发展历程手工操作阶段批处理阶段单道批处理系统多道批处理系统分时操作系统实时操作系统操作系统运行环境处理器运行模式中断和异常系统调用操作系统的体系结构操作系统的引导虚拟机操作系统的......
  • MIPI-CSI2笔记(2)
    参考资料:极客笔记 CSI-2Layer: 多条Lane和数据的分发:基于字节的传输,假设一共有四条lane:接收就是反序过程,经过这样的转换之后,一个packet在lane上的传输情况如下图所示: LowLevelProtocol协议层:短包和长包都是以字节单位存储的 长包和短包数据格式:包头PH:Data......
  • 【STM32】Gpio通用输入输出功能应用笔记
    文章目录一、前言1.1开发环境1.2GPIO电路原理1.3板卡电路原理1.3.1按键电路原理1.3.2Led电路原理1.3.3Beep电路原理二、功能实现2.1配置STM32Cubemx工程2.2KeilMDK工程编码2.2.1按键功能代码2.2.2LED灯功能代码2.2.3Beep功能代码2.2.4Main函数代码2.2.5K......
  • 想成为一名Python web开发工程师,你需要具备什么技能?
    前言在大家的印象中,Python被广泛的应用在人工智能、自动化运维、自动化测试、机器学习等方向,并且有着不可或缺的作用;但其实Python的应用领域不止这些,Python还可以进行后台开发,正因如此市场上有了Pythonweb开发的岗位需求。那么想要从事Pythonweb开发,需要掌握哪些技能呢?......
  • FPGA入门笔记010——UART串口接收模块设计
    1、串口接收模块原理​当对于数据线Rs232_Rx上的每一位进行采样时,一般情况下认为每一位数据的中间点是最稳定的。因此一般应用中,采集中间时刻时的电平即认为是此位数据的电平,如图1所示。图1——串口接收时序图(图中BPS_CLK为采样时钟)​但是在实际工业应......
  • RxSwift的个人笔记
    最近在看电报项目 https://github.com/TelegramMessenger/Telegram-iOS.git发现里面也是使用响应式编程,里面SSignalKit库来做事件触发和监听相关的内容。由于原来主要是用Object-C开发,对于Swift的骚气用法老是消化不良,看了一段时间,有一些明白了些的点需要记录下来。 和RxSwift......
  • 我的第一篇随笔之web3 投资认知
    币圈牛市投资认知1:眼光要长远,现在比特币和美国经济强绑定的;而美国依赖的是美元霸权,如果美国蹦盘将导致世界秩序重组,所以比特币不可能崩盘,只会越来越贵2:相信经济周期趋势的,不管是什么黑天鹅事件都不能阻挡大的趋势的改变,大趋势大周期一旦形成,不肯定因为某件事情而改变;3:现实世界......
  • 面试题——为什么vite打包速度比webpack快
    vite采用了不同的开发模式, 相较于webpack的先打包再启动服务器, vite则是直接启动, 在请求模块时再进行实时编译, 在大型项目中, 这种按需动态编译的模式极大地缩短了时间vite充分利用了现代浏览器对ESModules的支持, 将开发环境下的模块文件直接作为浏览器要执......
  • JavaWeb学习笔记——第七天
    MySQL(二)数据库查询-DQLDQL英文全称是DataQueryLanguage(数据查询语言),用来查询数据库表中的记录。关键字:SELECT语法关键字和参数说明select字段列表基本查询from表名列表where条件列表条件查询groupby分组字段列表分组查询having分组后条件列......
  • webpack 3 入门笔记
    生产/开发环境生产环境便于开发求方便开发环境便于部署求小体积小项目:用环境名if(evn===proudtion){}else{}大项目:dev(mergecommon),prod(mergecommon)三个文件通过script指令rundev和runbuild--config不同的配置文件。****开发环境:1公共变量2tr......