ch04 模块与npm包管理工具

在node.js中,以模块为单位划分所有功能,并提供了一个完整的模块加载机制,可以将应用程序划分为不同的部分,并且对这些部分进行很好的协同管理。

 -通过各种可重用代码编写在各种模块中的方法,减少应用程序的代码量,提高应用程序的开发效率及应用程序代码的可读性。

-通过模块加载机制,可以将各种第三方模块引入到应用程序中

核心模块与文件模块

在node.js中,模块是一个非常重要的概念,它允许我们将第三方类库引入到我们的应用程序中,在加载核心模块时,只需将模块名指定为require函数的参数即可。

在加载这些文件时,需要指定该文件的完整路径及文件名。在指定路径时,可以使用“/”前缀来指定相对路径。也可以指定绝对路径。

在模块外部访问模块内的成员

1.使用exports对象

在一个模板中定义的本地变量、函数或对象只在该模块内有效,当你需要从模块外部引用这些变量、函数或对象时,需要在该模块文件内使用exports对象。

2,将模块定义为类

在模块文件内将exports对象书写为‘’module.exports”,但是在需要将模块定义为一个类时,只能使用“module.exports”的书写方法

3.为模块类定义类变量或类函数

当把模块定义为类的时候,可以为该类定义类变量或类函数。

组织与管理模块

1.从node_modules目录中加载模块

加载方式更为灵活,因为你可以移动模块文件的所在位置而不需修改代码中指定的路径。

2.使用目录来管理模块

可以将目录名指定为模块名,以便可以通过目录来管理模块,只需为该目录指定一个入口点

一个最简单的将目录名定为模块名的方法是在应用程序根目录下创建一个node_modules子目录,然后在其中为模板创建一个目录,并在其中放入一个index.js文件。这样node.js会自动加载目录下的index.js模块

3.从全局目录中加载模块

如果在操作系统的环境变量中设置了NODE_PATH变量,并将变量值设置为一个有效的磁盘目录。当在require函数中只指定模块名,而没有指定模块文件的路径,而且node.js从其它路径中寻找不到需要被加载的模块文件时,node.js将从DODE_PATH变量值所指向的磁盘目录中寻找并加载该模块文件。

为了获得更好的性能,node.js推荐用户将模块文件放置在全局目录中‘

模块对象的属性

.module.id:属性值为当前模块的ID,在默认情况下,主模块的ID属性值为“.”,其他模块的ID属性值为该模块文件的绝对路径。在模块中可以修改当前模块的ID属性值

.module.filename:属性值为当前模块文件的文件名

.module.loaded:属性值为布尔值,当属性值为false时表示模块尚未加载完毕,属性值为true时,表示模块加载完毕

.module.parent:属性值为当前模块的父模块对象,即调用当前模块的模块对象

.module.children:属性值为一个数组,其中存放了当前模块的所有子模块对象,即当前模块已加载的所有模块对象

包与npm包管理工具

在node.js中,通过包的使用,我们可以将某个独立的功能封装起来。

在node.js中,一个包实际上是一个目录,其中包含了用于对包进行描述的json格式的package.json文件。一个包中,通常包含如下所示的一些内容

1)在包的根目录中存放package.json文件

2)在bin子目录中存放二进制文件

3)在lib子目录中存放JavaScript文件

4)在doc子目录存放对包或包的使用方法进行说明的文档文件

5)在test子目录中存放一些对包进行单元测试用的文件


一个package.json文件中应该包含的字段及作用如下:

1)name :包名,是唯一的,由小写字母、数字和下划线组成,不能含空格

2)preferglobal,是否支持全局安装,字段值为true时支持全局安装,字段值为false时,不支持全局安装

3)description,包说明,对包进行简要描述

4)version,版本号

5)author,作者信息组,每个数组元素中可包含name、email、web等字段

6)maintains,包维护者信息数组,每个数组元素中可包含name、email、web等字段

7)bugs,bug的提交地址,可以是网址或电邮地址

8)license,许可证数组,每个元素包含type和url字段

9)repository,仓库托管地址数组,每个元素包含type、url和path等字段

10)keywords:关键字数组,通常用于搜索

11)dependencies:本包所依赖的包,是一个关联数组,由包名和版本号组成

npm包管理工具

在node.js中,提供了一个npm包管理工具,该管理工具可用于从第三方网站上下载node.js包

以forever包为例:

npmsearch forever:搜索并查看forever包

npmview forever:查看forever包所用package.json文件中的信息

npm install forever:下载forever包

npm install -g forever :把forever包安装在node.js的全局包的安装路径中

npm root -g:查看node.js的全局包的安装路径

npmconfig set prefix  " d:\node":修改node.js的全局包的安装路径

npmlist:展示窗口当前目录下所安装的所有包

npmlist -g :查看node.js全局包的安装路径下安装的所有包

npm uninstall <包名> :卸载命令行提示窗口当前目录下安装的某个包

npm uninstall -g <包名>:卸载node.js的全局包的安装路径下安装的某个包

npm update <包名> :更新命令行提示窗口当前目录下安装的某个包

npm update -g <包名>:更新node.js的全局包的安装路径下安装的某个包

npm update:更新命令行提示窗口当前目录下安装的所有包

npm update -g:更新node.js的全局包的安装路径下安装的所有包

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