PhantomJS のオーバービューーーーーーー
PhantomJS なるものがあるので、使って見ることにします。
PhantomJS が何なのかを説明する前に、インストールから入ります。
Quick start
適当なjavascriptファイルを作成します。ここでは、test.js とします
console.log('Hello, world!');
phantom.exit();
シェル上で
phantomjs test.js
とすると、ターミナルに"Hello, world!"と表示されることでしょう。
これは、ブラウザ上でしか動かないはずのconsole.logの出力結果が、ブラウザなしに確認できることを意味します。
すなわち、ブラウザいらずのJavascript実行環境になっているので、サーバー上でJavascriptを動かしたりできます。
(同じ事はnodeでも可能でしょうが、もちろん使いどころが違います)
また、2行目のphantom.exitによって、phantomJSは実行を中止します。
次に、他の機能を見てみます。
var page = require('webpage').create(); page.viewportSize = { width: 500, height: 800 }; page.open('http://google.com', function(){ var t = Date.now(); page.render('google.png'); t = Date.now() - t; console.log('Rendering time ' + t + 'ms'); phantom.exit(); });
google.pngという描画結果と、レンダリング時間が表示されるのがわかるかと思います。
このコードから
- requireを使用したライブラリのロードに対応している
- ウェブページを取得したり、描画する機能も持ってる
- 描画時間は1秒未満
- 描画サイズはもちろん変えられる
- callbackな感じで書くことがある
ということがわかります。
ここらへんまでQuick Start · ariya/phantomjs Wiki · GitHubに応じてみました。
できること
本家からzipファイルを落とすと、中にexamplesが入っているので、参考にすると良いと思います。その中から気になったものをいくつか。
Coffeescriptをそのまま実行
phantomjs netlog.coffee http://yamitzky.com/
で、動きます。コンパイルは不要。
引数も当然使える。
system = require 'system' console.log system.args
あえてcoffeeで:)
0番目の引数は、ファイル名そのものです。
テストに向いてる
と、一般には言われているので、Jasmineとかと組み合わせて使うといいんじゃないでしょうか。