javascriptが楽しくなってきた系

久しぶりにこっちで日記
最近いろいろ新しい物に手を出してますが、その中で気になったのが

  • node.js
  • Google Closure Library

です。最近よく聞くとと思いますけど…

node.js

node.jsはサーバサイドjavascriptですね。話は簡単で、以下のようなソースを書いて「sample.js」というファイルで保存して…

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');

コンソールから

$ node sample.js

てな感じに起動すると、上記の例だと8124ポートでlistenしてくれます。これでブラウザからアクセスすると文字列が出るわけですね。簡単です。

これはですね、なかなかいろいろな可能性を秘めてますよ。いまとてつもなく楽しいです、これ。最近Javascriptが重要視されてきてますが、サーバサイドはJavaPythonだ、とどうしても多言語に依存せざるを得ない状況でした。

これは純粋にJavascriptだけでアプリが書ける、ということですね。

node.js

http://nodejs.org

Google Closure Library

こいつはですね、すごいですよ!←何が

要するにJavascriptライブラリなんですが、jQueryのようにAjax+DOM操作に加えて、いろいろなツールキットやユーティリティ、ネットワーク、イベント処理などなど、あらゆる機能を網羅した巨大ライブラリです。

ぶっちゃけこれを使えばもうjQueryのいいんだか悪いんだかわからないPluginを探しまくる日々から開放されます(言い過ぎか?w)

このLibraryは正確には

  • Closure Library
  • Closure Compiler
  • Closure Template

の3つから構成されてます。Compilerは要はDeploy(公開)するときのJSファイルを最適化(難読化)してくれます。ClosureLibraryは開発時には利便性を考慮して非常に多くの分割されたJSファイルを読み込みます。

goog.require('goog.dom');

function sayHi() {
  var newHeader = goog.dom.createDom('h1', {'style': 'background-color:#EEE'},
    'Hello world!');
  goog.dom.appendChild(document.body, newHeader);
}

こんな感じにrequireで必要なものを読み込むんですが…まあjavaで言うところのimport文ですね。ただ、この1行でもブラウザで展開されるとJSファイルてんこ盛りでscriptタグに書きこまれます。依存関係がすごいですw

なので、そのまま手抜きしてClosureLibrary使うと重いです。マジで…

で、ようやくCompilerの話ですが、Compilerはrequireされる関連JSファイルから必要な部分だけを全部抜き出し、バイト数を削り、不要な改行や空白を削除して、1ファイルにしてくれるという凄い奴です。

Templateは…使ってないのでまだ知りません(笑)



てな感じで僕は現時点ではjQueryよりClosureLibraryに首ったけです