Node学习笔记之模块化
一、介绍
1.1 什么是模块化与模块 ?
将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为 模块化
其中拆分出的 每个文件就是一个模块 ,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他 模块使用
1.2 什么是模块化项目 ?
编码时是按照模块一个一个编码的,整个项目就是一个模块化的项目
1.3 模块化好处
下面是模块化的一些好处:
1. 防止命名冲突
2. 高复用性
3. 高维护性
1.4模块化使用
导出数据方式一:
exports.num = num;
exports.sum = sum;
exports.Animal = Animal;
导出数据方式二:
// 通过module.exports 等于一个对象,来导出数据
// 对象可采用es6简化对象的写法
module.exports = {num,sum,Animal
};
导入数据:
// 注意1: 如果要使用某个模块里面的数据,则需要使用 require 关键字进行导入。
// 注意2:在导入用户自己开发的模块的时候,需要加上路径(1. 相对路径(多) 2. 绝对路径) 注意: ./ 必须写上
// 注意3:模块文件的扩展名(后缀名)可以写,也可以不写
// 注意4:导出的模块一般需要使用一个变量来接收,一般把接收的量定义为常量
// 注意5: 定义常量的名称和文件的名称保持一致(这个不是必须,大家都这么做)
const m1 = require("./modules/m1.js");
完整代码:
// m1.js中:
let num = 10;
function sum(a, b) {return a+b
}class Animal{constructor(){this.age=0}
}// 导出数据方式1:
// exports.num = num;
// exports.sum = sum;
// exports.Animal = Animal;// 导出数据方式2:
// 通过module.exports 等于一个对象,来导出数据
// 对象可采用es6简化对象的写法
module.exports = {num,sum,Animal
};
模块的使用
//01-模块的使用.js
const m1 = require("./modules/m1.js");console.log(m1); //{ num: 10, sum: [Function: sum], Animal: [Function: Animal] }
console.log(m1.sum(10, 20));
const obj = new m1.Animal(); //30
console.log(obj.age); //0
二、模块里面this的指向问题
exports实际上是module.exports的引用,
在 nodejs 里面的 this 代表当前的这个模块,也就是 exports 对象
console.log(exports); //{}
console.log(module.exports); //{}
console.log(exports === module.exports); //true exports实际上是module.exports的引用console.log('this', this); // this {}console.log(this === exports);// true // 在 nodejs 里面的 this 代表当前的这个模块,也就是 exports 对象 并且,交互模式下,没有exports这个对象
console.log(global === this ); //false this不指向全局对象
三、CommonJS 规范
module.exports 、 exports以及require 这些都是CommonJS模块化规范中的内容。 而 Node.js 是实现了 CommonJS 模块化规范,二者关系有点像 JavaScript 与 ECMAScript
CommonJS 规定:
① 每个模块内部,module 变量代表当前模块。
② module 变量是一个对象,它的 exports 属性(即 module.exports)是对外的接口。
③ 加载某个模块,其实是加载该模块的 module.exports 属性。require() 方法用于加载模块。
相关文章:
Node学习笔记之模块化
一、介绍 1.1 什么是模块化与模块 ? 将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为 模块化 其中拆分出的 每个文件就是一个模块 ,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他 模块使用 1…...
用matlab求解线性规划
文章目录 1、用单纯形表求解线性规划绘制单纯形表求解: 2、用matlab求解线性规划——linprog()函数问题:补充代码:显示出完整的影子价格向量 1、用单纯形表求解线性规划 求解线性规划 m i n − 3 x 1 − 4 x 2 x 3 min -3x_1-4x_2x_3 min−…...
antd获取/更改form表单数据(表单域数据)
创建ref引用 formRef React.createRef();表单和ref绑定 //ref{this.formRef} 先给Form <Form ref{this.formRef} name"control-ref" onFinish{this.onFinish}><Form.Item name"name" label"Name" rules{[{ required: true }]}>…...
Go学习第三章——运算符与进制
Go学习第三章——运算符与进制 1 算术运算符2 关系运算符3 逻辑运算符4 赋值运算符5 其他运算符5.1 位运算符5.2 跟指针有关的运算符 6 运算符的优先级7 获取用户终端输入8 进制转换8.1 进制基本使用8.2 进制之间的转换8.3 原码 反码 补码8.4 位运算符详解 运算符是—种特殊的符…...
H3C IMC dynamiccontent.properties.xhtm 远程命令执行
我举手向苍穹,并非一定要摘星取月,我只是需要这个向上的、永不臣服的姿态。 构造payload: /imc/javax.faces.resource/dynamiccontent.properties.xhtml pfdrtsc&lnprimefaces&pfdriduMKljPgnOTVxmOB%2BH6%2FQEPW9ghJMGL3PRdkfmbii…...
【技能树笔记】网络篇——练习题解析(八)
目录 前言 一、LAN技术 1.1 堆叠与集群 1.2 MSTP的特点 二、WAN技术 2.1 PPP链路建立 2.2 PPPoE 2.3 组播 2.3.1 组播的IP 2.3.2 组播分发树 2.3.3 组播协议 三、IPv6基础 3.1 IPv6地址 3.2 IPv6协议 3.3 IPv6过渡技术 总结 🌈嗨!我是Filotimo__…...
laravel框架介绍(二)
方法1.windows 可以直接下载 Composer-Setup.exe 方法2.配置php.exe目录环境变量,下载 composer.phar和php.exe平级目录, 新建 composer.bat 文件编辑以下内容 php "%~dp0composer.phar" %* 运行composer.bat ,出现版本号为成功 执行 composer self-update 以保持 Co…...
USB学习(1):USB基础之接口类型、协议标准、引脚分布、架构、时序和数据格式
连接计算机外围设备最简单的方法是通过USB(通用串行总线)。USB是即插即用接口,可以将扫描仪、打印机、数码相机、闪存驱动器等计算机外围设备连接到计算机上。本篇文章就来介绍一下USB的一些基础知识,包括。 文章目录 1 接口类型和标准规范2 引脚分布3 …...
less和scss语法详解
比较好的博客文章:Less使用语法(详细):https://blog.csdn.net/weixin_44646763/article/details/114193426 SCSS基本语法:https://www.jianshu.com/p/4efaac23cdb6 总结:我理解的点: 1、符号声…...
【计算机网络笔记】TCP/IP参考模型基本概念,包括五层参考模型
系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…...
RSA加密与签名的区别
文章目录 一、签名验签原理二 RSAUtils 工具类三、通过x509Certificate来获取CA证书的基本信息四、 通过公钥获取公钥长度 一、签名验签原理 签名的本质其实就是加密,但是由于签名无需还原成明文,因此可以在加密前进行哈希处理。所以签名其实就是哈希加…...
arcgis js api 4.x通过TileLayer类加载arcgis server10.2发布的切片服务跨域问题的解决办法
1.错误复现 2.解决办法 2.1去https://github.com/Esri/resource-proxy 网站下载代理配置文件,我下载的是最新的1.1.2版本,这里根据后台服务器配置情况不同有三种配置文件,此次我用到的是DotNet和Java. 2.2 DotNet配置 2.2.1 对proxy文件增加…...
如何让chatGPT给出高质量的回答?
如何让chatGPT给出高质量的回答? ChatGPT从入门到进阶教程合集_哔哩哔哩_bilibili 公式 【指令词】【背景】【输入】【输出要求】 1. 指令词 ——精准任务or命令 如:简述、解释、翻译、总结、润色 2. 背景 ——补充信息 如:简述一篇讲解…...
Java后端开发(八)-- idea(2022版)将commit(未push)的 本地仓库 的 单条commit记录 进行撤销
目录 1.修改Test01类后,提交到本地仓库 。 2.commit成功后,在Git =》Log中会显示,commit记录...
Mysql架构解析,InnoDB架构概述。
MySQL架构解析 Mysql整体架构 MySQL整体架构如下图所示: MySQL逻辑系统架构分为4层: 应用层MySQL服务层存储引擎层系统文件层 下面将对各层的功能和组件进行介绍,并探讨一条语句的执行过程。 应用层 应用层是MySQL体系架构的最上层,它…...
jmeter如何测试websocket接口?
jmeter做接口测试,很多人都是做http协议的接口,就有很多人问websocket的接口怎么测试啊? 首先,我们要明白,websocket接口是什么接口。 然后,我们怎么用jmeter测试? jmeter要测试websocket接口…...
15 Transformer 框架概述
整体框架 机器翻译流程(Transformer) 通过机器翻译来做解释 给一个输入,给出一个输出(输出是输入的翻译的结果) “我是一个学生” --》(通过 Transformer) I am a student 流程 1 编码器和解…...
[架构之路-241]:目标系统 - 纵向分层 - 企业信息化与企业信息系统(多台企业应用单机组成的企业信息网络)
目录 前言: 一、什么是信息系统:计算机软件硬件系统 1.1 什么是信息 1.2 什么是信息系统 1.3 什么是信息技术 1.4 什么是信息化与信息化转型 1.5 什么是数字化与数字化转型(信息化的前提) 1.6 数字化与信息化的比较 1.7 …...
flink中使用异步函数的几个注意事项
背景 在flink系统中,我们为了补充某个流事件成一个完整的记录,经常需要调用外部接口获取一些配置数据,流事件结合这些配置数据就可以组合成一条完整的记录,然而如果同步调用外部系统接口来实现,那么会有很大的性能瓶颈…...
QML之Repeater 控件使用
Repeater 控件是 重复作用 根据 model中的index 数量进行重复 废话不说 直接看如何用 当model 为数字时 Rectangle{height: 1200width: 500visible: trueanchors.fill: parentColumn{spacing: 20Repeater{model: 10delegate: Rectangle{width: 60height: 20color: index%2 …...
Day05:C语言数组存储结构与字符串详解
一、数组的存储结构1. 数组变量的地址连续性数组中的元素在内存中地址是连续的。数组名非常重要,涉及指针与内存操作。2. 数组名的含义数组名表示首元素的地址。示例:int arr[5]; printf("%p\n", arr); // 输出首元素地址 printf("%p…...
工业仿真混合引擎实时调度策略解析
工业场景下,混合引擎(通常指融合了传统物理求解器与AI/ML代理模型或神经求解器的仿真系统)的实时调度策略是实现数字孪生、预测性维护和实时优化的核心技术瓶颈。其核心目标是在满足确定性延迟和计算精度的前提下,动态分配计算资源…...
银河麒麟V10 SP1上编译Qt5.15.10,我踩过的那些依赖包的坑(保姆级避坑指南)
银河麒麟V10 SP1编译Qt5.15.10:深度解析依赖包陷阱与实战排错指南 当你在银河麒麟V10 SP1系统上尝试编译Qt5.15.10时,是否经历过这样的场景:满怀信心地执行./configure命令,却在几分钟后看到满屏红色错误提示?作为一款…...
从Karate Club到社交网络:用NetworkX和graspologic玩转Leiden社区发现
从Karate Club到社交网络:用NetworkX和graspologic玩转Leiden社区发现 在社交网络分析、生物信息学甚至推荐系统中,社区发现(Community Detection)都是一个绕不开的话题。想象一下,你手头有一份社交平台的好友关系数据…...
正确构建与还原特征分解:NumPy 中特征向量矩阵的列优先约定详解
本文详解为何用 NumPy 进行特征分解重建时 eigenvectors 顺序和方向“看似错乱”,核心在于明确 eig() 的输入/输出约定——特征向量必须以列(而非行)组织,且数值精度、排序与标量倍数等数学本质需同步理解。 本文详解为何用 …...
线上 CPU 暴涨 99%!MySQL只用了这一招,回表次数竟然减半?
周一早高峰,手机疯狂振动。 线上 CPU 报警 99.9%,慢查询日志塞满了磁盘。 小开发在一旁满头大汗:“Fox 哥,明明加了组合索引,回表次数怎么还是这么高?” 我端起咖啡,淡定一笑:“兄弟…...
【数据结构与算法】第46篇:算法思想(一):递归与分治
一、递归的本质 1.1 什么是递归 递归就是函数调用自身。一个递归函数通常包含两部分: 终止条件:什么时候停止递归 递推公式:如何将大问题转化为小问题 c // 阶乘的递归实现 int factorial(int n) {if (n < 1) return 1; // 终…...
从环路防护到负载均衡:MSTP在企业园区网中的高阶应用
从环路防护到流量调度:MSTP在企业园区网中的智能实践 当企业网络规模从几十台设备扩展到上千台终端时,简单的生成树协议(STP)就像用自行车锁管理停车场——虽然能防止车辆丢失,却无法实现车位高效周转。某跨国制造企业…...
【SRC实战】简单FUZZ拿下高危漏洞
【SRC实战】简单FUZZ拿下高危漏洞 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息、工具等资源而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任! 01背景 开…...
贾子智慧指数(KWI):能力穿透本质难度的统一数学标尺
贾子智慧指数(KWI):能力穿透本质难度的统一数学标尺摘要: 贾子智慧指数(KWI)是贾子理论体系中唯一可计算、可跨主体对比的智慧量化模型,核心公式为KWIσ(alog(C/D(n))),其中C为认知能…...
