玩转Node.js - 06. 使其模块化
Posted PhiloChou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转Node.js - 06. 使其模块化相关的知识,希望对你有一定的参考价值。
准备工作:
1. 来到我们的工作目录$ cd ~/nodejs
2. 如果还没有工作目录,请按下面方式新增
$ cd ~ $ mkdir nodejs $ cd nodejs
目标:编写一个独立模块来打印目录下符合指定后缀的文件
下面开始实际操作:
1. 新建文件node06-module.js
$ vim node06-module.js
2. 使用require
方法引入fs
模块
var fs = require('fs');
3. 使用require
方法引入path
模块
var path = require('path');
4. 使用module.exports
将异步读取目录,并计算行数的函数导出
module.exports = function (dir, filterStr, callback)
fs.readdir(dir, function (err, list)
if (err)
return callback(err);
list = list.filter(function (file)
return path.extname(file) === '.' + filterStr;
);
callback(null, list);
);
;
保存退出。
与前例的函数不同的是,最后加了一个回调方法,当结果产生后,调用这个回调方法,将结果”传递”给调用者。
5. 新建文件node06.js
$ vim node06.js
6. 引入我们的模块
var mymodule = require('./node06-module.js');
7. 获取参数
var dir = process.argv[2];
var filter = process.argv[3];
8. 调用模块
mymodule(dir, filter, function (err, list)
if (err)
return console.error('Error: ', err);
list.forEach(function (file)
console.log(file);
);
);
本篇代码
文件:~/nodejs/node06-module.js
var fs = require('fs');
var path = require('path');
module.exports = function (dir, filterStr, callback)
fs.readdir(dir, function (err, list)
if (err)
return callback(err);
list = list.filter(function (file)
return path.extname(file) === '.' + filterStr;
);
callback(null, list);
);
;
文件:~/nodejs/node06.js
var mymodule = require('./node06-module.js');
var dir = process.argv[2];
var filter = process.argv[3];
mymodule(dir, filter, function (err, list)
if (err)
return console.error('Error: ', err);
list.forEach(function (file)
console.log(file);
);
);
参考资料:
Modules Node.js v0.12.7 Manual & Documentation
learnyounode - MAKE IT MODULAR
以上是关于玩转Node.js - 06. 使其模块化的主要内容,如果未能解决你的问题,请参考以下文章