node中的模块

@node中的模块

npm 的基本操作

安装

npm i 包名称

导入

 const moment = require('moment')

安装指定版本的包

npm i 包名称@版本号

包管理配置

如何记录项目中安装了哪些包

在项目根目录中,创建一个叫做package.json的配置文件,即可用来记录项目中安装了哪些包。从而方便剔除 node_modules 目录之后,在团队成员之间共享项目的源代码。

注意:今后在项目开发中,一定要把node_modules 文件夹,添加到.gitignore 忽略文件中。

快速创建 package.json 文件 英文名 不能空格

npm init -y

一次性安装 package.json里面所有的文件

npm i  

卸载

npm uninstall  文件名 
npm remove  文件名 

devDependencies节点

如果某些包只在项目开发阶段会用到,在项目上线之后不会用到,则建议把这些包记录到devDependencies 节点中。
与之对应的,如果某些包在开发和项目上线之后都需要用到,则建议把这些包记录到dependencies 节点中。

安装指定的包 并记录到 devDependencies 节点中

npm i 包名 -D

查看当前的下包镜像源

npm config get registry

将下包的地址切换为淘宝镜像源

npm config set registry=http://registrynpm.taobao.org/

解决下包慢的问题

通过 npm 包管理器 将 nrm 安装为全局可用的工具

npm i nrm -g 

查看所有可用的镜像源


```javascript
nrm ls

**将下包的镜像源切换为 taobao 镜像**

```javascript

nrm use taobao

包的分类

项目包

那些被安装到项目的 node_modules 目录中的包,都是项目包。

项目包又分为两类,分别是:
开发依赖包

npm i 包名 -D 

(被记录到devDependencies 节点中的包,只在开发期间会用到)
核心依赖包

npm i 包名

(被记录到dependencies 节点中的包,在开发期间和项目上线之后都会用到)

全局包

在执行 npm install 命令时,如果提供了-g 参数,则会把包安装为全局包。

全局包会被安装到C:\Users\用户目录\AppData\Roaming\npm\node_modules 目录下。

npm i 包名 -g   全局安装指定的包
npm uninstall 包名 -g   卸载全局安装的包

注意:

① 只有工具性质的包,才有全局安装的必要性。因为它们提供了好用的终端命令。
② 判断某个包是否需要全局安装后才能使用,可以参考官方提供的使用说明即可。

i5ting_toc

i5ting_toc 是一个可以把 md 文档转为 html 页面的小工具

将 i5ting_toc 安装为全局包

npm install -g i5ting_toc

调用 i5ting_toc 轻松实现 md 转 html 的功能

i5ting_toc -f 要转换的md文件路径 -o

规范的包结构

一个规范的包,它的组成结构,必须符合以下3 点要求:
① 包必须以单独的目录而存在
② 包的顶级目录下要必须包含 package.json 这个包管理配置文件
③ package.json 中必须包含 name,version,main这三个属性,分别代表包的名字、版本号、包的入口。
**注意:**以上 3 点要求是一个规范的包结构必须遵守的格式,关于更多的约束,可以参考如下网址:
https://yarnpkg.com/zh-Hans/docs/package-json

模块的加载机制

优先从缓存加载

模块在第一次加载后会被缓存。这也意味着多次调用require() 不会导致模块的代码被执行多次。
注意:不论是内置模块、用户自定义模块、还是第三方模块,它们都会优先从缓存中加载,从而提高模块的加载效率。

内置模块的加载机制

内置模块是由Node.js 官方提供的模块,内置模块的加载优先级最高。
例如,require(‘fs’) 始终返回内置的fs 模块,即使在node_modules 目录下有名字相同的包也叫做fs。

自定义模块的加载机制

使用 require() 加载自定义模块时,必须指定以./ 或 …/ 开头的路径标识符。在加载自定义模块时,如果没有指定./ 或 …/ 这样的路径标识符,则 node 会把它当作内置模块或第三方模块进行加载。
同时,在使用require() 导入自定义模块时,如果省略了文件的扩展名,则Node.js 会按顺序分别尝试加载以下的文件:
① 按照确切的文件名进行加载
② 补全 .js 扩展名进行加载
③ 补全 .json 扩展名进行加载
④ 补全 .node 扩展名进行加载
⑤ 加载失败,终端报错

第三方模块的加载机制

如果传递给 require() 的模块标识符不是一个内置模块,也没有以‘./’ 或 ‘…/’ 开头,则 Node.js 会从当前模块的父 目录开始,尝试从/node_modules 文件夹中加载第三方模块。
如果没有找到对应的第三方模块,则移动到再上一层父目录中,进行加载,直到文件系统的根目录。
例如,假设在’C:\Users\itheima\project\foo.js’ 文件里调用了 require(‘tools’),则 Node.js 会按以下顺序查找:
① C:\Users\itheima\project\node_modules\tools
② C:\Users\itheima\node_modules\tools
③ C:\Users\node_modules\tools
④ C:\node_modules\tools

目录作为模块

当把目录作为模块标识符,传递给 require() 进行加载的时候,有三种加载方式:
① 在被加载的目录下查找一个叫做package.json 的文件,并寻找main 属性,作为require() 加载的入口
② 如果目录里没有 package.json 文件,或者 main 入口不存在或无法解析,则 Node.js 将会试图加载目录下的 index.js 文件。
③ 如果以上两步都失败了,则 Node.js 会在终端打印错误消息,报告模块的缺失:Error: Cannot find module ‘xxx’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值