原文地址:http://dojo.jot.com/DojoPackageSystem
作者:Dylan Schiemann
翻译:风灵风之子
Dojo包系统
by Dylan Schiemann
目的
包所封装的系统允许你列出一个包含文件的脚本,脚本会从Dojo源代码树中发现和取出你应用所需要的包。这意味着在最简单的应用中,不需要建立程序,也不需要在每个脚本文件中包含script标签将它载入脚本文件。
另外,包所封装的系统允许创建一个压缩包文件,这个文件包含一系列你的应用所需要的脚本程序,不多也不少,通过Ant来完成编译。
提示:在Dojo0.3+中,dojo.hostenv.conditionalLoadModule()方法已经被替换成dojo.kwCompoundRequire(),dojo.hostenv.moduleLoaded()方法被替换成dojo.provide()。如果使用旧的方法来用Dojo 0.3+,请使用一个兼容性的包(http://dojo.jot.com/WikiHome/UsingCompatibilityPackages)
包文件格式例子
// dojo/src/webui/widgets/__package__.js中的内容
dojo.kwCompoundRequire({
common: ["dojo.webui.widgets.parse"] // a generic dependency
});
dojo.provide("dojo.webui.widgets.*");
定义
kwCompoundRequire
传递一组对象,根据主机环境排序
provide
决定哪些模块将被考虑装载
一个长一点的例子
这个是位于dojo/src/foo/__package__.js包文件的内容:
dojo.kwCompoundRequire({
common: ["dojo.foo.Foo", "dojo.foo.Bar"],
browser: ["dojo.foo.Baz"]
});
dojo.provide("dojo.foo.*");
这一系列的定义说明了,当你写下dojo.require("dojo.foo.*")这个方法时,在浏览器内部Foo.js, Bar.js和Baz.js这些脚本文件将会在这个目录里被调用。当你在命令行下运行时,只有Foo.js 和 Bar.js会在这个目录里面被调用。
从源文件中包含Dojo
一旦你的包被使用,将从源代码书中包含Dojo,你应该使用如下的标签在你的html源代码中。
另外,你将指定你所需要的模块来装载。我通过一个单独的脚本文件来初始化Dojo。举一个例子,假如你的程序需要Dojo的事件系统,你需要增加这个命令:dojo.require("dojo.event.Event");
预置建立文件格式
var dependencies = [
"dojo.io.*",
"dojo.event.*",
"dojo.xml.*",
"dojo.graphics.*",
"dojo.io.BrowserIO",
"dojo.webui.*",
"dojo.webui.widgets.foo.*",
];
load("getDependencyList.js");
建立一个包
在指定预处理文件以后象被显示在那之上静态地指定您想要包括的包里,保存这个文件为, /buildscripts/profiles/foo.profile.js. 然后运行ant和指定的预处理的文件名字作为参数。举例如下:
ant -Dprofile=foo clean release
然后在你的html源代码中,你可以通过增加如下标签简单地包含Dojo:
|