node---模块

模块化

模块的分类

node中的模块分为三种

  • 内置模块
  • 自定义模块
  • 第三方模块

内置模块主要有

  • path路径模块
  • http网络模块
  • fs文件模块
  • os操作系统模块

这些模块内封装了一些属性和函数,用到的时候可以查一下
node基础教程

模块加载机制

整体机制

JS的模块在导入时会执行模块内的代码

  • 加载内置模块和第三方模块只需要写模块名字
  • 加载自定义模块要写路径(可以不写后缀名)
  • 模块优先从缓存中加载
  • 内置模块加载优先级最高

自定义模块查找顺序

自定义模块必须以./ 或者 …/开头
自定义模块如果省略的文件的扩展名,则会按照下面的顺序来查找

  1. 无扩展名
  2. 补全js
  3. 补全json
  4. 补全node
  5. 报错

第三方模块加载机制

会先在文件所在的目录查找
如果找不到就去上一级目录中查找
直到找到或者查找到磁盘的根目录依然找不到报错

将目录作为模块

  1. 查找这个目录下的package.json中记录的入口

  2. 如果main记录的入口不存在则会记载index.js

  3. 如果依然失败则报错

CommonJS

作用域

在node中会默认使用模块化
模块作用域的变量和函数只能在当前模块中使用

规范

  • 每个模块内有一个module对象代表当前模块
  • module对象上有一个exports属性,导入的永远是这个属性的内容
  • 使用require方法来加载模块

exports对象

  • module中有一个exports属性,这个属性中的内容会被暴露出去,require导入的就是exports暴露的内容

  • 为了方便导出,node也提供了exports对象,默认和module的exports属性指向相同。

  • 但如果直接给exports属性赋值,则会修改exports对象的指向,导致对象失效,无法正常导出。

npm

什么是npm

npm 是node的一个包管理工具,内置了许多指令来管理包。

  • npm i <包名> 可以安装包,在安装时可以使用@来指定版本
  • npm -v 查看npm的版本
  • npm init -y 用来初始化项目,创建package.json
  • npm i 可以安装package.json中的所有依赖包
  • npm uninstall 可以卸载掉已经安装的包

下载的包存放咋node_modules文件夹下
package_lock.json 记录了安装的包的信息,不要修改这个文件的信息

nrm

nrm是npm的一个小工具,可以安装nrm开获取更多指令

npm i nrm -g

这个工具可以获得快速查看和切换下包的源

  • 查看所有的源:nrm ls
  • 切换为淘宝镜像:nrm use taobao

包管理文件

一般项目中都会有一个package.json的文件,用来记录项目中需要用到哪些包。

包的规范

  • 包必须以单独的目录存在

  • 包的根目录必须包含package.json文件

  • package.json中必须包含nameversionmain 字段

包的分类

  1. 全卷包
    在安装时提供 -g 参数的包会被变为全局包
    这些包被安装在c盘的默认路径中
    一般只有可以提供指令的工具类包才会全局安装
  2. 项目包
    安装在项目的node_modules中的包
    在安装项目包时加上-D会被视为开发时依赖,被记录在package.json的Devdependencies属性下
    其余的包会被视作运行时依赖,被记录在dependencies属性下

猜你喜欢

转载自blog.csdn.net/m0_66711291/article/details/126562484