個人的によく使うnpmのメモです。
async
- Github: https://github.com/caolan/async
概要
非同期処理を、順次処理にするモジュールです。一連の処理を直列で実行させたり、平行して実行させて最後で同期を取るなど、色々なケースで使えます。
callback関数地獄になったコードがスッキリ書けますが、個人的な経験から言うとcallback関数地獄になるのはそもそもの書き方が良くない場合もあるので注意です。
使用例
// githubから引用
// https://github.com/caolan/async
async.series([
function(callback){
// do some stuff ...
callback(null, 'one');
},
function(callback){
// do some more stuff ...
callback(null, 'two');
}
],
// optional callback
function(err, results){
// results is now equal to ['one', 'two']
});
cheerio
概要
サーバサイドでjQueryちっくなDOM操作を行えるモジュールです。jQueryに慣れていればすごく便利です。
用途としては主にHTMLの解析(スクレイピング)に使っています。HTMLの生成にも使えますが、その場合はtemplateエンジン(ejsとかectとか)を使うので、使ったことはありません。
使用例
var cheerio = require('cheerio');
var $ = cheerio.load(body); // httpレスポンスのbodyだと思ってください
$("a").each(function(){
// aタグのhrefの値を順次取り出す。
var url = $(this).attr("href"));
});
passport
概要
Node.js+Express+Passportで認証情報をセッションに保存する方法にも書きましたが、node.jsでAuth認証を実装するための決定版的なモジュールです。
使用例
// 公式のガイドから引用
// http://passportjs.org/guide/facebook/
passport.use(new FacebookStrategy({
clientID: FACEBOOK_APP_ID,
clientSecret: FACEBOOK_APP_SECRET,
callbackURL: "http://www.example.com/auth/facebook/callback"
},
function(accessToken, refreshToken, profile, done) {
User.findOrCreate(..., function(err, user) {
if (err) { return done(err); }
done(null, user);
});
}
));
cron
概要
定期的にスケジュールされたタスクを実行したい時に使います。
スケジュールの指定方法はLinuxのcronサービス(crontab)と同じように書けます。
使用例
var CronJob = require('cron').CronJob;
var cronJob = new CronJob({
cronTime: "00 00 00 */7 * *", // 7日間隔で実行
onTick: function() {
// ここに処理を書く
},
start: false
}).start();
moment
- Moment.js: http://momentjs.com/
概要
日時に関することをやってくれる便利なモジュールです。JavaScriptは日時の処理があまり便利ではないので、このようなモジュールを使うと便利です。とにかく機能が充実しています。
使用例
var moment = require('moment');
var date = Date();
var WEEK = ["日", "月", "火", "水", "木", "金", "土"];
moment(date).format('YYYY-MM-DD'); // '2014-03-19'
WEEK[moment(date).format('e')]; // '水'
request
概要
httpリクエストを行うためのモジュールです。メソッドやパラメータの指定が細かく設定できます。
使用例
var request = require('request');
request({url: url}, function(error, response, body) {
if(error || response.statusCode != 200){
return callback(error);
}
return callback(null, body);
});