zoukankan      html  css  js  c++  java
  • 【转】初识Dojo

    定义

    Dojo是一个用JavaScript语言实现的开源DHTML工具包。它是在几个项目捐助基础上建立起来的(nWidgets,Burstlib, f(m)),这也是为什么叫它a unifined toolkit的原因Dojo的目标是解决开发DHTML应用程序遇到的那些、长期存在 、历史问题,以及DHTML 跨浏览器问题。

    Dojo能够让你更容易使Web页面具有动态能力,或者在任何能够稳定支持JavaScript语言的环境中发挥作用。

    通过以上描述,可以看出Dojo的出现是为了解决DHTML(动态的HTML)的问题和跨浏览器,其中DHTML分为三个方面HTML、CSS、客户端脚本要想在不同的浏览器上都能完美运行几乎不可能,此时Dojo为此而生。

    特征

    Dojo有以下的特征:

      1、利用Dojo提供的组件,你可以提升你的web应用程序可用性、交互能力以及功能上的提高。

      2、也可以更容易的建立互动的用户界面。同时Dojo提供小巧的动态处理工具。

      3、利用它的低级API和可兼容的代码,能够写出轻便的、单一风格(复杂)的JavaScript代码。Dojo的事件系统、I/O的API以及通用语言形式是基于一个强大编程环境。

      4、通过Dojo提供的工具,你可以为你的代码写命令行式的单元测试代码。

      5、Dojo的扩展包能够使你自己的代码更容易维护,耦合性更低。

      Dojo通过很少的代码完成了以上的功能。当你写脚本时,只需要包含很少的js文件,也可以选择的(包含)下载dojo提供的庞大的功能。

        这么一看,功能也太给力了吧...我继续研究着

    Dojo体系架构                                                                                      

    Dojo体系架构图:

        总体上来看,Dojo 是一个分层的体系架构。最下面的一层是包系统,Dojo API 的结构与 Java 很类似,它把所有的 API 分成不同的包(package),当您要使用某个 API 时,只需导入这个 API 所在的包。包系统上面一层是语言库,这个语言库里包含一些语言工具 API,类似于 Java 的 util 包。再上一层是环境相关包,这个包的功能是处理跨浏览器

    的问题。

        Dojo 大部分代码都位于应用程序支持库,由于太小限制,图 1 中没有列出所有的包。开发人员大部分时候都在调用这个层中的 API,比如,用 IO 包可以进行 Ajax 调用。

        最上面的一层是 Dojo 的 Widget 系统,Widget 指的是用户界面中的一个元素,比如按钮、进度条和树等。 Dojo的 Widget 基于 MVC 结构。它的视图作为一个 Template(模板)来进行存放,在 Template 中放置着 HTML 和 CSS片段,而控制器来对该 Template 中的元素进行操作。 Widget 不仅支持自定义的样式表,并且能够对内部元素的事件进行处理。用户在页面中只需要加入简单的标签就可以使用。在这一层中,存在数百个功能强大的 Widget 方便用户使用,包括表格、树、菜单等。

        由于 Dojo 包种类繁多,下面只列举了最常用的一些包及其功能,以方便读者有个初步了解或供以后查阅。

    包名功能
    dojo.io 不同的 IO 传输方式。 script、IFrame 等等;
    dojo.dnd 拖放功能的辅助 API 。
    dojo.string 这个包可以对字符串进行如下的处理:修整、转换为大写、编码、esacpe、填充(pad)等等;
    dojo.date 解析日期格式的有效助手;
    dojo.event 事件驱动的 API,支持 AOP 开发,以及主题 / 队列的功能;
    dojo.back 用来撤销用户操作的栈管理器;
    dojo.rpc 与后端服务(例如理解 JSON 语法的 Web 服务)进行通信;
    dojo.colors 颜色工具包;
    dojo.data Dojo 的统一数据访问接口,可以方便地读取 XML、JSON 等不同格式的数据文件;
    dojo.fx 基本动画效果库;
    dojo.regexp 正则表达式处理函数库;
    dijit.forms 表单控件相关的 Widget 库;
    dijit.layout 页面布局 Widget 库;
    dijit.popup 这个包用于以弹出窗口方式使用 Widget ;
    dojox.charting 用于在页面上画各种统计图表的工具包;
    dojox.collections 很有用的集合数据结构(List、Query、Set、Stack、Dictionary...);
    dojox.encoding 实现加密功能的 API(Blowfish、MD5、Rijndael、SHA...);
    dojox.math 数学函数(曲线、点、矩阵);
    dojo.reflect 提供反射功能的函数库;
    dojox.storage 将数据保存在本地存储中(例如,在浏览器中利用 Flash 的本地存储来实现);
    dojox.xml XML 解析工具包;
  • 相关阅读:
    BZOJ 1088 模拟(扫雷经验…)
    BZOJ 1529
    BZOJ 3224
    BZOJ 1192
    BZOJ 1012
    博客搬家说明
    BZOJ 2423 DP
    BZOJ 1789&1830 推式子 乱搞
    BZOJ 1588
    拆点:虫洞
  • 原文地址:https://www.cnblogs.com/crab/p/2630222.html
Copyright © 2011-2022 走看看