node.js学习笔记(二)模块的调用

Node.js(二)之模块化 模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。和函数作用域类似,在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制,叫做模块作用域。Node.js中的第三方模块又叫做包。就像电脑和计算机指的是相同的东西,第三方模块和包指的是同一个概念,只不过叫法不同。①将格式化时间的功能,拆分到src ->中。 阅读详情

模块


在JavaScript中,每个JavaScript文件都被当做一个模块使用,而我们也可以通过npm从网上下载所要依赖的模块

模块的调用


常用模块的调用

在node.js中,我们经常会使用调用模块来实现各种功能,我们看看node.js官网的一段创建服务器的代码

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

在第一行中就使用了require来引入所需要的http模块,然后在下面就通过http的createServer方法来创建一个服务器,上面的服务器使用node命令就可以启动了。

JavaScript文件的调用

调用当前项目下的JavaScript文件,理所当然是需要写入路径的,假设我们项目有当前路径如下图

在两个文件中写入对应的代码,在index.js中调用main.js

//index.js

const main = require('./main');

console.log(main.a);

//main.js

var a = 2;

exports.a = a;

require和exports


require

在node中,通过使用require来调用其他模块,这些模块可以分为两种情况,放在node_moudles文件夹中的模块和其他路径下的模块。

对于require来说,如果在其后的括号内的路径不是以./开头,就会默认调用其父级文件夹中的node_moudles文件夹中的模块或是node安装位置的node_moudles文件夹中的模块。如上面调用http模块,或是调用使用npm导入的connect模块。

const http=require('http');
const connect=require('connect');

除了父级文件夹中和node安装位置的node_moudles文件夹外,其他文件都不会是这种写法的调用对象。

而如果要调用的文件是依据于当前的文件路径而定的话,就使用./为开头来调用,这里的“./”是表明了和当前文件处于同一文件夹下的文件,如上面提及的index.js文件和main.js文件处于同一文件夹下,就可以使用require("./main.js");(这里的“.js”可以省略)

exports

exports用于将当前文件/模块的内容暴露给其他文件,exports可以当前是一个对象,举个例子

假设当前index.js和test.js在同一文件夹下

// index.js

const test = require('./test');

console.log(test.a);
console.log(test.b);
console.log(test.c);

// test.js

var a = 1;
var b = 2;
var c = 3;
exports.a = a;
exports.b = b;

//运行index.js结果

// 1
// 2
// undefined

这里test.js将变量a,b两个变量交由exports暴露出去,然后index.js调用该模块,调用的test为一个对象,属性即为exports暴露出的变量,实际上也可以为方法。

这里的exports.后面跟着的属性名是可以自由定义的,但一般和对应的变量名或者方法名相同。

如果要暴露出一个构造方法或一个类,使用module.exports来暴露更为合适,同样举个例子

假设index.js和Person.js在同一文件夹下

//Person.js
//构造方法
function Person(name, age, sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
}

Person.prototype.sayHello = function() {
    console.log(`我叫 ${this.name} ,我今年${this.age}岁,我是${this.sex}的`);
}

