2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

评论

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

将微信小程序生成商用App很简单吗?

Geek_99967b

ide 小程序转app 小程序预览

都是限制,都是秘密,JS逆向某建筑市场数据,python爬虫120例

梦想橡皮擦

5月月更

企业智能化转型meetup回顾|开源BI & AI助力企业转型之旅三阶段!

第四范式开发者社区

人工智能 开源 企业 大数据平台 智能化转型

中兴通讯加入龙蜥社区,共建ICT全场景开源生态

OpenAnolis小助手

开源 生态 龙蜥社区 CLA 中兴通讯

gitlab 8.13.6添加server hook后保护分支失效

阿呆

#GitLab gitlab hook 保护分支

车联网的发展面临的难点怎样突破

Geek_99967b

小程序 车联网

怎样为自己的小程序打包为App

Geek_99967b

小程序 小程序转app

漫画 | 新一代软件架构会影响到谁?

阿里巴巴云原生

阿里云 云原生 事件总线 EventBridge

一、KVM虚拟化的功能特性

穿过生命散发芬芳

kvm 5月月更

实现内网穿透(二)

风斩断晚霞

Go websocket

LabVIEW和Arduino的巧妙结合(基础篇—1)

不脱发的程序猿

单片机 LabVIEW Arduino 上位机

Java 8 中的设计模式策略

HoneyMoose

JDK 15 以上版本的字符串块

HoneyMoose

Docker下RabbitMQ四部曲之二:细说RabbitMQ镜像制作

程序员欣宸

Java RabbitMQ 5月月更

JVM 线上问题定位实战(CPU 飙升)

Ayue、

JVM

OpenClusterManagement 开源之夏 2022 来了

阿里巴巴云原生

阿里云 云原生 开源之夏

Linux环境混合使用静态库与动态库

Loken

音视频 5月月更

图分析的22种算法与图形理解

清林情报分析师

数据分析 知识图谱 图算法 图论 知识结构

一种直流电池/电源正反接均可供电的电路方案

不脱发的程序猿

电路设计 电源电路 嵌入式硬件 直流电池/电源正反接电路

智能手表的机遇与挑战并存

Geek_99967b

数据安全 物联网, 智能手表

LabVIEW控制Arduino LED灯闪烁(基础篇—2)

不脱发的程序猿

单片机 LabVIEW Arduino LED灯闪烁 LIAT

AIRIOT物联网低代码平台如何配置Modbus TCP协议?

AIRIOT

低代码平台 驱动配置

跨平台应用开发进阶(十六) :uni-app实现H5页面唤醒APP

No Silver Bullet

uni-app App 5月月更 H5页面

【网易云信】沉浸式体验网易云信在线 KTV

网易智企

音视频

浅谈Http,Https

工程师日月

HTTP 5月月更

HTML语法基本规范

恒山其若陋兮

5月月更

SAAS服务的特点

Geek_99967b

小程序 SaaS

《0次与10000次》:让坏事发生0次,让好事发生10000次

郭明

读书笔记之怪诞行为学6:非凡的决定

宇宙之一粟

读书笔记 5月月更

一文学完Linux Shell编程,比书都好懂

编程攻略

Linux

Java Core「6」反射与SPI机制

Samson

学习笔记 5月月更 Java core

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