MochiKit を dojo toolkit で管理しようと思った
http://svn.mochikit.com/mochikit/trunk/MochiKit/MochiKit.js
if (typeof(JSAN) != 'undefined' || typeof(dojo) != 'undefined') {
if (typeof(dojo) != 'undefined') {
dojo.provide('MochiKit.MochiKit');
dojo.require("MochiKit.*");
}MochiKit はその辺も考慮されて作られているようだ。
しかし、実際に使ってみると
<script type="text/javascript" src="/js/dojo.js"></script>
<script type="text/javascript">
// <![CDATA[
dojo.setModulePrefix('MochiKit', '/js/MochiKit');
dojo.require('MochiKit.MochiKit');
// ]]>
<script>こんなエラーが出た。
symbol 'MochiKit' is not defined after loading '__package__.js'
調べてみると
http://svn.mochikit.com/mochikit/trunk/MochiKit/__package__.js
dojo.hostenv.conditionalLoadModule({
"common": [
"MochiKit.Base",
"MochiKit.Iter",
"MochiKit.Logging",
"MochiKit.DateTime",
"MochiKit.Format",
"MochiKit.Async",
"MochiKit.Color"
],
"browser": [
"MochiKit.DOM",
"MochiKit.Style",
"MochiKit.Signal",
"MochiKit.LoggingPane",
"MochiKit.Visual"
]
});
dojo.hostenv.moduleLoaded("MochiKit.*");これの dojo.hostenv.conditionalLoadModule, dojo.hostenv.moduleLoaded がないのが原因らしい
という訳で grep してみると dojo/src/compat/0.2.2.js というのがあった
http://svn.dojotoolkit.org/dojo/trunk/src/compat/0.2.2.js
dojo.hostenv.moduleLoaded = function(){
return dojo.hostenv.startPackage.apply(dojo.hostenv, arguments);
}
:
:
dojo.hostenv.conditionalLoadModule = function(){
dojo.kwCompoundRequire.apply(dojo, arguments);
}なるほど、0.2.2 の次のバージョンで大きく関数名の変更があったのか。
じゃあよみこんでみよう。
<script type="text/javascript" src="/js/dojo.js"></script>
<script type="text/javascript" src="/js/src/compat/0.2.2.js"></script>
<script type="text/javascript">
// <![CDATA[
dojo.setModulePrefix('MochiKit', '/js/MochiKit');
dojo.require('MochiKit.MochiKit');
// ]]>
<script>おお。うまくうごいた
dojo のお作法的には
こうする。
<script type="text/javascript">
// <![CDATA[
var djConfig = {
compat: '0.2.2'
};
// ]]>
</script>
<script type="text/javascript" src="/js/dojo.js"></script>
<script type="text/javascript">
// <![CDATA[
dojo.setModulePrefix('MochiKit', '/js/MochiKit');
dojo.require('MochiKit.MochiKit');
// ]]>
<script>おお。うまくうごいた