认识dojo

Dojo是一个强大的面向对象JavaScript框架。主要由三大模块组成:Core、Dijit、DojoX。Core提供Ajax,events,packaging,CSS-based querying,animations,JSON等相关操作API。Dijit是一个可更换皮肤,基于模板的WEB UI控件库。DojoX包括一些创新/新颖的代码和控件:DateGrid,charts,离线应用,跨浏览器矢量绘图等。

Dojo不但提供各式各样的Javascript标准库方法,还包含了功能丰富的部件(极大减少开发量,基本不用再编写JavaScript代码)、构建工具(build脚本)、测试框架等,从全局的角度来看,Dojo框架 有如下几部分组成:

Dojo框架图

Base

作为Dojo的内核,是一个很简洁、高度优化的库,也是Dojo中其他部分的基础组件。

Core

基于Base而构建,提供了解析部件、高级动画效果、拖放工具、国际化、后退按钮处理、管理cookie等方面的功能。其中,Dojo的打包系统提供了如同Java中import语句一样简单的机制,让我们能很方便的导入必要模块和资源。

区分Base和Core,可以简单的通过 是否必须显示引入到页面的模块或资源,并且如果和dojo命名空间有关系,那就是属于Dojo中Core组件部分了。

Dijit

这是Dojo中的部件库,也叫做Dojo widget,它提供了大量即装即用的部件,并且轻量、方便移植。我们同样可以在Dojo中很容易的创建自己的部件库。

对于部件的使用,简单来说只需在普通HTML标签中指定特殊的dojoType属性为你所要使用的部件Id,由于Dijit直接构建与Core,对其强烈依赖,所以我们也是要通过显示引用来加载部件。只要是遵循Dijit的风格和约定,就能开发出同样易于移植并符合可重用组件的要求。

Dijit中的部件简略分类为:通用部件、布局部件和表单部件。通用部件有进度条和对话框等,布局部件有选项卡、折叠菜单栏等,表单布局就是各类BTN、输入框等。

DojoX

DojoX是一组扩展子项目的集合,也就是Dojo中的实验项目或不稳定项目的总和。一般这类组件都是很容易发生变化并不稳定,用他们的话来解释,DojoX是处于构思阶段的部件。

Util

这里就包含了前面介绍JavaScript单元测试框架和一些构建工具。构建工具的主要作用就是减少代码文件的大小,并且能够将它们整合到一个由多层构成的文件集合中(看明白没,说白了就是把项目文件构建成一个紧凑的体系结构),要知道Dojo宣传说压缩后的脚本大小普遍较少50%或者更多。(就我在Dojo项目上摸爬滚打中所了解到,50%是个比较靠谱的数据,我们项目前台js文件压缩后边的很小了)

Dojo的背后力量很强大,在IBM的推动下,很多项目也都应用Dojo框架来做前端,作为知识储备,了解和熟悉它,也是很有必要的。

时间: 2024-10-15 04:15:35

认识dojo的相关文章

为什么会有jQuery、Dojo、Ext、Prototype、YUI、Zepto这么多JS包?

目前流行的JS框架很多Dojo .Scriptaculous .Prototype .yui-ext .Jquery .Mochikit.mootools .moo.fx 等.当然还有很多我都不熟悉的框架,就没有列举. 很多人会在坛子里问,到底哪个框架好呢?哪个框架更牛x呢? 哪个框架OO 更舒服呢? 个人觉得,这是一个新手很容易犯的错误逻辑. 世界上任何东西,任何工具,都没有最好的这一个说法,只有适合和不适合. 我们要根据我们项目的真实需要来选择具有相关特性的框架. 一.JQuery推荐级别:

dojo学习(一)入门

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>validationTextbox</title> <head> <title>Dojo: Hello World!</title> <style type="text/cs

Dojo Configuration-dojo/_base/config

使用dojoConfig(djConfig)对Dojo进行全局配置以控制其默认行为. dojo.config在Dojo启动过程中使用,有以下三种方式可以修改其默认值: 在引入Dojo核心模块的script标签中定义data-dojo-config属性并设定其值. 在引入Dojo核心模块之前定义dojoConfig对象. 自行编译Dojo. 1 <script src="/dojo/dojo/dojo/dojo.js" data-dojo-config="has:{'do

dojo/query源码解析

dojo/query模块是dojo为开发者提供的dom查询接口.该模块的输出对象是一个使用css选择符来查询dom元素并返回NodeList对象的函数.同时,dojo/query模块也是一个插件,开发者可以使用自定义的查询引擎,query模块会负责将引擎的查询结果包装成dojo自己的NodeList对象. require(["dojo/query!sizzle"], function(query){ query("div")... 要理解这个模块就要搞清楚两个问题:

[转]掌握 Dojo 工具包,第 2 部分: XHR 框架与 Dojo

作者:secooler 快乐的DBA Ajax 的兴起改变了传统的 B/S 结构应用程序中以页面为单位的交互模式,Ajax 引入的局部刷新机制带来了更好的用户体验,促使浏览器中的页面开始向应用程序发展,Google Mail, Google Reader 是在这种趋势下诞生的典型应用. Dojo 提供了基于 XmlHttpRequest 的对象的 XHR 框架来支持异步 Ajax 调用,另外 Dojo.io 包中提供了两种浏览器与服务器交互的方式:iframe. 隐藏框架和 script. 动态

dojo的TabContainer中增加的ContentPane如果是closable,如何在关闭后不销毁ContentPane

主要思路是新建TabContainer的扩展类,重载其closeChild属性,使得其在关闭子容器时,不调用该子容器的destroyRecursive方法. define([ "dojo/_base/declare", "dijit/layout/TabContainer" ], function(declare,TabContainer) { return declare("comm.comm.ExTabContainer", TabConta

Error:dojo.data.ItemFileWriteStore

1.错误描述 2.错误原因 3.解决办法 Error:dojo.data.ItemFileWriteStore,布布扣,bubuko.com

dojo demo, 服务器验证用户名是否已经被使用

这个demo有助于理解JS与服务器的协同工作. 文档结构如上图,  主要是三个文件: main.js  table.html validateUserName.jsp (代码见文章末尾) 页面打开如下: 选中第一个输入框后,右侧出现定义好的提示信息.如下: 输入"olduser" , 为了简化验证过程,在validateUserName.jsp 中用硬编码验证用户名是否为"olduser", 返回JSON字串. 如果是,则返回{valid:false}, 否则返回{

arcgis 为什么选择dojo

1.dojo 异步加载定义(AMD)模式:在执行js代码的时候不会阻塞dom的加载,页面的整体加载速度较快 2.模块的划分:使用面向对象的编程方式与代码组织方式,很适合大型项目的开发与代码复用和维护,defined()与require() 3.dojo是个大而全的框架:方便使用,而且很多功能组件已经写好了,不需要额外的开发 4.浏览器兼容性:解决了各个浏览器不兼容的问题 5.网页布局:通过bordercontainer实现页面元素的简单布局 6.组件扩展:易于继承与扩展,declare()申明类

Hello Dojo!(翻译)

http://dojotoolkit.org/documentation/tutorials/1.10/hello_dojo/index.html 欢迎学习DOJO!在本教程中,你将学些到如何加载DOJO,并能够了解DOJO的一些核心功能.你也会了解到DOJO的AMD模式,一种基于模块化架构.该架构可以让你通过扩展模块的方式扩展你的网站或应用的功能,发现错误的时候,如何找到解决方案. 开始 使用DOJO很简单,就像使用其他的javascript文件一样,我们只需要把dojo.js文件包含到问的页