当前位置: 首页 > ds >正文

NodeJs模块化与JavaScript的包管理工具

Js:模块化规范的文章链接:https://blog.csdn.net/Y1914960928/article/details/131793004?spm=1011.2415.3001.5331

一、模块化:

1、导入文件的注意事项:

① 导入路径建议写 相对路径,且不能省略 ./../

② 文件的后缀如果是 js 或者 json,则可以省略后缀名

③ 如果导入的文件不是 js 或者 json,则以 js 文件进行处理

④ 如果导入的路径是个文件夹:

  • 检测文件夹下 package.json 文件是否存在,不存在则找 index.js 或者 index.json
  • package.json 文件存在,找 package.jsonmain 属性和属性值(引用的文件)
  • main 属性和属性值(引用的文件)存在,导入引用文件,不存在则报错。
  • index.js 或者 index.json存在,导入文件,不存在则报错。

在这里插入图片描述

2、导入自定义模块,require函数的工作流程:

① 将拿到的 相对路径 转为 绝对路径,然后定位到目标文件

② 进行缓存检测:

当前导入的模块文件,是否在缓存中。如果在缓存中,则直接在缓存中读取

③ 如果不在缓存中,则读取目标文件中的代码

④ 将拿到的目标文件的代码,用一个函数(立即执行函数)进行包裹并执行

可以在模块文件中通过 arguments.callee.toString() 来查看包裹函数

在这里插入图片描述

⑤ 将暴露模块的值放入缓存中

⑥ 返回 module.exports 的值

3、导入npm模块,require函数的工作流程:

① 在当前文件夹下的 node_modules 文件夹中寻找与引入模块同名的文件夹

找到引入模块同名的文件夹后,在引入模块同名的文件夹中找 package.json文件,然后找 package.jsonmain 属性和属性值(引用的文件)

② 如果 在当前文件夹下的 node_modules 文件夹中没有找到与引入模块同名的文件夹,则在上级目录中下的 node_modules 中寻找,直至找到磁盘根目录。

如果找到磁盘根目录,仍没有找到,则报错

二、包管理工具:

详细的使用文章:https://blog.csdn.net/Y1914960928/article/details/134706252

1、让 node 的应用程序自动重启:

① 安装命令:npm i -g nodemon

② 使用:nodemon 文件路径

③ 查看nodemon的安装路径:npm -g bin

2、npm 发布包:

① 新增一个包文件夹,在该文件夹中进行包的初始化:npm init

在这里插入图片描述

② 在该文件夹下新增入口文件 index.js(入口文件的名称与 package.json中的 main属性值一致), 在文件中声明函数,并且将数据进行暴露:

在这里插入图片描述

③ 注册账号: https://www.npmjs.com/signup

④ 确定使用的是官方镜像nrm ls

如果不是官方镜像,则使用nrm use npm修改为官方镜像

⑤ 登录账号:npm login

在这里插入图片描述

⑥ 发布包:npm publish

如果出现如下错误,请检查:

  • 是否登入正确的账户:npm whoami
  • 当前的包名是否被占用
    在这里插入图片描述
    在这里插入图片描述

3、npm 更新包:

① 更新包中的代码:

在这里插入图片描述

② 测试代码是否可用:

新建一个 test.js 文件进行测试:

在这里插入图片描述

③ 修改 package.json 中的版本号:

在这里插入图片描述

④ 发布更新:npm publish

4、npm 删除包:npm unpublish

删除包需要满足的条件:https://docs.npmjs.com/policies/unpublish
在这里插入图片描述

5、扩展:

① 其它语言的包管理工具:

(1)PHPcomposer
(2)Pythonpip
(3)Javamaven
(4)Gogo mod
(5)RubyrubyGems

② 操作系统的包管理工具:

(1)Centosyum

https://packages.debian.org/stable/

(2)Ubuntuapt

https://packages.ubuntu.com/

(3)MacOShomebrew

https://brew.sh/

(4)Windowschocolatey

https://chocolatey.org/

http://www.xdnf.cn/news/2704.html

相关文章:

  • 快手极速版安卓版流量消耗与观看体验优化评测
  • JAVA数据结构
  • (即插即用模块-特征处理部分) 四十二、(2024 TPAMI) FreqFusion 频率特征融合
  • Nginx的默认主配置文件 “/etc/nginx/nginx.conf“ 解读
  • SQL Server 存储过程开发手册
  • 2025系统架构师---主程序/子程序架构风格
  • 小白学习java第16天(上): javaWeb
  • 【Redis】基础3:一些应用场景
  • TCP协议
  • 2个关键思路,让微课动画场景制作别具一格
  • Fps鬼泣总结:通信——伤害检测
  • 【数据结构】顺序表
  • 伺服电机AB相输出,接入定时器通道,对定时器IO口的速率有何要求【详细分析】
  • 【Unity完整游戏开发案例】从0做一个太空大战游戏
  • MySQL主从同步原理与实践 - Java架构师面试解析
  • 【Python】Matplotlib:立体永生花绘制
  • 单值映射、多值映射
  • Linux:进程间通信->共享内存
  • 开源网络入侵检测与防御系统:Snort
  • 企业私有大模型DeepSeek落地部署该用什么? Ollama还是vLLM
  • PlatformIO 入门学习笔记(一):背景了解
  • 【每天一个知识点】correntropy(相关熵)
  • 08-STM32外部中断
  • el-input限制输入只能是数字 限制input只能输入数字
  • 中国区域250米归一化植被指数数据集(2000-2023)
  • 迅雷精简绿色融合版【高速下载版】12.1.9.2870【11.2.2.1716】【20250426】
  • 树莓派学习专题<10>:使用V4L2驱动获取摄像头数据--申请和管理缓冲区
  • 【PVR】《Adaptive Palm Vein Recognition Method》
  • codeforcesB. Binary Colouring
  • 实人认证开发指南:用API+深度学习构建人证合一系统