6-1 Node.js 模块

Node.js 的模块

为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。
模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。
换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。

创建一个模块

创建一个 funcitons.js 文件 文件内容如下

/*
 * 这是一个对 对象 操作的模块
 */

// 定义一个数组
var arr = new Object();

// 获取单个数据
function get(key){
  return arr[key];
}

function getList(){
  return arr;
}

function add(key, value){
  return arr[key] = value;
}

function edit(key, value){
  return arr[key] = value;
}


function del(key){
  return delete arr[key];
}

function clear(){
  arr = new Object();
}

function dump(){
  data = getList();
  console.log(data);
}

//  通过设置modul.exports对象
//  将这些方法绑定到 modul.exports对象
//  当导入这个文件的时候 就可以调用了
module.exports.get = get;
module.exports.getList = getList;
module.exports.add = add;
module.exports.edit = edit;
module.exports.del = del;
module.exports.clear = clear;
module.exports.dump = dump;

模块的使用

在同目录下 创建一个 code.js 内容如下


// 导入模块
var functions  = require('./functions');
// 注意模块导入模块的是不加 “.js” 后缀的
// 模块名即 文件名
// 路径必须 填写 绝对路径 或者相对路径
// 即 /xxxx/xxx/文件名 或者 ./xxx/文件名
// 如果路径 是这样的  'functions' 这样是会报错的。
// 只有node.js 内部的模块  才可以这么引入 例如  http, fs 等


// 打印看看 functions 对象 都是啥。。。

// 看看对象有什么
console.log(functions);

// 打印的数据如下 全是我们刚才暴露的方法。。。。。
// chen@chen:~/study/2-1 module$ node 2-2\ code.js
// { get: [Function: add],
//   getList: [Function: getList],
//   add: [Function: add],
//   edit: [Function: edit],
//   del: [Function: del],
//   clear: [Function: clear],
//   dump: [Function: dump] }
// chen@chen:~/study/2-1 module$
//



// 使用模块
/*
所有刚刚在 functions 文件中暴露的都可以通 引入的对象操作
*/

// 添加
functions.add('11', 'aaa');
functions.add('22', 'bbb');

// 获取单个
var data = functions.get('11');
console.log(data);


// 获取列表
data = functions.getList();
console.log(data);

// 修改单个
functions.edit('11', 'ccc');
functions.dump();


// 删除单个
functions.del('11');
functions.dump();

// 清空全部
functions.clear();
functions.dump();

输出的效果如下

chen@chen:~/study/nodejs/module$ node  code.js 
// 这个是对象信息
{ get: [Function: get],
  getList: [Function: getList],
  add: [Function: add],
  edit: [Function: edit],
  del: [Function: del],
  clear: [Function: clear],
  dump: [Function: dump] }

// 下方是调用方法的输出结果
aaa
{ '11': 'aaa', '22': 'bbb' }
{ '11': 'ccc', '22': 'bbb' }
{ '22': 'bbb' }
{}
chen@chen:~/study/nodejs/module$ 

模块小结

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

推荐阅读更多精彩内容

  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    Myselfyan阅读 4,062评论 2 58
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,607评论 2 41
  • 1 Node.js模块的实现# 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都...
    七寸知架构阅读 2,051评论 1 50
  • 1 Node.js模块的实现 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都着...
    zlx_2017阅读 1,218评论 0 1
  • 今天因为团队需要,协助帮忙看Confluence的这个问题,通过大半天的分析研究也得到不少收获,在此记录一下问题的...
    程序猿DD阅读 2,721评论 0 2