2 * <h4>はじめに:Web 開発の世界へようこそ!</h4>
\r
3 * DHTML と XHR 等を活用した Ajax によってその真価を発揮した javascript は、現在では RIA に SPA や 3D ゲームなど、あらゆるアプリケーションがブラウザ上で動きつつあります。
\r
4 * それらの素晴らしいデモに触れ、これから Web 開発に望む皆さんは、胸をときめかせていることでしょう。
\r
5 * そうです、今や Web ブラウザは、あなたの夢を何でも描くことの出来る自由なフロンティアです。
\r
7 * しかし、いざ Javascript を触り始め、初めての開発に着手すると、Web ブラウザというフロンティアは、少し雑草の茂るだけの荒野だと気付くでしょう。
\r
8 * ここに RIA や 3D ゲームといった素晴らしいテーマパークを築機上げるには、まずは測量に整地、地盤や土壌の改良といった膨大な作業をしなくてはいけません。
\r
10 * 簡素な物置小屋のための最初の柱を建てるのにも、それ以前に膨大な作業の必要なことに、あなたは唖然となるでしょう。
\r
11 * そのような基礎もそこそこに、勇んで建てた一本目の柱は傾き、または無残に朽ち果てるのを目撃し、あなたは深いため息をつくかもしれません。
\r
13 * Javascript は様々な問題を孕みつつも、今や最もあらゆるプラットフォームで動作する言語のひとつへと躍進しました。
\r
14 * これから、このフロンティアに如何に基礎を作り、その上にテーマパークを作るのか?一緒に考えていきましょう。
\r
17 * <h4>pettanR フレームワーク API ドキュメントについて</h4>
\r
18 * このAPIドキュメントには、折に触れこのような長文が登場します。
\r
19 * Web 開発は今では、そのカジュアルなイメージとは裏腹に、膨大な知識と経験が必要なものになってしまっています。
\r
20 * どのようにして、それらの情報を、妥当な業務時間の間に継承していけばよいか?
\r
22 * この意識は常にありましたが、このたび pettanR フレームワークの API ドキュメントを作成するにあたり、それに付記していく形で取り組んでみようと思います。
\r
24 * <h4>フレームワークのレイヤー構造について</h4>
\r
27 * ライブラリは X という名前空間を使用します。
\r
28 * @example //ショートハンド
\r
29 * X( func ) == X.ViewPort.listenOnce(X.Event.XDOM_READY, func);
\r
30 * X('#mydiv') == X.Doc.find('#mydiv');
\r
34 if( X.Type.isFunction( v ) ){
\r
35 X.ViewPort.listenOnce( X.Event.XDOM_READY, v );
\r
37 if( X_shortcutFunction ){
\r
38 return X_shortcutFunction.apply( X_shortcutContext || X, arguments );
\r
43 if( !window['console'] || ( window.parent && window.parent.log ) )
\r
44 console = { log : function(a){
\r
47 if( window.parent ){
\r
48 elm = parent.document.all ? parent.document.all.log : parent.log || parent.document.getElementById( 'log' );
\r
49 elm && ( elm.innerHTML = a + '<br>' + elm.innerHTML );
\r
55 X_EMPTY_OBJECT = {},
\r
56 X_TEMP = { onSystemReady : [] },
\r
61 * バージョン文字列:"0.6.123"
\r
63 X.VERSION = '0.6.127';
\r
68 X.bootTime = + new Date;
\r
72 * @type {Function} */
\r
73 X.emptyFunction = new Function;
\r
76 * このscriptはheadタグの中にあるか?
\r
77 * @type {boolean} */
\r
78 // TODO defer の場合もあるので、document.readyState を見る
\r
80 X.inHead = (function( s ){
\r
81 if( !s ) return false;
\r
82 if( !s.length ) return false; // Safari1.3 312.8 でerror
\r
83 s = s[ s.length - 1 ];
\r
85 s = s.parentElement || s.parentNode || s;// s is for opera7.11
\r
86 return s.tagName.toLowerCase() === 'head';// opera7.23 s.tagName is 'HTML'
\r
87 })( document.scripts || document.getElementsByTagName && document.getElementsByTagName( 'script' ) || document.all && document.all.tags( 'script' ) );
\r