写点什么

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:006884

评论

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

【从0到1学算法】4.Bubble Sort算法-上

Geek_65222d

10月月更

阿里云事件生态再升级:使用 EventBridge 驱动全量云产品

阿里巴巴云原生

阿里云 云原生 EventBridge

权威认可!OceanBase 通过分布式数据库金融标准验证

OceanBase 数据库

【DBA100人】台枫:DBA不仅要懂运维还得懂代码

OceanBase 数据库

Baklib|构建在线客户服务,产品知识库至关重要

Baklib

当 WASM 遇见 eBPF:使用 WebAssembly 编写、分发、加载运行 eBPF 程序 | 龙蜥技术

OpenAnolis小助手

开源 操作系统 内核 ebpf Wasm

中原银行:基于StarRocks构建OLAP全场景架构解决方案,迈入极速统一时代

StarRocks

数据库

Vue中的nextTick有什么作用?

CoderBin

面试 前端 Vue 3 nextTick 10月月更

BAT加速冲刺,“智慧交通”赛道谁能笑到最后

硬科技星球

Vue 中const 命令

默默的成长

前端 Vue 3 10月月更

企业号十月PK榜,年度榜单倒计时开始!

InfoQ写作社区官方

企业号十月PK榜

Milvus 2.1 版本更新 - 简单可信赖、性能持续提升

Zilliz

人工智能 开源项目 Milvus 版本更新 向量数据库

【kafka】kafka的服务复用与隔离设计方案

石臻臻的杂货铺

kafka 后端 10月月更

快速一览:织信低代码联合WPS推出多场景办公轻应用

优秀

低代码 wps

Vue 2x 中使用 render 和 jsx 的最佳实践 (1)

默默的成长

Vue 前端 10月月更

深入浅出理解Java并发AQS的独占锁模式

JAVA旭阳

Java 并发 10月月更

Java基础(五)| 方法的定义、调用及重载

timerring

Java 10月月更 方法重载

华为云从入门到实战 | 云服务概述与华为云搭建Web应用

TiAmo

华为 华为云 云开发 10月月更

【10.7-10.14】写作社区优秀技术博文一览

InfoQ写作社区官方

优质创作周报

Baklib分享|知识管理是企业发展的风向标

Baklib

Baklib分享|提高工作效率,在线协作文档

Baklib

什么是云渲染?《阿凡达》《阿丽塔》告诉你

Finovy Cloud

人工智能 云渲染

SAP | 认识abap工作台(上)

暮春零贰

SAP abap 10月月更

Flowable 按角色分配任务

江南一点雨

spring springboot workflow flowable

图解ReentrantLock公平锁和非公平锁实现

JAVA旭阳

Java 并发 10月月更

DDC SDK的整体设计流程

BSN研习社

数有引力 智造未来 | 华为云云商店星品推介会·厦门站

极客天地

ES6中Let命令基本用法

默默的成长

前端 ES6 10月月更

你对“低代码”存在哪些误解?

优秀

低代码

Baklib|关于帮助中心需要注意的一些细节

Baklib

三步玩转:如何通过Flink OceanBase CDC连接器快速查询数据

OceanBase 数据库

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