模块 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.loaded 当前模块是否加载完,加载完毕返回true,否则返回false
module.children 数组,存放了当前模块的所以子模块对象。