サーバーサイドでjQueryを使う

node.js はNonBlocking IOを適切な実行モデルで使えるというメリットがありますが,一方でJavaScriptである,という点もメリットとして上げられます.

クライアントで作成したコードはほとんどそのまま使えます.jQuery も例外ではありません.

jsdom のインストール

クライアントのJavaScriptライブラリの多くはブラウザのDOMの実装に依存しています.そこで,まずは jsdom という node.js 上で動くDOMの実装をインストールします.このモジュール使うことで,文字列をDOMオブジェクトとして使うことができるようになります.

尚,npm で手軽にインストールできますが,jsdomが依存するhtmlparserが自動インストールされないので手動でインストールされる必要があります.

$ npm install htmlparser
$ npm install jsdom

jQuery を混ぜる

手順は簡単です.jQuery のスクリプトを用意して jsdom.jQueryify という専用メソッドを使うだけです.

var jsdom = require('jsdom');

var content =
   "<html>" +
   "<body>" +
   "<div>" +
   "<p id='msg'>Hello World</p>" +
   "</div>" +
   "</body>" +
   "</html>";

var window = jsdom.jsdom(content).createWindow();

jsdom.jQueryify(window, __dirname + "/jquery-1.4.2.min.js", function(_, $){
   console.log($('#msg').html());
});

jsdom.jsdom(HTML).createWindow() で window オブジェクトを作ります.こうしてしまえばもうクライアントJavaScriptの世界と同じです [1]

jQueryify の内部実装は単純でおおよそ以下のような形になっています.

var jQueryTag = window.document.createElement('script');
jQueryTag.src = path_to_jquery;
jQueryTag.onload = function(){
   if( this.readyState == 'compelete') {
       callback && callback(window, window.jQuery);
   }
};

尚,jQuery のパスは file:// (デフォルト) でも http:// でもかまいません.

これは何に使うの?

DOM を扱えるということは HTML や XML の処理を jQuery の記法で処理できる,ということです.これまでは Hpricot (Ruby) や BeautifulSoap (Python) などを使っていた人には朗報です.

[1]alert とか $.ajax とかは全く意味がないので注意してください.