程序员书籍笔记 程序员书籍笔记
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • HTML
  • CSS
  • JavaScript
  • 前端知识
  • Vue
  • MarkDown
  • git
  • Node.js
  • Linux
  • 51单片机
  • 四级
  • 第一学期课程
  • 操作系统
  • 计算机网络
  • 数据结构
  • 计算机组成原理
  • HTML5
  • Electron
  • 日记便签
  • 前端导航
GitHub (opens new window)
  • Vue

  • Nuxt

  • Echarts

  • Node

    • node基础
    • node模块化
    • npm
      • npm
      • 基本使用
        • 安装指定版本的包
        • 语义化版本规范
      • 包管理配置文件
        • 创建 package.json
        • dependencies
        • 卸载包
        • devDependencies
      • 包分类
        • 项目包
        • 全局包
        • 示例 i5ting_toc
      • 发布自己的包
      • 模块加载机制
      • 解决下包慢问题
        • nrm
    • demo
  • git

  • express

  • 微信小程序

  • Spring

  • 后端知识

  • Markdown

  • project

  • 自用文档查询

  • 框架和软件
  • Node
yuadh
2022-02-11
目录

npm

# npm

Node.js 中第三方模块叫做包

包是基于内置模块封装出来的,提供了更高级、更方便的API,极大的提高了开发效率

包下载地址

www.npmjs.com

服务器下载

# 基本使用

  1. 使用 npm 包管理工具,在项目中安装格式化时间的包 (moment)
  2. 使用 require() 导入格式化时间的包
  3. 参考 moment 的官方API文档对时间进行格式化

安装包命令

npm install 包名称
1

简写

npm i 包名称
1

注意

初次装包完成后,多出 node_modules 和 pack-lock.json

  • node_modules 文件夹用来存放已安装到项目中的包
  • package-lock.json 配置文件用来记录 node_modules 目录下每一个包的下载信息,包名、版本号、下载地址等

# 安装指定版本的包

npm i xxx@版本号
///
npm i moment@2.24.0
1
2
3

# 语义化版本规范

第一个数字 : 大版本

第二个数字 : 功能版本

第三个数字 : Bug修复版本

# 包管理配置文件

npm 规定,在项目根目录中,必须提供一个叫 package.json 的包管理配置文件。用来记录与项目有关的一些配置文件信息

  • 项目的名称、版本号、描述等
  • 项目中都i用到了那些包
  • 那些包只在开发期间会用到
  • 那些包在开发和部署时都需要用到等

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

解决 在 .gitignore 中添加 node_modules文件忽略不传

# 创建 package.json

npm init -y
1
  • 初始化的目录不能包含中文、空格等
  • 安装包时会自动把包的名称和版本号记录到 package.json 文件中

导入的包会先访问package.json包

# dependencies

安装的包节点记录

项目的运行依赖与 node_modules 文件夹 ,如果剔除后会报错

解决

npm  install
1

会根据 package.json 文件中的 dependencies 中的包依赖一次性安装所i有包

# 卸载包

npm uninstall 包名称
1

可以将 node_modules 文件中的包删除以及 dependecies的包依赖删除

# devDependencies

如果某些包只在项目开发阶段会用到,在项目上线之后不会用到,则建议把这些包记录到

devDependencies 节点中

npm i 包名 --save-dev
//简写
npm i 包名 -D
1
2
3

# 包分类

  • 项目包
  • 全局包

包基本结构规范

  • 必须以单独的目录而存在
  • 包的顶级目录下必须包含 package.json 这个包管理配置文件
  • package.json 必须包含 name 、 version、main 属性

# 项目包

安装到 node_modules 都是项目包

  • 开发依赖包(被记录到 devDependencies 节点中的包,只在开发期间会用到)
  • 核心依赖包(被记录到 Dependencies 节点中的包,在开发期间和项目上线期间会用到)

# 全局包

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

# 安装
npm i 包名 -g
# 卸载
npm uninstall 包名 -g
1
2
3
4

全局包的安装路径

C:\Users\用户名\AppData\Roaming\npm\node_modules

# 示例 i5ting_toc

# 安装
npm install -g i5ting_toc
# 功能 将 md 转换为 html 文件
i5ting_toc -f URL [-o] //用默认浏览器打开 -o
1
2
3
4

# 发布自己的包

创建三个基本文件

  • package.json
  • js 源文件
  • 说明文档

示例

发布包

  1. 在根目录下登录npm账号
  2. npm publish 发布包

删除包

npm unpublish 包名 --force

  • 只能删除72小时内的包
  • 删除后不允许重复发布

# 模块加载机制

模块在第一次加载后会被缓存,require()不会导致模块的代码被执行多次

无论是内置模块,用户自定义模块,还是第三方模块,它们都会优先从缓存中加载,从而提高模块的加载效率

const a = require('y.js');
const a = require('y.js');
const a = require('y.js');
//不会多次执行y.js里的代码
1
2
3
4
  • 内置模块的加载优先级最高

例如:fs文件模块是内置的,如果有一个名为fs的第三方模块优先加载的fs文件模块

  • 自定义模块的加载机制

加载自定义模块时,必须指定以 ./ 的路径标识符,如果没有路径标识符,则 node 会把它当作内置模块或第三方模块进行加载

同时,在 require() 导入自定义模块时,如果省略了文件的扩展名,则Node 会按顺序加载一下

  1. 确切的文件名
  2. .js 扩展名
  3. .json 扩展名
  4. .node sys32应用扩展名
  5. 加载失败
  • 第三方模块的加载机制

如果没有找到对应的第三方模块,则移动到上一次目录中,进行加载,知道系统盘的根目录

  1. C:\user\project\node_modules\yuadh
  2. C:\user\node_modules\yuadh
  3. C:\node_modules\yuadh
  • 目录作为模块的加载机制
  1. package.json 文件中的 main 入口属性
  2. 加载目录下的 index.js 文件

# 解决下包慢问题

**扩展:**镜像(Mirroring) 是一种文件存储形式,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像

# 查看当前的下包镜像源
npm config get registry
# 将下包的镜像源切换为淘宝镜像源
npm config set registry = https://registry.npm.taobao.org/
1
2
3
4

# nrm

包管理工具

npm -m nrm -g//-g表示设置为全局可用的工具
nrm ls
nrm use taobao 
1
2
3
编辑 (opens new window)
上次更新: 2023/02/07, 14:51:48
node模块化
demo

← node模块化 demo→

Theme by Vdoing | Copyright © 2021-2023 yuadh
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×