快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰平台app_龟发之家论坛



本节内容:

什么是模块

若何创建模块

若何创建一个包;

若何应用担保理器并宣布自己创建的包

1.什么是模块

模块是Node.js利用法度榜样的基础组成部分,文件和模块是逐一对应的。换言之,一个Node.js文件便是一个模块,这个文件可能是JavaScript代码,JSON或者编译过的C/C++扩展。

前面用过var http = require('http'),此中http是Node.js的一个模块,其内部是用到了C++实现,外部用JavaScript封装。我们经由过程require函数获取了这个模块,然后才能应用此中的工具。

2.创建及加载模块

在Nod澳门新葡亰平台appe.js中,创建一个模块异常简单,由于一个文件便是一个模块,我们要关注的问题是若何在其他文件中获取这个模块。Node.js供给了exports和require两个工具,此中exports是模块公开的接口,require用于从外部获取一个模块的接口,即所获取模块的exports工具。以例子来阐明。

创建一个module.js文件。内容是

//module.js

var name;

exports.setName = function(thyName){

name = thyName;};

exports.sayHello = function(){

console.log('Hello '+ name);};

在同一目录下创建getmodule.js。

//getmodule.js

var myModule = require('./module');

myModule.setName('Mi');myModule.sayHello();

在以上示例中。module.js经由过程exports工具把setName和sayHello作为模块的造访接口,在getmodule.js中经由过程require('./module.js')加载这个模块("./表示当前目录"),然后就可以直接造访module.js中exports工具的成员函数了。

3. 创建包

Node.js的包类似于C/C++的函数库或者Java/.Net的类库。它将某个自力的功能封装起来,用于宣布,更新,依附治理和版本节制。Node.js根据CommonJs规范实现了包机制,开拓了npm来办理包的宣布和获取需求。

Node.js的包是一个目录,此中包孕一个JSON款式的包阐明文件package.json。

相符CommonJS规范的具有以下特性:

package.json必须在包的顶层目录下;

二进制文件应该在bin目录下;

JavaScript代码应该在lib目录下;

文档应该在doc目录下;

单元测试应该在test目录下;

Node.js对包的要求没有这么严格,只要顶层目录下有package.json,并相符一些规范即可。当然为了前进兼容性,我们照样建议你在制作包的时刻,遵守CommonJS规范。

3.1 作为文件夹的模块

模块与文件是逐一对应的。最简单的包是作为一个文件夹的模块。

建立一个文件夹somepackage的文件夹,在文件夹里创建index.js,代码如下:

//somepackage/index.澳门新葡亰平台appjs

xports.hello = function(){

console.log('Hello.');

然后在somepackage同一层目录建getpackage.js。代码如下:

//getpackage.js

var somepackage = require('./somepackage');

somepackage.hello();

运行node getpackage.js。结果是Hello.

以上是把文件夹封装为一个模块,也便是所谓的包。

3.2 package.json

在上面的根基上。我们应用规范的操作。在somepackage文件夹下,创建一个叫package.json的文件,代码如下:

{

"main" : "./lib澳门新葡亰平台app/interface.js" }

之后,在somepackage文件夹下,再创建一个叫lib的文件夹,把index.js改名为interface.js。并移动到lib下。

再次运行node getpackage.js.结果同样。

Node.js在调用包时,会首先反省包中的package.json文件的main字段,将其作为包的接口模块,假如package.js或者main字段不存在,会考试测验首先探求index.js或者index.node作为包的接口。

package.json的字段都有以下字段:

name: 包的名称,必须是独一的,由小写英翰墨母,数字和下划线组成,不能包括空格。

description: 包的简要阐明。

version: 版本字符串

keywords: 关键字数组,平日用于搜索

maintainers: 掩护者数组,每个元素要包孕name,email(可选),web(可选)字段

contributors: 供献者数组,款式与maintainers相同。

bugs: 提交bug的地址,可所以网址或者 电子邮件

licenses: 许可证数组,每个元素要包孕type(许可证名称)和url(连接到许可证文本的地址)字段

repositories:仓库托管地址数组,每个元素要包孕type(仓库的类型,如git)

url(仓库的地址)和path(相对付仓库的路径,可选)字段。

dependencies:包的依附,一个关联数组,由名名称和版本号组成。

4.Node.js担保理器

Node.js担保理器,即npm是Node.js官方供给的担保理对象,它已经成了Node.js包的标准宣布平台,用于Node.js包的宣布,传播,依附节制,并且npm供给了敕令行对象.

4.1 获取一个包

敕令 : npm [install/i] [package_name]

比如: npm install express 或者 npm i express

安装的包会呈现在当前目录的node_modules子目录澳门新葡亰平台app。

4.2 本地模式和全局模式

在应用np澳门新葡亰平台appm安装包的时刻,有两种模式:本地模式和全局模式。

默认环境下我们应用npminstall敕令是本地模式,Node.js的require在加载模块时会考试测验征采node_modules子目录,是以本地模式安装的包可以直接被引用 。

npm另一种全局模式应用措施:

npm [install] -g [package_name]

全局模式是为了在敕令交运行应用的,比如讲过的supervisor script.js,就必要在PATH情况变量中注册supervisor。

应用全局模式的包并不能直接在Javascript文件中应用require得到。

总结: 当我们要把某个包作为工程运行时的一部分时,经由过程本地模式获取,假如要在敕令行下应用,则应用全局模式。

4.3 包的宣布

应用npm init敕令可以根据交互式问答孕育发生一个标准的package.json,方便地宣布一个包。

比如,以敕令行要领进入byMyModule目录(byMyModule是我所创建一个文件夹)

然后输入npm init,根据当条件示输入相关内容,如图

name:模块名字(要小写)

version(0.0.1): 模块版本号

description: 模块阐明

entry point: 模块的进口文件,例子是index.js

test command: 测试脚本,选填

git repository: 模块的git仓库,选填。npm的用户一样平常都应用github做为自己的git仓库

keywords: 关键字

author: 模块的作者

license: 许可证,选填

然后输入yes,就在byMyModule目录下创建了一个package.json。有个警告提示,可以暂时轻忽。

接下来创建账号:

在宣布之前,要创建一个账号用于掩护自己的包。应用敕令npm adduser根据提示输入用户名,密码,邮箱等待账号创建完成。

应用npm whoami测试是否已经取得账号.

着末一步:在package.json所在的目录运行npm publish,就可以完成宣布了.

现在顿时去http://search.npmjs.org/,看一下自己宣布的包,如图

您可能还会对下面的文章感兴趣: