Node.js之CommonJS、模块化理解、导入、导出、CommonJs的模块化机制

当你被问到前端模块化?(2026) 1. 模块化简述 把复杂代码按功能的不同划分成不同的模块单独维护,提高开发效率,降低维护成本 模块化只是思想、理论,不包含具体实现 2. 模块化的诞生 简单来说,就是一个人做不完的事,分成了多个人做,每人负责一个块内容(模块),最后把每个人做的东西组装一起成为整体 阅读详情

CommonJS规范

  1. 一个js文件就是一个模块
  2. 模块内所有的变量均为局部变量,不会污染全局
  3. 模块中需要提供给其他模块使用的内容需要导出
  4. 导出使用exports.xxx = xxx或module.exports=xxx或this.xxx=xxx
  5. 其他模块可以使用require函数导入

node实现了CommonJS规范

在编写模块时,都有require、exports、module三个预先定义好的变量可以使用。

require{}函数的两个作用

  1. 执行导入的模块中的代码;

  2. 返回导入模块中的接口;

导入

let a = require('./b');
console.log(a);

 导出

let a = 123;
exports.a = a;

modules.exports 默认就是等于 exports

let a = 123;
let b = 23;
let c = 789;
exports.a  = a;
module.exports.c = c;

总结

  1. Node中每个模块都有一个module对象,module对象中有一个exports属性为一个接口对象,我们需要把模块之间的公共的方法或者属性挂载在这个接口对象中,方便其他模块使用这些公共的方法或者属性。
  2. Node 中每个模块都会把module.exports指向的对象赋值给一个变量exports,也就是说exports = module.exports.
  3. Node中每个模块的最后,都会return:module.exports。
  4. module.exports = xxx,表示当前模块导出一个单一成员,结果就是xxx。
  5. 如果需要导出多个成员变量时,必须使用exports.add = xxx; exports.foo = xxx; 或者使用 module.exports.add = xxx; module.export.foo = xxx; 

CommonJs的模块化机制

如果我们想要使用第三方包,那么就需要npm去下载,Node.js中使用CommonJs模块化机制,通过npm下载第三方包,

我们在项目中引入第三方包都是let xx=require('第三方包名');究竟require 方法加载第三方包的原理机制如下:

  1. require('第三方包名') 优先在加载该包的模块都是同级目录 node_modules 中查找第三方包,如果有则加载。

let tempate  = require('art-template') //加载第三方包

设置国内npm 镜像地址

npm install -g cnpm  --registry=https://registry.npm.taobao.org

等待安装成功 

 然后比如要引入jquery 那么执行

npm  install jquery

然后重新查看目录就会发下 多了一个node_modules 文件夹,这个文件夹下的就是你所引入的第三方包

然后使用require使用jQuery

let $ = require('jquery');

2.找到该第三方包中的package.json文件,并且找到里面的main属性对应的如果模块,该入口模块即为加载的第三方模块。

所以jquery.js 就在 dist目录下

很明显,可以看到  module.exports 的实现方法。

3.如果在要加载的第三方包中没有找到package.json 文件或者是在package.json文件中没有main 属性

则默认加载第三方包中的index.js文件。

4.如果在加载第三方模块的文件的同级目录没有找到node_modules 文件夹,或者以上所有的情况都没有找到,

则会向上一级父目录下查找 node_modules 文件夹,查找规则如上一致。

npm 是什么

npm是Node JavaScript平台的软件包管理器。它将模块放置在适当的位置,以便节点可以找到它们,并智能地管理依赖关系冲突

https://www.npmjs.cn/

npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块)。来自各大洲的开源软件开发者使用 npm 互相分享和借鉴。包的结构使您能够轻松跟踪依赖项和版本。

下面是关于 npm 的快速介绍:

npm 由三个独立的部分组成:

  • 网站
  • 注册表(registry)
  • 命令行工具 (CLI)

npm常用命令

npm  -v 查看npm 版本。

npm  init 初始化后会出现一个package.json配置文件,可以在后面加上 -y,快速跳过问答式界面。

npm  install 会根据项目中的package.json文件自动下载目录中所需要的全部依赖。

npm install 包名 --save-dev(npm install 包名 -D) 安装的包只用于开发环境,不会用于生产环境,会出现在package.json文件中的devDependencies属性中。

