TiddlyWiki/Dev - ソースを読み始める
さて何から読んでみようか
あんまり人のコード読んだことないんでどこから手を付けていいのやらカンがない
まあ起動するところから順番に行ってみよう
bootprefix.jsってやつだな
っていうかこれがどうやって起動するんだ
最初はtiddlywiki.jsってやつか
#!/usr/bin/env node
こうやっても起動できるんだな
この時点でなにかデフォルトで読み込まれたりするんだろうか
var $tw = require("./boot/boot.js").TiddlyWiki();
このrequire
がCommonJSのモジュールってやつだな?
でTiddlyWiki()
を読み込んで$tw
に覚えておくと
$tw.wiki
がいちばん大事なオブジェクトって書いてあったな
もうできているんだろうか
$tw.boot.boot();
実際に動き出すのはここか
bootprefix.jsがどこで出てくるかわからないけど出た順でboot.jsから見てみよう
var _boot = (function($tw) {
:
さていきなりこれはなんだ
JavaScript知らないのに読むのは若干無謀?
対応するカッコを探すとファイルのほぼ末尾にこんなのが
:
return $tw;
});
_boot
っていうのはなにしろ$tw
をもらっていじくって返す関数、ということか
そしてすぐ下(ファイルの末尾)
if(typeof(exports) !== "undefined") {
exports.TiddlyWiki = _boot;
} else {
_boot(window.$tw);
}
TiddlyWiki
という名前で_boot
を公開しますよ、ってことだろう
exports
がundefined
なときは_boot
をそのまま返すんだな
exports
ってやつはCommonJSのモジュールってのに関係してそうだ
そういうのをサポートしてるかどうかを判定していると見た
きっと全体でイディオムになってる
exports
のプロパティをrequire
で取り出す、というのがモジュールのしくみらしいな
exports
が定義されてればモジュールが使えるぞってことだろう
使えないのはブラウザの素の環境とかかな
typeof
は型を返す関数で、!==
は型も値も合ってるかどうかを見る
var $tw = require("./boot/boot.js").TiddlyWiki();
ではboot.jsの_boot
を$tw
に代入して
$tw.boot.boot();
では
$tw.boot.boot = function(callback) {
:
て定義される関数を呼んでるってことだな
ところどころ引数が省略されてるように見えるけど
ふーん省略するとundefinedが渡されたことになるのか
雰囲気はわかった気がする
中身を読んでいこう