node.js--两种导出区别&&包&&NPM

一、exports和module.exports

在node中,有两种导出方式。一种是exports。一种是module.exports。这两种都是为了导出node里面的函数。

1、exports

  • exports实际指向module.exports。
  • 修改的是变量。
  • 通过exports只能使用 . 的方式来向外部暴露内部变量。
exports.xxx=xxx

2、module.exports

  • 修改的是对象
  • module.exports有两种暴露方式
    (1)、. 的方式
module.exports.xxx= xxx

(2)、直接赋值

module.exports = {}

所以我们在实际使用的过程中,经常用exports.module的方式来导出

二、包

1、什么是包?

  • 包实际上就是一个压缩文件,解压以后还原目录。

  • 包规范允许我们将一组相关的模块组合到一起,形成一组完整的工具。

  • 包规范由 包结构 和 包描述文件 两个部分组成。

  • (1)、包结构:用于组织包中的各种文件。

  • (2)、包描述文件:用于表达非代码相关的信息,以供外部读取分析。

它是一个JSON格式的文件 package.json,位于包的根目录下,是包的重要组成部分。

符合规范的目录,应该包括如下文件:

(1)、package.json: 描述文件。

项目描述文件,记录了当前项目信息,例如项目名称、版本、作者、github地址、当前项目依赖了哪些第三方模块等。
使用npm init -y命令生成。
项目依赖
在项目的开发阶段和线上运营阶段,都需要依赖的第三方包,称之为项目依赖。

dependencies 依赖 当前包依赖的其他包

使用npm install 包名命令下载的文件会默认被添加到 package.json 文件的 dependencies 字段中。

  "dependencies": {

    "vuex": "^4.0.2"
  }

开发依赖。
在项目的开发阶段需要依赖,线上运营阶段不需要依赖的第三方包,称为开发依赖。

devDependencies 开发环境依赖

使用npm install 包名 --save-dev命令将包添加到package.json文件的devDependencies字段中。

  "devDependencies": {
    "electron-builder": "^22.14.5",
    "postcss-px-to-viewport": "^1.1.1",
  },

package-lock.json 文件的作用

锁定包的版本,确保再次下载时不会因为包版本不同而产生问题。
加快下载速度,因为该文件中已经记录了项目所依赖第三方包的树状结构和包的下载地址,重新安装时只需下载即可,不需要做额外的工作

(2)、bin : 可执行二进制文件。

(3)、lib: js代码。

(4)、doc: 文档。

(功能性的说明文档)

(5)、test: 单元测试。

三、NPM(Node Package Manager)

包规范是理论,NPM是其中的一种实践。
对于node而言,NPM帮助其完成了第三方模块的发布,安装和依赖等。借助NPM,node与第三方模块之间形成了很好的一个生态系统。

1、常用命令

  • npm -v: 查看npm的版本
  • npm version : 查看所有模块的版本
  • npm : 帮助说明
  • npm search 包名 : 搜索模块包
  • npm install/i 包名 : 在当前目录安装包
  • npm install/i 包名 -g : 全局模式安装包 (全局安装的包一般都是一些工具)
  • npm remove/r 包名 : 删除一个模块
  • npm uninstall 包名 : 删除一个模块
  • npm update : 升级全部包
  • npm update 包名 : 升级指定包
  • npm install 包名 --save : 安装包并添加到依赖中 重要
  • npm install : 下载当前项目所依赖的包
  • npm install 文件路径 : 从本地安装
  • npm install 包名 --registry=地址 : 从镜像源安装
  • npm config set registry 地址 : 设置镜像源
  • npm install -g 就是npm install --global
  • npm install -D 就是npm install --save-dev

devDependencies 里面的包只用于开发环境,不用于生产环境

  • npm install -S 就是npm install --save

`dependencies 是需要发布到生产环境的

  • npm view 包名 versions: 查看所有版本 - ######npm view 包名 version: 查看最高版本
  • npm i 包名@版本: 安装指定版本的包

通过npm下载的包,直接通过包名引用(require)即可

const math=require('math')

2、全局安装和本地安装

(1)、全局安装:命令行工具。

(2)、本地安装:库文件

3、CNPM中国npm镜像的客户端

  • npm install cnpm -g :安装cnpm(cnpm 是中国 npm 镜像的客户端)
  • npm install cnpm -g -registry=https://registry.npm.taobao.org (国内安装)
    node在使用模块名字来引入模块时,它首先会在当前目录的node_modules中寻找是否含有该模块。如果有则直接使用,如果没有去上级node_modules里去寻找,一直寻找到磁盘的根目录,没有则报错。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容