2007年3月3日星期六

DOJO学习系列(前言+HelloWorld)

起初学习Ajax的时候是从《Ajax 基础教程》开始的,接触Ajax让我感触最深的却是javascript比想象中强大得多,之后一有空就淘淘好的javascript代码。随之出现的Ajax框架也很多,但我一直认为自己写才是王道,用那些框架干什么,所以也没研究。有需要就自己写了,并没考虑安全效率等问题。学asp.net的时候接触了下Atlas,试用了下确实很好用,根本不需要自己写代码,这样就萌发了学习下java下Ajax框架的想法,炒得比较火的有DWR、DOJO,按照接触顺序一次学习了下,写了一些demo,关于DWR我会写一篇blog,这里就谈谈DOJO吧。其实老师早跟我说过IBM 的DOJO,我当时还是坚持说网上DWR很流行,群里面也有蛮多人讨论DWR的,再加上草草看过DOJO源码和文章之后根本不知道它们在搞什么,demo也没能写出来,所以放了下来。这次项目给自己下了死命令一定要用DOJO,起码要DEMO一下,说实在的,网上下的文章没能帮助我多少,还是源代码来的直观。
我的第一个DOJO Demo还是要感谢 良葛格 的HelloWorld,只能怪我天生愚钝,第一次按他的写没能写出来。我第一次写是这样写的:只把dojo.js添加到web目录下然后demo调用,结果IE提示javascript错误,找不到什么什么,郁闷死了。源码下的demo看过之后脑袋都是大的,不知道如何下手,代码多了。突发奇想(对我而言:)),我把helloworld.html直接拷贝到源代码目录下,改下引入dojo的路径,嘿嘿,可以了,不需要应用服务器就可以了。这样我明白了过来...下面开始写吧:
1.下载dojo-0.4.1-ajax.zip
2.把解压后的dojo-0.4.1-ajax整个拷贝到web目录下(随后你可以知道其实并不需要这么多)
3.撰写测试页面(index.html)添加下面代码片段:

《script language="JavaScript" type="text/javascript">
// Dojo
configuration 这里设置是否输出调试信息 djConfig = { isDebug: true
};《/script>
《script type="text/javascript" src="dojo-0.4.1-ajax/dojo.js">《/script>
《script language="JavaScript" type="text/javascript">
dojo.require("dojo.io.*");
dojo.require("dojo.event.*");
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.Button");
//这里你可以理解为java里面的import dojo.addOnLoad(init);
//这个是回调函数 function
helloCallback(type, data, evt) {
if (type == "error")
{
var txtNode =
document.createTextNode("error...");
} else
{
var txtNode =
document.createTextNode(data); }
var result =
dojo.byId("result");
dojo.dom.replaceChildren(result,
txtNode);
}
function helloPressed()
{
dojo.io.bind({url:"response.txt",
handler:helloCallback}); }
function init() {
var
helloButton =
dojo.widget.byId("helloButton");
dojo.event.connect(helloButton,
"onClick","helloPressed");
} 《/script>
《/head>
《body>
《button dojoType="Button" widgetId="helloButton"> Press
Me

《 divid="result">《/div>
《/body>

4.基本上写过Ajax就可以看个明白了,我们还需要在同目录下创建response.txt,写上HelloWorld !目录结构
—WebRoot
——WEB-INF
——|—...
——META-INF
——|—...
——dojo-0.4.1-ajax
——|—DOJO源代码
——index.html
——response.txt
5.启动应用服务器,OK,如果你的按钮变了颜色,并且没提示javascript错误,那么你成功了!!
6.我提供的HelloWorld是精简了的,像java一样,我只提取了我需要的js,比如引入的(require)io
以及widget的部分js文件,注意你需要a11y.js Manager.js如果没有这个文件 debug失效(暂时如此)
,如果你少什么debug会在页面上直接告诉你,你依次添加就行了。
下载地址
下一期讲widget下的DOJO小部件。
参考文章:苏小勇的bloghttp://www.bestunix.net/p/dojobook1.php
良葛格http://www.javaworld.com.tw/jute/post/view?bid=49&id=166519&sty=1&tpg=1&age=0

没有评论: