TiddlyWiki/Dev - Core Application
TiddlyWiki Core Applicationを読みます
これはちょっと長いので分割になりそう
- マイクロカーネルはWikiストアと裸のTiddlerモデルを提供する
- マイクロカーネルは一連のTiddlerをロードしてモジュールシステムやプラグインを利用できるようにする
- TiddlyWikiのコアアプリはひとつのプラグインとして提供される
スタートアッププロセス
module-type: startup
タイプのモジュールはstartup
という名前の関数をexportする- ブートカーネルはブートプロセスの最後で
startup
関数を実行する - スタートアップモジュールで
synchronous = true
をexportすると非同期に実行される
ストアを拡張する
ストアって何者かちょっとつかめてない気もするんですが
単なる保存場所っていうよりももうちょっとなにかありそうな感じ
ストアはストア、と思って進みます
イベントメカニズム
- コアプラグインは、Wikiストアに変更があったら通知するイベントシステムを提供する
- イベントシステムはマイクロカーネルのフックを利用する
- マイクロカーネルはTiddlerが追加・削除されると
enqueueTiddlerEvent(event)
を呼ぶので、この関数をオーバーライドして使う - イベントシステム用の関数は
wikimethod
タイプのモジュールによって追加される
キャッシング
- コアプラグインはグローバルキャッシュとTiddlerごとのキャッシュを提供する
- グローバルキャッシュはどのtiddlerが変更されてもクリアされ、Tiddlerキャッシュは関連するTiddlerが変更されたときだけクリアされる
- キャッシングも同様にフックを使う
- キャッシングでは
clearGlobalCache()
とclearCache(tiddlertitle)
をオーバーライトする - キャッシュシステム用の関数は
wikimethod
タイプのモジュールによって追加される
システムTiddler
- Tiddlerはアプリケーションのビルディングブロックでもあり、ユーザが利用するものでもある
- それらを区別するため、コアプラグインはシステムTiddlerという考え方でTiddlerを隔離する
- システムTiddlerは名前が
$:/
で始まるもの getTiddlers(options)
やforEachTiddler(callback, options)
といった関数は、デフォルトではシステムTiddlerは対象外になっている