玩转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. 使其模块化的主要内容,如果未能解决你的问题,请参考以下文章

玩转Node.js - 04. 第一个异步 I/O!

玩转Node.js - 05. LS 过滤器

玩转Note.Js单元测试

理解Node.js安装及模块化

45天带你玩转Node(第二天)走进Node.js

深入浅出Node.js - 玩转进程