web学习笔记(四十七)

目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/495247.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自定义你的商店 – 设计WooCommerce商店的新方法

WooCommerce 8.8即将推出,带来了一种无需代码即可创建精美商店的新方法。向“自定义你的商店”问好,这是一项全新功能,将取代“个性化你的商店”入门步骤。 自定义你的商店将利用最新的WordPress站点编辑工具以及酷炫的新Pattern Assembler …

深兰科技陈海波:生成式AI,新一轮知识生产力革命

3月26日,AIoT创新技术赋能工业数字化高峰论坛在上海市宝山区临港南大数智中心隆重举行。活动吸引了诸多行业内的专家学者、企业家及金融投资机构、政府园区、用户等多位业界精英出席,共同探讨该领域面临的挑战与机遇,分享最新的科研成果和技术…

【信号处理】基于DGGAN的单通道脑电信号增强和情绪检测(tensorflow)

关于 情绪检测,是脑科学研究中的一个常见和热门的方向。在进行情绪检测的分类中,真实数据不足,经常导致情绪检测模型的性能不佳。因此,对数据进行增强,成为了一个提升下游任务的重要的手段。本项目通过DCGAN模型实现脑…

【动手学深度学习】深入浅出深度学习之线性神经网络

目录 🌞一、实验目的 🌞二、实验准备 🌞三、实验内容 🌼1. 线性回归 🌻1.1 矢量化加速 🌻1.2 正态分布与平方损失 🌼2. 线性回归的从零开始实现 🌻2.1. 生成数据集 &#x…

泛微表单添加自定义按钮

页面效果&#xff1a; 点击按钮&#xff0c;将参数字段对应的值传入链接中。 表单配置如下&#xff1a; 然后插入js代码块&#xff0c;代码如下&#xff1a; <script> jQuery(document).ready(function(){ //在表单的按钮单元格插入自定义属性&#xff1a;ID&#xff1…

三级等保建设技术方案-Word

1信息系统详细设计方案 1.1安全建设需求分析 1.1.1网络结构安全 1.1.2边界安全风险与需求分析 1.1.3运维风险需求分析 1.1.4关键服务器管理风险分析 1.1.5关键服务器用户操作管理风险分析 1.1.6数据库敏感数据运维风险分析 1.1.7“人机”运维操作行为风险综合分析 1.2…

云能耗管理系统在某高校建筑系统平台的开发与应用

摘要&#xff1a;依据本项目依托某学院的电能计量管理系统、给水计量监管系统以及供热计量管理系统等基础平台&#xff0c;制订了高等学校建筑能耗综合管理系统平台应用的总体框架和方案&#xff0c;该系统可以对校园建筑的各种用能情况进行实时监测、统计能耗、进行能效分析&a…

DVWA-CSRF通关教程-完结

DVWA-CSRF通关教程-完结 文章目录 DVWA-CSRF通关教程-完结Low页面使用源码分析漏洞利用 Medium源码分析漏洞利用 High源码分析漏洞利用 impossible源码分析 Low 页面使用 当前页面上&#xff0c;是一个修改admin密码的页面&#xff0c;只需要输入新密码和重复新密码&#xff…

全局UI方法-弹窗三-文本滑动选择器弹窗(TextPickDialog)

1、描述 根据指定的选择范围创建文本选择器&#xff0c;展示在弹窗上。 2、接口 TextPickDialog(options?: TextPickDialogOptions) 3、TextPickDialogOptions 参数名称 参数类型 必填 参数描述 rang string[] | Resource 是 设置文本选择器的选择范围。 selected nu…

聚酰亚胺PI材料难于粘接,用什么胶水粘接?那么让我们先一步步的从认识它开始(十一): 聚酰亚胺PI纤维

聚酰亚胺PI纤维 聚酰亚胺PI纤维是由聚酰亚胺制成的纤维材料&#xff0c;是一种非常高性能的工程纤维材料。它具有极强的耐温性、耐化学性、耐热性和耐磨性等特点。具体来说&#xff0c;聚酰亚胺PI纤维的耐温性能非常突出&#xff0c;可以承受高达300℃以上的高温条件而不流失或…

