Node.js 模块化 npm

184 阅读3分钟

什么是模块化?

一个js文件可以引入其他的js文件,能使用引入的js文件中的变量、数据 这种特性就称为模块化。 使用模块化开发可以很好的解决变量、函数名冲突问题,也能灵活的解决文件依赖问题。

模块化的发展 以前es5不支持模块化,前端程序员非常苦逼。为了能够支持模块化,一般会借助第三方库来实现。

常用的第三方库有

sea.js. www.zhangxinxu.com/sp/seajs/

require.js. <requirejs.org

现在: es6原生语法支持模块化 (需单独设置一下) Node.js内部也支持模块化(与es6的模块化有不同之处)

nodejs中的模块分类 1.核心模块-(nodejs自带) 2. 自定义模块(自己定义的) 3. 第三方模块

开发依赖包与生产依赖包

image.png

操作

这两种依赖关系,在具体操作的过程中,有如下区别

  1. 保存到开发依赖(devDependencies)
npm install 包名 --save-dev
// 或者 npm install 包名 -D

通过这种方式安装的包出会现在package.json文件中的devDependencies字段中。

  1. 保存到生产依赖(dependencies):
npm install 包名
// 或者 npm install 包名 -S
// 或者 npm install 包名 --save

通过这种方式安装的包出会现在package.json文件中的dependencies字段中。

导出模块的两种方式

1.exports 和 module.exports 两个对象的关系/

初始exports和module.exports是指向同一块内容区域,其内容都是一个空对象。(exports是module.exports的别名)即:exports === module.exports // 输出是 true

const myPI = 3.14
const add = (a,b) => a + b;

// 导出,两种方法任意都可以
// 方法一:
exports.myPI = myPI
exports.add = add

// 方法二:
module.exports.myPI = myPI
module.exports.add = add

// 方法二(变形)
module.exports  = {
    myPI,
    add
}

在定义模块时:建议只是用一种方式(直接使用module.exports)

了解npm和包

npm 全称 Node Package Manager(node 包管理器),它的诞生是为了解决 Node 中第三方包共享的问题。 npm 不需要单独安装。在安装Node的时候,会连带自动安装npmnpm -v检查安装的情况。 官网(www.npmjs.com/)

npm网站上去下载我们的需要的代码时,它们是以""这种结构放在npm网站上的。先来了解下包和模块的关系。

  • nodejs中一个模块就是一个单独的js文件
  • Node.js 中的第三方模块,又叫做包、第三方包、依赖包
  • 包是多个模块的集合。一个模块的功能比较单一,所以一个包一般会包含多个模块。
  • npm 管理的单位是包。类似于网站和网页的区别:一个网站一般会包含多个网页。

npm包创建与发布

1.npm view 包名 // 这个命令用来查看 某个包的信息 如果返回404,说明这个项目名在npm官网上找不到,此时你就可以使用。 否则,说明不可用。

  • 2.npm init -- yes // 用来创建一个package.json文件,对你的项目信息进行设置

  • 3.完成功能开发

  • 4.如果用到镜像,需要我们把他切换到npm官网 通过nrm use npm 切换 npm config get registry 查看当前的npm的registry配置,确保是registry.npmjs.org 如果不是,可以通过如下命令来设置 npm config set registry registry.npmjs.org 手动设置registry

  • 5.连接npm 命令npm adduser

  • 6.检查是否连接成功 npm who am i

  • 7.把包上传到 npm publish

  • 8.如果包没有什么用处,建议删除,节约公共资源 npm unpublish --force // 强制删除

npm常用命令

查看

  • npm -v // 查看npm 版本
  • where node // 查看node的安装目录
  • where npm // 查看npm的安装目录
  • npm root -g // 查看全局包的安装目录
  • npm list -g --depth 0 // 查看全局安装过的包

升级npm

  • npm install npm --global // 简写成 -g
  • npm install npm -g

初始化package.json

  • npm init -y // 或者是npm init --yes

安装第三方包 // 安装当前目录下package.json中列出的所有的包 // 如果之前安装了包,又在package.json中手动删除依赖 // 它相当是删除包

  • npm install

// 全局安装

  • npm install 包名 -g // npm install -g 包名

// 本地安装,没有指定版本,默认安装最新的版本

  • npm install 包名

// 一次安装多个包,空格隔开

  • npm install 包名1 包名2 包名3

// 安装指定版本的包

  • npm install 包名@版本号

// 简写。把install简写成 i

  • npm i 包名

删除已安装的包

  • npm uninstall 本地安装的包名
  • npm uninstall 全局安装的包名 -g

设置npm的register\

如果你不想用 nrm ,下面这个原生的命令也可以切换镜像源(从哪里下载包)。

npm config set registry=https://registry.npm.taobao.org

所有npm i 包 都会从taobao的镜像去下载。 配置后可通过下面方式来验证是否成功 npm config get registry