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

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/

相关文章:

  • 前端开发资源缓存策略
  • 蓝桥杯 9.生命之树
  • 深入理解 JavaScript 的 typeof 运算符:返回的数据类型
  • 2024ICPC网络赛第二场题解
  • 个人介绍网站设计
  • Charles 抓包入门教程
  • 事件绑定tips
  • 【MySQL专栏】MySQL数据库表的内外连接
  • 连接远程服务器
  • Golang | 集合求交
  • 中国科学院大学计算机考研历年初试分数线分析以及计算机所考的科目有哪些?
  • apple提包的最佳时间是月初和月末
  • 学习笔记2(Lombok+算法)
  • 互联网大厂Java面试:从Spring Boot到微服务架构的实践与挑战
  • 【上位机——MFC】文档
  • Java基础——排序算法
  • Nacos-SpringBoot 配置无法自动刷新问题排查
  • 高德地图 API 拿到当前定位和目的地址转经纬度,实现路径规划
  • Matlab算例运行
  • 数据库关系模型的总结
  • 美加征“对等关税”后,调研显示近半外贸企业将减少对美业务
  • 人民时评:投资于人,促高质量充分就业
  • 央视曝光假进口保健品:警惕!保税仓发货不等于真进口
  • 仲裁法修订草案二审稿拟增加规定规制虚假仲裁
  • 广汽集团一季度净亏损7.3亿元,同比转亏,总销量下滑9%
  • 神舟二十号载人飞船与空间站组合体完成自主快速交会对接