Commonjs模块的导入导出,module.exports 和 exports 的区别以及包管理器

Commonjs 里面模块的导入导出

在 Commonjs里面,通过module.exports来导出一个模块,通过require来导入一个模块。

示例如下:

// index2.js
module.exports.name = "xiejie";
module.exports.sayHello = function(){
    console.log('Hello');
}
const obj = require('./index2.js');
console.log(obj.name); // xiejie
obj.sayHello(); // Hello

为了让开发人员使用起来方便,nodejs还提供了一个 exports的对象,它是指向 module.exports

使用示例如下:

// index.js
const obj = require('./index2');
console.log(obj.name); // xiejie
obj.sayHello(); // hahaha
// index2.js
exports.name = "xiejie";
exports.sayHello = function(){
    console.log("hahaha");
}

module.exports 和 exports 有什么区别?

exports 指向 module.exports,module.exports 是我们最终导出的东西,默认是一个对象,但是我们是可以修改的,例如:

// index2.js
module.exports = 'xiejie'

// index.js
const obj = require('./index2');
console.log(obj); //{}

但是exports就不行,因为exports是一个指向,如果赋其他值,那么就切断了module.exports的指向

// index2.js
exports = 'xiejie'

// index.js
const obj = require('./index2');
console.log(obj); // xiejie
NPM

NPM,英文全称 Node Package Manager,翻译成中文就是“node 包管理器”,在 NPM 上面,就有各种各样的包,例如之前咱们用过的 readline-sync。

NPM 官网:https://www.npmjs.com/

学习 npm 其实就是学习里面相关的命令:

  1. 查看 npm 版本
npm -v
npm version
  1. 初始项目
npm init
npm init -y
  1. 安装模块和卸载模块

先创建一个文件拉进工作区,ctrl+`打开终端,之后按照以下操作

// 安装模块
npm install <模块名>  例:npm i readline-sync
npm i <模块名>
  
// 卸载模块
npm uninstall <模块名>  例:npm un readline-sync
npm un <模块名>

全局安装局部安装的区别?

在上面的安装中,我们属于局部安装,全局安装会添加 -g 这个参数。(global)

// 全局安装
npm install -g <模块名>
npm i -g <模块名>

全局安装的包,一般是我们要使用到里面的命令,这一类包我们会全局安装。一般例如脚手架工具、nodemon、typescript 这些,一般都是全局安装,因为要使用到里面的命令。

  1. 查看包目录
npm root -g
  1. 镜像安装

由于 npm 的服务器是在国外,就导致经常我们安装包的时候,容易失败。

有两个解决方案(1)安装 cnpm (2)修改npm的镜像

cnpm 是国内淘宝团队推出的一个工具,cnpm 工具拉包的时候,是从国内的服务器来进行包拉取,cnpm 和 npm同步的频率是5分钟就会同步一次。

npm i -g cnpm

在全局安装了 cnpm 之后,后面我们安装包就可以使用

cnpm i <模块名>

接下来我们来看第二个解决方案。

npm config list

该命令能够查看 npm 的配置。

通过该配置,我们可以看到 npm 默认的镜像指向 npmjs,那么,我们就可以将这个指向修改成 taobao

npm config set registry https://registry.npm.taobao.org
  1. 查看安装的模块

有些时候,我们想要知道当前安装了什么模块,使用 npm list 命令,可以使用 --depth 后缀来调节深度

npm list --depth <0|1|2>
  1. 清除缓存

有些时候,我们安装依赖失败,是因为之前的包有残留,所以这个时候需要清除缓存

npm cache clean --force
yarn

yarn 同样是一个包管理器,是 Facebook,Google,Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具。

相比 npm,解决了一些npm存在的问题:

  • 安装的时候无法保证速度/一致性
  • 安全问题,因为 npm 安装时允许运行代码

安装方式如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rBwMDI3q-1600568029522)(E:\前端笔记\老师资料\node js总结及资料\图片\F714B1B8-0997-4CBC-96E8-631088D150FE.png)]

如果要使用官方脚本,那就是:

curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --nightly

当然,你也可以使用最方便的形式:

npm i -g yarn

yarn 也同样存在修改镜像的问题,基本和 npm 大同小异:

// 获取当前 yarn 的镜像
yarn config get registry
# -> https://registry.yarnpkg.com

修改如下:

yarn config set registry https://registry.npm.taobao.org
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页