Node学习笔记2

1、模块

  1. 分类
  • 内置模块
  • 自定义模块(用户创建的每个js文件)
  • 第三方模块

加载模块使用require方法,可省略.js后缀名。

  1. 在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问。

2、module对象

  1. 在每个.js自定义模块中都有一个module对象,它里面存储了和当前模块有关的信息。
  2. 在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用。外界使用require方法导入自定义模块时,得到的就是module.exports所指向的对象。
  3. 注意点:

1)module.exports注意点

2)require模块时,得到的永远是module.exports指向的对象。

注:为了防止混乱,不要在同一个模块中同时使用exports和module.exports。

3、包与npm

  1. Node.js中的第三方模块又叫做包。

  2. 包和npm的介绍

包和npm的介绍

  1. 安装包
npm install xxx/npm i xxx

初次装包完成后,会多一个名为node_modules的文件夹和package.json的配置文件。

● node_modules文件夹用来存放所有已安装到项目中的包。require()导入第三方的包,就是从这个目录中查找并加载包。 ● package.json配置文件用来记录node_modules目录下的每一个包的下载信息,例如包的名字、版本号、下载地址等。

注:不要手动修改node_modules或package-lock.json文件中的任何代码啊,npm包管理工具会自动维护它们。

  1. 可以用@符号来指定具体的版本。

  2. 包的语义化版本规范

包的语义化版本规范

  1. npm包管理配置文件

  2. package.json作用

package.json作用

  1. 快速创建package.json
npm init -y
  • 上述命令只能在英文的目录下成功运行!所以,项目文件夹的名称一定要使用英文命名,不要使用中文,不能出现空格。
  • 运行npm install命令安装包的时候,npm包管理工具会自动把包的名称和版本号,记录到package.json中。
  • dependencies节点【开发和上线部署均需使用到的包】专门用来记录npm install命令安装了哪些包。
  1. 一次性安装所有的包
npm install/npm i

执行npm install命令时,npm包管理工具会读取package.json中的dependencies节点,读取到记录的所有依赖包名称和版本号之后,npm包管理工具会把这些包一次性下载到项目中。

  1. 卸载包
npm uninstall/npm uni
  1. devDependencies节点【仅在开发阶段使用的包】
// 安装指定的包,并记录到devDependencies节点中
npm i 包名 -D
// 注意:上述命令的简写形式,等价于下面的完整写法
npm install 包名 --save-dev
  1. 切换淘宝镜像源
// 查看当前下包的镜像源
npm config get registry
// 将下包的镜像源切换为淘宝镜像源
npm config set registry=https://registry.npm.taobao.org/

可以安装nrm(NPM registry manager)在不同镜像源之间快速切换。

4、包的分类&规范的包结构

  1. 包的分类
  • 项目包(安装到node_modules目录中的包)
    • 开发依赖包(记录到devDependencies节点中的包,在开发期间会用到)
    • 核心依赖包(记录到dependencies节点中的包,在开发和项目上限之后均会用的包)
  • 全局包(只有工具性质的包,才有全局安装的必要性)

补充:i5ting_toc:一个可以把md文档转为html页面的小工具。

  1. 规范的包结构

规范的包结构

5、编写包、发布包

  1. 编写包略。

  2. 发布包

npm login 
npm publish

注:

  • 在运行npm login命令之前,必须先把下包的服务器地址切换为npm的官方服务器,否则会导致发布包失败。

  • 将终端切换到包的根目录之后,运行npm publish命令,即可将包发布到npm上【注:包名不能雷同】

  1. 删除已发布的包
npm unpublish xxx --force
  • npm unpublish命令只能删除72小时以内发布的包
  • npm unpublish删除的包,在24小时内不允许重复发布
  • 发布包的时候要慎重,尽量不要往npm上发布没有意义的包!

6、模块的加载机制

  • 优先从缓存中加载
  • 内置模块加载优先级最高
  • 自定义模块的加载机制

自定义模块的加载机制

  • 第三方模块的加载机制

第三方模块的加载机制

  • 目录作为模块

目录作为模块

7、npx学习

  1. npx是npm软件包提供的命令,它是node.js平台下软件包执行器。主要用途有两个,第一个是临时安装软件包执行后删除它;第二个是执行本地安装的提供命令的软件包。

  2. nvm、nodejs、npm、npx的辨析

  • node.js是js的编译运行环境,能编译写的js代码,并让计算机识别运行。
  • nvm(node version management)node版本管理工具。为了解决不同版本之间的兼容性问题。
  • npm(node package management)node.js第三方插件的管理工具
  • npx:用于无侵入式地执行命令
  1. npx的优势