写点什么

Dojo 框架:误解与现实

  • 2010-12-23
  • 本文字数:8828 字

    阅读完需:约 29 分钟

随着 Ajax 技术的流行,越来越多的 Web 应用使用 Ajax 技术来提高用户体验。使用 Ajax 技术的一个重要优势是不需要额外的浏览器插件支持,只需要使用浏览器原生的 API,并利用 JavaScript 来操作即可。使用原生 API 时会遇到的两个比较大的问题是浏览器兼容性和底层 A 代 PI 接口带来的编程复杂性。同样的功能在不同的浏览器上的实现方式是存在差异的。如果一个应用希望支持不同的浏览器,则开发人员需要添加很多的浏览器检测或嗅探的代码。比如同样的事件绑定功能,在 IE 上使用 attachEvent ,而在其它浏览器上则使用 addEventListener 。除了兼容性问题之外,浏览器提供的原生 API 的接口一般都比较适合用来执行细粒度的操作。当需要完成一些相对复杂的操作的时候,使用原生 API 接口会使得代码比较繁琐。以一个 DOM 查询为例:在当前文档树中查找给定 ID 的节点的所有给定标签的直接子节点。对于这样一个查询,使用原生 DOM API 的话,则会需要使用 getElementById 来查找节点,通过 childNodes 来获取子节点列表以及比较节点的标签名称等。所要求的码量会比较大。

JavaScript 框架的出现,正是为了解决这两个比较大的问题,而不同的 JavaScript 框架也提供了各自额外的附加价值。目前可以使用的 JavaScript 框架非常之多,比较流行的也有十多种。这些流行的JavaScript 框架包括 jQuery Dojo YUI MooTools Prototype Ext JS Google Closure 等。这些不同的框架有着各自不同的优势和不足,也有着对应的不同的适用情景和范围。由于工作的关系,笔者对 Dojo 框架的使用最多,对于其它框架也有一定的了解。本文的目的是希望澄清一些对于 Dojo 框架的误解,从而帮助开发人员选择合适的框架。

在开始之前,首先简要介绍一下 Dojo 框架的基本结构。Dojo 框架由四个部分组成:Dojo 基本库、核心库、Dijit 和扩展库。基本库包含最基本的功能,核心库是基本库的扩展,Dijit 是用户界面库,而扩展库则是各式各样的扩展组件。

满足 Ajax 应用开发基本的需求

Dojo 和其它框架一样,都试图满足 Ajax 应用开发中的最基本的需求。这些基本的需求包括前面提到的浏览器兼容性和原生 API 的接口粒度问题,以及一些典型的应用场景。具体来说,应该包括下面一些功能集:JavaScript 语言增强、XMLHttpRequest 封装、DOM 查询与操作和事件处理等。而浏览器兼容性体现在这些功能集在不同浏览器上的效果是一样的。

从 Dojo 框架来说,对这些功能集的支持是比较丰富的。在 JavaScript 语言增强方面,对数字、字符串、日期类型、数组和 JavaScript 方法等有很多的增强功能。在 I/O 传输方面,除了常用的 XMLHttpRequest 之外,还支持 iframe 和

2010-12-23 00:006705

评论

发布
暂无评论
发现更多内容

数据结构与算法知识点总结

烟雨濛濛

领域驱动设计(DDD)实践之路(一)

vivo互联网技术

架构 领域驱动设计 DDD

Java 后端博客系统文章系统——No2

猿灯塔

【写作群星榜】6.27~7.10 写作平台优秀作者 & 文章排名

InfoQ写作社区官方

写作平台 排行榜 热门活动

肖风:数据要素市场与分布式AI平台

CECBC

啃碎并发(八):深入分析wait&notify原理 猿码架构

猿灯塔

区块链+高考,让世界再无冒名顶替

CECBC

SpringBoot入门:01 - 配置数据源

封不羁

Java spring springboot

终于有人把Elasticsearch架构原理讲明白了,感觉之前看的都是渣

爱嘤嘤嘤斯坦

Java elasticsearch 编程 架构

一个爱不释手的Apifox,让我扔掉 Postman的想法

给你买橘子

Java 编程 程序员 开发 Postman

Git 常用操作汇总-cheat sheet

多选参数

git GitHub gitlab gitee

Java集合总结,从源码到并发一路狂飙

给你买橘子

Java 编程 算法 集合

DDD实施过程中的点滴思考

冯文辉

领域驱动设计 DDD

积极支持EdgeX发展,英特尔为2020 EdgeX中国挑战赛获奖队伍创造广阔合作空间

最新动态

521我发誓读完本文,再也不会担心Spring配置类问题了

YourBatman

spring springboot @Configuration Spring配置类

微服务架构下分布式事务解决方案

Axe

16种设计思想 - Design for failure

Man

Java 微服务 设计原则

创业使人成长系列 (2)- 散伙协议

石云升

创业 股权 合伙人 散伙协议

编程能力 —— 异步编程

wendraw

Java 大前端 编程能力

亚马逊:让创新科技成为重启世界的新动能

爱极客侠

Docker基础修炼3--Docker容器及常用命令

黑马腾云

Docker Linux 容器 命令

【Java虚拟机】垃圾收集器与内存分配

烫烫烫个喵啊

Java Java虚拟机

流水账

zack

编程能力 —— 寻路问题

wendraw

Java 大前端 编程能力

漫画通信:一图看懂通信发展史

阿里云Edge Plus

HTTP/2 总结

guoguo 👻

利用 Python 爬取了 13966 条运维招聘信息,我得出了哪些结论?

JackTian

Python Linux 运维 数据分析 招聘

最大的 String 字符长度是多少?

武培轩

Java 源码 后端 JVM

编程能力 —— 解析表达式

wendraw

Java 大前端 编程能力

5分钟上手部署!!!

清风

Java Spring Boot

实验室里的AI激情:腾讯优图的升级修炼之路

脑极体

Dojo框架:误解与现实_Java_成富_InfoQ精选文章