npm install 包名  --save(npm install 包名 -S) 安装的包需要发布到生产环境,会出现在package.json文件的dependencies 属性中。

npm list 查看当前目录下已安装的node 包

npm list -g 查看全局已经安装过的node 包

npm  --help 查看npm 帮助命令

npm update 包名:更新指定包名

npm uninstall 包名: 卸载指定包

npm config list 查看配置信息

npm 指定命令 --help 查看指定命令的帮助

npm info 指定包名 查看远程npm 上指定包的所有版本信息

npm config set registry https://registry.npm.taobao.org: 修改下载镜像为淘宝镜像

npm root 查看当前包的安装路径

npm -root -g 查看全局的包的安装路径

npm ls 包名 查看本地安装的指定包的版本信息,没有显示empty

npm ls 包名 -g 查看全局安装的指定包的版本信息,没有显示empty

IMU预积分【SLAM】 预积分的推导过程比较多,所以这里只记录关键结论。 其实这些公式不太好记忆,因为预积分推导过程的想法来源很巧妙,无法看出物理意义。一切推导的来源: 最好记忆的旋转相对运动量: △Rij≐RiTRj=∏k=ij−1Exp((ω~k−bg,k−ηgd,k)△t)\triangle R_{ij} \doteq R_{i}^{T}R_{j} = \prod_{k=i}^{j-1}Exp((\tilde{\omega}_{k}-b_{g,k}-\eta_{gd,k})\triangle t) △Rij​≐RiT​Rj​ 阅读详情

相关推荐

手把手教你用Anaconda安装李沐d2l-zh包(附常见报错解决方案)

本文提供了一份详尽的Anaconda环境下安装李沐d2l-zh包的实战指南。文章从创建虚拟环境、配置国内镜像源加速下载入手,分步讲解核心依赖的预安装策略,并重点剖析了安装过程中常见的报错及其解决方法,旨在帮助初学者和开发者高效、稳定地搭建深度学习实验环境。

efc1234567的博客 1010

导入和导出的两种方法

2.使用ES6进行导出和导入。设置好方法 使用。在vue文件里面使用。进行导出 或者使用。导入使用方法 使用。

red_HTML的博客 1255

【已解决,极简单!!】求助,R语言读取csv文件各种报错

【已解决】本来之前没问题,今天更新了Rstudioh以及R,就各种报错了。也看了目前能读取到的文件,从第一个中文字符直接就没有了。也就是说 还是读取中文字符的问题?新人初学,求大佬轻喷!

youyouluming945的博客 3878

CommonJS和ES6中的导入导出使用总结

一、CommonJS的导入导出 1、使用exports导出(注意是有s) (1)注意:exports刚开始是一个空对象,我们可以在这个对象中添加很多个属性,添加的属性会被导出; //这是 main.js文件 let name = 'miracle'; let age = 18; function abc() { console.log('你好'+name); } exports.name = name; exports.age = age; exports.abc = abc; (2)另外一个文件

weixin_45727472的博客 6236

别再让充电器‘罢工’了!聊聊Charger里VIN-DPM这个不起眼但关键的功能

本文深入探讨了充电IC中的VIN-DPM(输入电压动态电源管理)功能,揭示其如何智能调节充电策略以避免电源适配器过载。通过实际案例和实验室数据,展示了VIN-DPM在提升充电稳定性和效率中的关键作用,并提供了选型、设计和故障排查的实用指南。

weixin_33738578的博客 416

项目实训(四)——SAM模型的学习与部署

这里的show_mask就是我们用mask的prompt进行分割,show_points就是我们用points进行分割,show_box就是通过box进行分割,这是SAM的三种prompt的方式。总的来说,Meta AI 的 Segment Anything 模型为我们提供了一种全新的物体识别和分割方式,其强大的泛化能力和广泛的应用前景将极大地推动计算机视觉领域的发展。这里有vit_h、vit_b、vit_l三种权重模型,这里可以根据自己的需要下载相应的权重模型。我们是下载的vit_h权重模型。

yyyyyyyx_的博客 1421

CommonJS模块化的导入导出操作

CommonJS 规范下的模块导入导出操作

northcastle的博客 1420

YOLOv11训练命令完全指南:从核心参数解析到高级调优实战(数据配置、epochs设定、batch-size优化与img-size调整)(二)

本文介绍了YOLOv11训练命令的完整配置与解析,提供了基础训练命令示例及参数详解。示例命令包含数据集配置(coco.yaml)、训练轮次(300)、批次大小(64)、图像尺寸(640)等核心参数,以及优化器(AdamW)、学习率(0.001)等调优选项。通过代码实现展示了训练器的初始化流程,包括参数解析、设备设置、数据加载和模型创建等关键步骤,为YOLOv11模型训练提供了实用指导。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1094

common.js标准和ES6标准下Node模块的导入导出

自己随手写的,很基础的东西

qq1319504645的博客 482

pi-coding-agent 完整详解

pi-coding-agent是一个由Mario Zechner开发的专业AI编程助手,基于Node.js和TypeScript构建。核心功能包括:1)多级思考模式(ThinkingLevel),从none到ultra控制推理深度;2)对话压缩(compaction)管理长对话记忆;3)WebSocket实时通信支持流式交互。该智能体支持代码生成、调试、重构等专业编程任务,采用AI Agent架构,具备工具调用和多轮记忆能力。项目结构通常包含server、agent、config等模块,可通过二次开发扩展功

大坡3D软件开发 2418

【深度学习新浪潮】算力行业的核心技术有哪些?

算力行业核心技术是芯片+互联+存储+调度+能效+软件的全栈协同:芯片提供算力、互联打通集群、存储保障数据、调度提升效率、能效支撑规模、软件释放算力。当前AI大模型推动算力从“单机”走向“万卡级超节点集群”,技术竞争从单一芯片升级为系统级、全栈化的综合能力。

专注:太空算力、AI infra、异构调度、大模型成本工程 338

前端的导入导出:「CommonJS」「ES Module」模块化规范

模块化开发有助于我们将代码进行拆分,便于开发和维护,但如果不清楚模块化规范,就会在开发时不知道该用 require 还是 import,导出时该用 export 还是 module.exports,所以我们必须搞清除它们的区别和事情的来龙去脉。本篇主要内容是 CommonJS 和 ES Module 规范。其它还有 AMD、CMD、UMD规范,感兴趣的小伙伴可以自行了解一下。

qq_45225759的博客 2044

【WRF-FDDA】观测 Obs nudging 的配置与使用说明(中)

WRF-FDDA

WW、forever的博客 281

【JavaScript】经典的模块化规范——CommonJS和ES6

本文介绍了JavaScript中两种经典的模块化规范:CommonJS和ES6模块化。CommonJS主要用于Node.js服务器端,通过exports和module.exports导出数据,最终导出的是module.exports的值。ES6模块化是官方标准,支持浏览器和Node.js,提供了多种导出和导入方式。两种规范在数据引用上有区别:CommonJS导出的是值的拷贝,而ES6导出的是值的引用。文章还比较了两种规范的特点,并说明了在浏览器和Node.js中运行ES6模块的方法。

v0_persistent的博客 2203

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

怀旧版电脑GBC模拟器

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

CommonJS 模块系统 Node.js 模块导入

以http模块为例,尽管在目录下存在一个 http/http.js/http.node/http.json 文件,require("http") 都不会从这些文件中加载,而是从原生模块中加载。当文件模块缓存中不存在,而且不是原生模块的时候,Node.js 会解析 require 方法传入的参数,并从文件系统中加载实际的文件,加载过程中的包装和编译细节在前一节中已经介绍过,这里我们将详细描述查找文件模块的过程,其中,也有一些细节值得知晓。模块缓存机制:Node.js 会将已加载的模块缓存起来,以提高性能。

phgnmjvf778fbb的博客 733

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

CommonJS是什么,5分钟讲清楚

CommonJS 是 JavaScript 模块化的早期标准,解决了服务器端 JS 的代码组织问题,是 Node.js 生态的基础。虽然现在 ES6 模块逐渐成为主流,但理解 CommonJS 有助于掌握 JS 模块化的演进,以及兼容旧项目或打包工具(如 Webpack 对 CommonJS 的支持)。惠州大亚湾。

jongden的专栏 888

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ES6模块的导入、导出

