Nodejs 模块 与 npm 包管理工具(笔记1)

模块 foo.js

var name="";
var _name;

function foo(name)
{
     _name=name;
}
foo.prototype.GetName=function()
{
    return _name;
};
foo.prototype.SetName=function(name)
{
     _name=name;
}

foo.prototype.name=name;
module.exports=foo;

调用demo.js

直接加载模块文件;“./”表示相对路径

var f=require('./foo.js');
var myfoo=new f('doubi');

console.log(myfoo.GetName());  //doubi
myfoo.SetName('adobe');

console.log(myfoo.GetName());  //adobe;  

组织与管理模块

1.从node_modules目录加载模块,例如“/home/ry/projects/node_modules/foo.js”,“/”在windows中代表磁盘的根目录,则nodejs为foo.js,模块使用的加载路径依次为

1)/home/ry/projects/node_modules/foo.js;

2)/ry/projects/node_modules/foo.js;

3)/projects/node_modules/foo.js;

4)/node_modules/foo.js;

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


2.使用目录管理模块

1)在node_modules中新建foo文件夹,将foo.js放到foo文件夹中且改为index.js;就可用以下加载方式

//var f=require('./foo.js');
var f=require('foo');

2)更好的做法是 在node_moudules中新建foo文件夹后,在目录中新建lib文件夹和package.json文件,将foo.js放置到lib目录下

foo
   -package.json
   -lib
      -foo.js

//package.json

{
    "name":"foo",
    "main":"lib/foo.js"
}
 
//模块加载

var f=require('foo');
package.json的定义是npm包管理当中的一个重要的点,package.json记录了这个模块的一些重要的信息,别人在用的时候,也会先了解这个文件。在一个包中通常都是有以下内容

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

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

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

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

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


在一个package.js文件中,通常应该包含有以下字段

1)name,包名。

2)preferglobal,是否支持全局安装

3)description,包说明

4)version,版本号

5)author,作者信息数组

6)maintainers,包维护者信息数组

7)bugs,bug的提交地址

8)licenses,许可证数组

9)repository,仓库托管地址数组

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

11)dependencies,本包所依赖的包。是一个关联数组


3..模块对象的属性

module.id  为当前模块的ID,默认ID值为‘.’

console.log(module.id);  //
module.id='foo';
console.log(module.id);  //foo


module.filename 当前模块的文件名


module.loaded   当前模块是否加载完,加载完毕返回true,否则返回false


module.children  数组,存放了当前模块的所以子模块对象。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值