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.json
中main
属性和属性值(引用的文件)main
属性和属性值(引用的文件)存在,导入引用文件,不存在则报错。index.js
或者index.json
存在,导入文件,不存在则报错。
2、导入自定义模块,require
函数的工作流程:
① 将拿到的 相对路径
转为 绝对路径
,然后定位到目标文件
② 进行缓存检测:
当前导入的模块文件,是否在缓存中。如果在缓存中,则直接在缓存中读取
③ 如果不在缓存中,则读取目标文件中的代码
④ 将拿到的目标文件的代码,用一个函数(立即执行函数)进行包裹并执行
可以在模块文件中通过
arguments.callee.toString()
来查看包裹函数
⑤ 将暴露模块的值放入缓存中
⑥ 返回 module.exports
的值
3、导入npm
模块,require
函数的工作流程:
① 在当前文件夹下的 node_modules
文件夹中寻找与引入模块同名
的文件夹
找到
引入模块同名
的文件夹后,在引入模块同名
的文件夹中找package.json
文件,然后找package.json
中main
属性和属性值(引用的文件)
② 如果 在当前文件夹下的 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)PHP
: composer
(2)Python
: pip
(3)Java
: maven
(4)Go
: go mod
(5)Ruby
: rubyGems
② 操作系统的包管理工具:
(1)Centos
: yum
https://packages.debian.org/stable/
(2)Ubuntu
: apt
https://packages.ubuntu.com/
(3)MacOS
: homebrew
https://brew.sh/
(4)Windows
: chocolatey
https://chocolatey.org/