您的位置:首页 > Web前端 > Node.js

玩转Node.js - 06. 使其模块化

2015-08-21 13:51 671 查看
准备工作:

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