模块:一个js文件就是一个模块,模块内部的成员都是相互独立,该文件内部的所有变量,外部无法获取。 模块化有两个核心:导出和导入 ES6 模块是编译时加载(静态加载),在编译时就能确定模块的依赖关系,以及输入和输出的变量。 export export用于导出,可以输出变量、函数或类(class) // 输出单个变量 export const title = '大数据可视化平台'; // 输出一组变量(推荐用法) const author = 'Jack'; const year = 1958; export

weixin_42684860的博客 828

commonJs和es6的区别

commonJs和es6的区别

samscat的博客 970

nodejs - ES6 模块与 CommonJS差异

本文比较了ES6模块与CommonJS模块的主要区别,并详细介绍了它们的导出和导入方式。ES6模块输出的是值的引用,编译时加载,支持异步导入;CommonJS输出的是值的拷贝,运行时同步加载。CommonJS通过require导入,exports或module.exports导出;ES6模块通过import导入,export或export default导出。文章还提供了两种模块的具体使用示例,并指出ES6模块默认启用严格模式,而CommonJS模块需要注意缓存和覆盖问题。

尽日寻春不见春,芒鞋踏遍陇头云。归来笑拈梅花嗅,春在枝头已十分。 647

前端模块化CommonJs和ES6 module

模块化的概念 CommonJs require函数原理 ES6 module

weixin_45805570的博客 145

Node.js基础学习--Node.js 模块化机制

Node.js基础学习--Node.js 模块化机制什么是模块化机制CommonJS 规范CommonJS 规范的特点module 对象module.exportsrequire 命令加载规则require main目录的加载规则 什么是模块化机制 模块化是一种设计思想。通过将整体的系统分割成小模块来实现,以降低开发的难度。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。 Node 遵循了 CommonJS 的模块规范,来隔离每个模块的 作用域,使每个模块

qq_44017357的博客 204

js模块化(ESModule与CommonJS)

写在前面的 模块化开发方式可以提高代码复用率,方便进行代码管理。通常一个文件就是一个模块,有自己的作用域,只向外暴露特定的变量和函数。目前我们开发中主要用到的是 CommonJS 和 ES Module。 模块化带来的好处: 避免命名冲突 更好的分离 更高复用性 更高可维护性 不知道大家有没有遇到过 export、exports、export default、module.exports 傻傻分不清的情况????? 1、CommonJS Node.js是commonJS规范的主要实践者。Node 应

weixin_43917792的博客 1385

「万字进阶」深入浅出 Commonjs 和 Es Module

一 前言 今天我们来深度分析一下Commonjs和Es Module,希望通过本文的学习,能够让大家彻底明白Commonjs和Es Module原理,能够一次性搞定面试中遇到的大部分有关Commonjs和Es Module的问题。 老规矩我们带上疑问开始今天的分析????????????: 1 Commonjs 和 Es Module 有什么区别 ? 2 Commonjs 如何解决的循环引用问题 ? 3 既然有了exports,为何又出了module.exports? ...

octopus的专栏 600

Node.js 模块导入

当你开始写 Node.js 项目时,最先遇到的问题之一就是——如何导入模块(module)。在 Node.js 里,模块就是可以重复使用的 JavaScript 文件,它们之间通过导入(import)和导出(export)互相通信。和。

mdbmddm494frf的博客 732

Node系列(二)——module.exports和exports对象

介绍module.exports和exports对象

hjw15910531612的博客 564

一道代码题看 CommonJS 模块化规范

在模块内部定义的变量,无法在其他模块中所读取。根据CommonJS模块化规范,一个单独的JS文件就是一个模块,每个模块是一个单独的。再次导入相同模块时,并不会再执行了,会直接从内存中取这个。实际上,在第一次导入中,会执行要导入的文件,并在内存中缓存一个对象,其中。,形成循环引用,是否会报错呢?若不报错,运行的结果是怎么样的?导入模块,实际上就是执行一遍要导入的模块,然后将其输出的。,说明若多次引用,实际上导入的模块是同一个对象。模块,并判断两个导入的变量是否为相等。属性,分别是文件中定义的常量。...

火星基地 834
上一篇:  Node.js介绍和安装
下一篇: Node.js Buffer、fs同步和异步(写入,读取)简单(写入、读取)流式(写入、读取)
白马非马啊
博客等级 码龄10年 13粉丝 53原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值