//类
class Person {
    constructor(name, age, sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    sayHello() {
        console.log(`我叫 ${this.name} ,我今年${this.age}岁,我是${this.sex}的`);
    }
}



module.exports = Person;

//index.js
const Person = require('./Person');

var p = new Person('夏明', 20, '男');
p.sayHello();

//我叫 夏明 ,我今年20岁,我是男的

本来如果使用exports来暴露方法的话,方法就会变为赋值对象的方法了,即上面index.js文件中Person的一个方法,而通过使用module.exoprts就将对象直接变为对应的方法,用下面使用exports暴露的代码来区别一下

//Person.js
function Person(name, age, sex) {
    this.name = name;
    this.age = age;
    this.sex = sex;
}

Person.prototype.sayHello = function() {
    console.log(`我叫 ${this.name} ,我今年${this.age}岁,我是${this.sex}的`);
}

exports.Person = Person;

//index.js
const Person = require('./Person');

var p = new Person.Person('夏明', 20, '男');

p.sayHello();

//我叫 夏明 ,我今年20岁,我是男的

虽然结果一样,但Person.Person显然是奇怪的,所以我们要尽量避免这么做。

深入掌握JavaScript Node.js开发 本文还有配套的精品资源,点击获取 简介:JavaScript是前端开发中的主导语言,在Node.js环境下的服务器端编程中也显示出重要性。Node.js是一个基于V8引擎的跨平台JavaScript运行环境,具有事件驱动和非阻塞I/O特性,适用于构建高性能的并发服务器。该压缩包文件可能包含有关Node.js核心概念和模块的资料,比如模块化设计、文件系统操作、HTTP服务器创... 阅读详情

相关推荐

Nginx反向代理MinIO私有桶签名失效?一招解决Host头校验问题

本文详细解析了Nginx反向代理MinIO私有桶时出现的签名失效问题,重点解决了Host头校验导致的"SignatureDoesNotMatch"错误。通过精准配置proxy_set_header保持Host头一致性,并提供了二级目录代理和调试指南,帮助开发者高效解决这一常见技术难题。

weixin_29201313的博客 321

Node.js核心技术教程

一.模块化编程 闭包:有权访问另一个函数作用域内变量的函数。 (function(){...}()) (function(){...})() 函数名只是一个标识,是指向函数的指针,而函数名带上()才是执行函数。 匿名自执行函数:没有方法名的函数。 注:匿名自执行函数不加返回值,外部不能访问。        通过“匿名函数.函数名()”的方式进行调用。 var calculator...

Lyj的博客 1272

炸金花游戏(3)--基于EV(期望收益)的简单AI模型

前言:   炸金花这款游戏, 从技术的角度来说, 比德州差了很多. 所以他的AI模型也相对简单一些. 本文从EV(期望收益)的角度, 来尝试构建一个简单的炸金花AI. 相关文章:  德州扑克AI--Programming Poker AI(译).  系列文章说来惭愧, 之前一直叫嚷着写德州AI, 不过可惜懒癌晚期, 一直没去实践, T_T. 相比而言,***简单很多, 也更偏重于运...

weixin_30377461的博客 2340

Node.js模块化应用——在一个模块中导入另一个模块

文章目录1. 什么是模块化开发?2. Node.js中模块化开发规范3.exports与require的用法 1. 什么是模块化开发? 一个功能就是一个模块,多个模块可以组成完整应用,抽离一个模块不会影响其他功能的运行。 2. Node.js中模块化开发规范 Node.js规定一个JavaScript文件就是一个模块,模块内部定义变量和函数默认情况下在外部无法得到。 模块内部可以使用expo...

VR_tyy的博客 1287

dify离线部署

以bge-m3为例,本地部署bge-m3首先在一台能连网的linux服务器上(部署有ollama)创建想要保存模型的文件夹编辑ollama.service,配置ollama模型的保存路径添加模型存储地址将models目录设置属主,必须做,否则ollama无法启动重新加载配置文件并重启ollama测试ollama 运行是否正常最后拉取 bge-m3可在/opt/LLMModels/bge_m3/models目录下看到拉取得模型使用tar命令压缩文件夹。

weixin_42538734的博客 3065

实现两端固支梁热力耦合的有限元分析

在本文中,我们将使用Matlab实现两端固支梁的热力耦合有限元分析。我们假设梁的材料是均匀的,梁的截面积为1,长度为1,两端固支,且受到均匀分布的热荷载。接下来,我们需要组装全局刚度矩阵和热传导矩阵。对于两个相邻的元素,它们共享一个节点,因此需要使用连接矩阵将局部矩阵组装成全局矩阵。接下来,我们需要定义元素刚度矩阵和热传导矩阵。然后,我们需要定义载荷向量。然后,我们需要定义边界条件。在这个例子中,梁的两端固支,因此我们需要将两端节点的位移限制为0。最后,我们需要解决线性方程组,得到节点的位移和温度分布。

CyberSparkZ的博客 395

nodejs 调用多个js文件

被调用模块 (a.js): var WEB_APP={ userList: new Map() }; WEB_APP.User = class User { constructor() { this.client_id = ''; this.user_name = ''; } }; WEB_APP.hasClient = function(client_id) { return this.userList.has(client_id); }...

Ericohe的博客 1483

SAP 合并报表(EC-CS)完整方法论 + 全业务操作步骤

SAP合并报表(EC-CS)方法论与操作指南摘要 SAP EC-CS模块提供完整的集团合并解决方案,其核心方法论基于会计准则和集团管控逻辑,通过6大维度构建标准化合并体系:组织架构标准化、数据采集标准化、外币换算规则化、内部交易自动化抵消、股权与商誉规范化、报表出具灵活化。 实施过程分为两个阶段: 上线前配置阶段(12个步骤):包括合并架构搭建、科目表配置、外币规则设定、抵消规则定义等基础工作 日常操作阶段(10个步骤):涵盖数据报送、外币换算、内部对账、自动抵消、调整分录等月结流程 系统优势包括: 支持多

金牌架构师 1364

五、复杂项目中使用modules的方法

大型项目中,不同的模块的state、mutations、actions都放在一个文件中,使用,维护起来都非常难受(不清晰)——>把store分模块 使用场景:大型,复杂项目中多个组件共享store中一部分state,另一些组件共享另一部分state。

布白的博客 217

coredump文件的原理是啥

Core Dump(核心转储)是操作系统在程序崩溃(如段错误、非法指令等)时自动生成的一个文件,它包含了程序崩溃瞬间的。通过 core dump,开发者可以像“时间回溯”一样检查程序崩溃瞬间的状态,是调试复杂问题的利器!终止时,Linux 内核会生成 core 文件。不会生成 core dump,因为它们是“优雅终止”信号。这样 core 文件会直接压缩存储,节省磁盘空间。的文件(类似可执行文件),可以用。Core 文件本质上是一个。

二进制君 380

金融监管压力测试场景生成

压力测试是一种评估金融资产或机构在极端市场条件下的表现和风险承受能力的方法。它通过模拟各种不利的市场情景,测试金融机构在这些情景下的财务状况和运营能力。压力测试的作用在于帮助金融机构识别潜在风险,评估应对策略,并制定应急预案。总结压力测试场景生成系统的开发过程和实现效果,强调其在金融监管中的重要性和应用价值。随着金融市场的发展,实时压力测试将越来越重要。未来,压力测试需要更加注重实时性和动态性,及时反映市场的变化。本文详细介绍了金融监管压力测试的重要性、核心概念、算法原理、系统架构以及实战案例。

AI天才研究院 1208

JS模块化,ESM模块规范的 导入、导出、引用、调用详解

在之前的JS模块化的各种规范 之 CJS、AMD、CMD、UMD、ESM文章中,介绍了关于JS模块化的各种规范的区别和简单使用。由于ESM模块规范也是 ECMAScript2015(ES6)中的规范标准,在日常的Web项目开发、小程序开发、APP开发等都是很常用的,所以本文重点将 ESM模块规范中的 导出、导入、导出、引用、调用等,结合日常开发需求做进一步的介绍。

沐枫 4087

芯片ATE测试PAT(Part Average Testing)学习总结-20250916

文章摘要:零件平均测试(PAT)是半导体制造中基于统计学的质量控制方法,分为静态和动态两种类型。静态PAT通过预先设定的固定限值(每6-8批次更新)筛选异常芯片,计算采用稳健平均值和四分位间距。动态PAT则根据实时数据调整限值,能更精确识别异常而不误判合格芯片。两种方法均采用"均值±6倍标准差"的计算公式,但动态PAT具有更好的适应性和准确性。该方法通过统计分析提高了芯片产品的质量和可靠性。

歌颂苦难的行为是无耻的; 1190

Node.js学习笔记

基于nodejs学习笔记

gl199555的博客 2766

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

浏览器js调用nodejs模块,以uniq模块的调用为例

1前言 在日常开发中,有时浏览器网页的功能需要调用nodejs中的模块,比如加密解密模块,本文将以nodejs的uniq模块为例,讲解如何在浏览器的js中调用nodejs的uniq模块。 2安装各个必须模块 本文操作所在的系统为centos7 2.1安装node 本文使用编译好的二进制安装 2.1.1下载 wget https://nodejs.org/dist/v10.15.0/node-v1...

战争迷雾的专栏 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【Node.js】使用 Node.js 需要了解多少 JavaScript?

总的来说,使用 Node.js 开发并不要求你掌握所有 JavaScript 的高级知识,但了解 JavaScript 的基础和异步编程的核心概念,将大大提高你的开发效率。通过不断学习和实践,你将能够利用 Node.js 构建出高效、可扩展的应用程序。希望本文能帮助你了解在学习 Node.js 之前需要掌握的 JavaScript 知识,帮助你在 Node.js 的开发路上走得更远。祝你编码愉快!

佚名程序员 1931

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Node.js学习笔记详解

学习Node.js的重点笔记,图文详解了各模块,持续更新,欢迎收藏。 Node.js学习笔记——认识nodejs、详解fs文件系统模块与path路径模块_timerring的博客-优快云博客 Node.js学习笔记——详解http模块即创建web服务器基本步骤_timerring的博客-优快云博客 Node.js学习笔记——模块加载机制及npm指令详解_timerring的博客-优快云博客 Node.js学习笔记——Express、路由、中间件、接口跨域解决方案详解(附实例)_timerrin

timerring的博客 4万+

Node.Js基础——安装及模块

目录:一、什么是Node.Js?二、Node.Js的安装 1、下载地址及版本2、配置镜像站 3、终端中常用的命令及快捷键 三、核心模块;第三方模模块;自定义模块;

weixin_68856615的博客 2720

在C#中调用js脚本,js脚本中引用了node.js模块。

有些时候,在C#中执行一些操作的时候,自己用c#写可能不是很方便,而通过js脚本去实现可以在性能和遍历性上面有很大的提升,我也是个菜鸟小白一枚。初次去实现在c#中调用js脚本时,也遇到了不少麻烦。在此稍微总结一下,可能不是很专业。 如果是单纯的去执行一个js脚本,在js脚本中也没有涉及到require Node.js模块,那么相对来说在c#中调用js脚本去实现功能比较简单,不用去引用库什么...

IT_loveri的博客 4302

二、Node.js中的内置模块

快速了解并掌握Node.js中的文件系统(fs)与路径(path)模块的使用

回回左手力 1144

Node.js学习笔记(二)——Node.js内置模块

fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。

weixin_56370772的博客 692

《深入浅出Node.js》学习笔记——(二)模块机制

JavaScript的变迁   2.1 CommonJS规范 希望JavaScript能够在任何地方运行 2.1.1 CommonJS的出发点 针对JavaScript自身的缺陷: ①没有模块系统 ②标准库较少 ③没有标准接口 ④缺乏包管理系统   希望不仅可以利用JavaScript开发富客户端应用还可以编写: ①服务器端JavaScript应用程序 ②命令行工具 ③

w_Slide的专栏 1994

Node.js:内置模块

讲解Node.js的安装,运行以及内置模块,包括fs、path、http模块

博客网站 https://async-area.com 1695

Node.js:深入探秘 CommonJS 模块化的奥秘

在Node.js上下文环境中提供了一个module对象和一个exports对象。module代表当前模块,exports是当前模块的一个属性,代表要导出的一些API。一个文件就是一个模块,把方法或者变量作为属性挂载在exports对象上即可将其作为模块的一部分进行导出。// add.js在另一个文件中,我们可以通过requireadd(1, 2);// 输出 3Node.js的模块系统基于CommonJS规范,但在实现上进行了优化和扩展。

2301_79793626的博客 1517
上一篇: node.js学习笔记(一)package.json
下一篇: JavaScript防抖和节流
前端小黑
博客等级 码龄9年 148粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值