热爱负压自动排渣放水器向光而行

你还很年轻&#xff0c;将来你会遇到很多人&#xff0c; 经历很多事&#xff0c;得到很多&#xff0c;也会失去很多&#xff0c; 但无论如何有两样东西&#xff0c;你绝不能丢弃&#xff0c; 一个叫良心&#xff0c;另一个叫理想。 热爱负压自动排渣放水器向光而行 一、概述 【…

目标检测+车道线识别+追踪

一种方法&#xff1a; 车道线检测-canny边缘检测-霍夫变换 一、什么是霍夫变换 霍夫变换&#xff08;Hough Transform&#xff09;是一种在图像处理和计算机视觉中广泛使用的特征检测技术&#xff0c;主要用于识别图像中的几何形状&#xff0c;尤其是直线、圆和椭圆等常见形状…

[密码学] 密码学基础

目录 一 为什么要加密? 二 常见的密码算法 三 密钥 四 密码学常识 五 密码信息威胁 六 凯撒密码 一 为什么要加密? 在互联网的通信中&#xff0c;数据是通过很多计算机或者通信设备相互转发&#xff0c;才能够到达目的地,所以在这个转发的过程中&#xff0c;如果通信包…

MySql实战--普通索引和唯一索引,应该怎么选择

在前面的基础篇文章中&#xff0c;我给你介绍过索引的基本概念&#xff0c;相信你已经了解了唯一索引和普通索引的区别。今天我们就继续来谈谈&#xff0c;在不同的业务场景下&#xff0c;应该选择普通索引&#xff0c;还是唯一索引&#xff1f; 假设你在维护一个市民系统&…

C++堆详细讲解

介绍 二叉堆是一种基础数据结构&#xff0c;主要应用于求出一组数据中的最大最小值。C 的STL中的优先队列就是使用二叉堆。 堆的性质 : 1 . 堆是一颗完全二叉树 ; 2 . 堆分为大根堆 和 小根堆(这里不讨论那些更高级的如:二叉堆&#xff0c;二叉堆&#xff0c;左偏树等等) …

《手把手教你》系列技巧篇(五十八)-java+ selenium自动化测试-分页测试(详细教程)

1.简介 前几天&#xff0c;有人私信里留言问宏哥&#xff0c;分页怎么自动化测试了&#xff0c;完了给他说了说思路&#xff0c;不知道最后搞定没有&#xff0c;索性宏哥就写一篇文章来讲解和介绍如何处理分页。 2.测试场景 对分页来说&#xff0c;我们最感兴趣的和测试的无非…

主流公链 - Monero

Monero: 加密货币的隐私标杆 1. 简介 Monero&#xff08;XMR&#xff09;&#xff0c;世界语中货币的意思&#xff0c;是一种去中心化的加密货币&#xff0c;旨在提供隐私和匿名性。与比特币等公开区块链不同&#xff0c;Monero专注于隐私保护&#xff0c;使用户的交易记录和余…

快速上手Pytrch爬虫之爬取某应图片壁纸

一、前置知识 1 爬虫简介 网络爬虫&#xff08;又被称作网络蜘蛛、网络机器人&#xff0c;在某些社区中也经常被称为网页追逐者)可以按照指定的规则&#xff08;网络爬虫的算法&#xff09;自动浏览或抓取网络中的信息。 1.1 Web网页存在方式 表层网页指的是不需要提交表单&…

网络: 套接字

套接字: 在网络上进行进程间通信 网络字节序与主机字节序的转化 sockaddr sockaddr struct sockaddr {sa_family_t sa_family; // 地址族char sa_data[14]; // 地址数据&#xff0c;具体内容与地址族相关 };sockaddr_in :主要是地址类型, 端口号, IP地址. 基于IPv4编程…

Linux:文件增删 文件压缩指令

Linux&#xff1a;文件增删 & 文件压缩指令 文件增删touch指令mkdir指令cp指令rm指令rmdir指令 文件压缩zip & unzip 指令tar指令 文件增删 touch指令 功能&#xff1a;touch命令参数可更改文档或目录的日期时间&#xff0c;包括存取时间和更改时间&#xff0c;或者新…