2007/11/07

[javascript] MochiKit-1.3.1 と dojo-0.3.1 との連携CommentsAdd Star

sample.html の内容は

こんな感じにしてみました。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Language" content="ja" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>hoge</title>
<meta http-equiv="Content-Style-Type" content="text/css; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript; charset=utf-8" />
<script type="text/javascript">
// <![CDATA[
var djConfig = {
compat: '0.2.2'
};
var MochiKit = {
__compat__: true
};
// ]]>
</script>
<script type="text/javascript" src="dojo-0.3.1-ajax/dojo.js"></script>
<script type="text/javascript">
// <![CDATA[
dojo.setModulePrefix('MochiKit', '../MochiKit-1.3.1/lib/MochiKit');
dojo.require('MochiKit.*');
// ]]>
</script>
</head>
<body>
<h1>ちょうテスト</h1>
</body>
</html>

そうすると

Firebug とかで確認すると Ajax で依存関係が読み込まれているのが分かります。

ちゃんと連携されてました ^^

でも、 Ajax で読み込むと eval されるので重いです。なので最終的には dojo.js と packed/MochiKit.js/MochiKit.js と他の dojo のクラスたちを連結させてひとつのファイルにして一番上に

var djConfig = {
compat: '0.2.2'
};
var MochiKit = {
__compat__: true
};

と追加すればいいと思います。
ちなみに

この

var MochiKit = {
__compat__: true
};

という記述は、 MochiKit の様々なクラスをグローバル領域にエクスポートするためのものです。 MochiKit.Color.Color などのようにフルパスで指定してもいい場合は false を指定するか、何も指定しないで OK です。

MochiKit はパッケージ管理システム(dojoやJSAN)といっしょに読み込まれるとグローバル領域を汚さないようにします。

それを逆に防ぐための方法です。

Permalink | コメント(2) | トラックバック(1) | 22:20 このエントリーを含むブックマーク このエントリーのブックマークコメント
[コメントを書く]

Voluntas Voluntas 『感謝の言葉しか出てきません、本当に有り難うございました。
__compat__: ture はどうがんばっても出てきませんorz

フルパスで指定しない場合も色々模索していたのですが
手がかりもまったくなく???でした。

>dojo.js と packed/MochiKit.js/MochiKit.js と他の dojo のクラスたちを連結させてひとつのファイル
これを明日にでも早速やってみようと思います。

疑問が一気に解決しました…有り難うございました。』 (2006/10/04 23:29)

amachang amachang 『__compat__: true は僕も出来なくて悩んでて、ソース読んでやっと出てきました ^^;
そういう意味でも、ブログ界隈でこのような話題が出て Google からクロールされて、世の中のナレッジとして蓄積されていくのはうれしいですね。』 (2006/10/05 16:08)

No comments: