实战Dojo与RequireJS集成 之二

Dojo 学习笔记入门篇:第一个 Dojo 示例(使用 Dojo JS) 这是一个简单的 Dojo 示例,它演示了如何使用 Dojo JS 创建一个基本的 Web 应用程序。你可以从 Dojo 的官方网站下载最新版本的 Dojo,然后将其引入到你的 HTML 文件中。假设你已经完成了这一步骤,我们可以开始编写我们的第一个 Dojo 示例了。在本篇学习笔记中,我们将介绍如何使用 Dojo JS 创建一个简单的示例。Dojo 是一个功能强大且灵活的 JavaScript 框架,它提供了许多工具和功能,帮助开发人员构建现代化的 Web 应用程序。这是我们将在示例中使用的输出容器。 阅读详情

Dojo 和requireJS 集成之二

 

作者: feijia (tiimfei@gmail.com)

 

在成功了配置了dojo和requireJS之后,我们要仔细分析一下这个模板项目的源代码, 看看Ben提供的程序框架究竟是怎么实现的。

首先我们会注意到 index.html

这是整个应用的入口。 在这里首先会看到一段JavaScript




这段脚本主要做了两个动作:

1. 配置reuqireJS 所要加载的包的名称路径 (有点类似于配置Java的classpath,告诉加载器 模块的位置)

2. 核心逻辑是在ready:function()  它指定了requireJS在整个页面DOM装载完成后要执行的逻辑。 这里就是装入app的依赖模块('app/App'和‘app/config' 。 ),并启动app.startup。

在requireJS 被加载后,它会解析我们这里定义的require对象。并在页面DOM装入完毕后执行ready属性所指定的回调函数。

 


除了这段脚本, index.html 中还有一段HTML定义了一个名为"app" 的div节点。这个节点就是将由App所创建的Widget所用的节点。 如果App成功运行,则这个Div中的html代码将会替换成由Widget定义的内容。如果App装入失败,用户就会看到写在index.html中的这段静态内容。"        if you're seeing this - it didn't work"

 

下面我们就来看一下app/App是什么内容。 从路径上可以判断,这个模块指向我们项目中的app/App.js
===App.js


App.js 中,它先声明了自己的依赖模块,包括了dojo, dijit/_widget dojo/date/locale 等。 要特别注意的是,它还有一些特别的依赖 例如 'i18n!.nls/App'  这是requireJS的插件定义的格式。 表示这个依赖需要由一个名为i18n的requireJS插件去加载,而所加载的资源的路径为./nsl/App.js 

requireJS 的plugin其实本身也是一个标准AMD模块。 ! 之前的部分就是这个模块的名字。 因为这里我们使用的是i18n,因此requireJS会试图先去加载一个名为i18n的模块。 默认的,它会在项目根目录去寻找名为i18n.js的文件加载。 如果我们希望把这个插件的位置移动一下到requirejs目录中,可以这样写

requirejs/i18n!.nls/App

类似的,我们看到另一个'text!./templates/App.html'依赖, text也是一个requireJS的标准插件, 这个插件的作用很简单就是把 一个文件作为字符串加载进来。 这里就是用来加载了一个我们接下来会用到的widget 模板:./templates/App.html
使用requireJS text插件的示例:


分析完了该程序的依赖,我们再来看App的逻辑是什么。 它只有一个return 语句, 内容是一个d.declare调用. 参数d就是dojo。我们知道
dojo.declare 是用来创建类的。 这里我们创建了一个基于widget和Templated的子类. 而参数Widget 对应 dijit/_Widget, Templated 对应 dijit/_Templated , 因此该类继承自dijit/_Widget 和dijit/_Templated。 该类还自

定义了一个模板字符串,和一个i18n 包。 buildRendering 是复写dojo._Widget基类的方法。主要就是获取了2个字符串。一个是用当前默认locale 的月份字符串,另一个是用法语的。 然后就执行父类的方法 this.inherited(arguments)

startup也是dijit._Widget 的基类方法,在一个Widget启动时调用。这里也直接调用了父类的方法,并弹出对话框(App is Started)

所以App实际就是声明了一个新的Widget类并指定了Widget的模板。 那么这个模板是怎么样的?

<div>
    <h1>${i18n.heading}</h1>
    <p>${i18n.welcome}</p>
    <ul>
        <li>default locale: ${defaultMonths}</li>
        <li>locale 'fr-ch': ${frchMonths}</li>
    </ul>
</div>



稍微了解一下dijit的模板机制就可以看懂这个非常简单的Widget模板了。  所有${xxx}的内容都会被相应的变量值替换。 我们在前面dojo.declare 中看到, ${defaultMonths} 和 ${frchMonths} 是自定义的两个字符串. 而i18n.heading 和 i18n.welcome 是从    'i18n!./nls/App 得来的值。



到这里我们已经看完了所有的代码。 下面是该程序的架构示意图:

 

这个例子看起来有些复杂,其实如果你只是想用requireJS 和dojo 可以非常简单。 几行代码就可以了,但是我们要反问自己AMD的优势究竟是什么?那就是更清晰的模块化代码结构和解藕。 因此这个应用程序模板提供了一个很好的例子,你可以在它的基础上进一步去搭建自己的前端应用。

在架构图中你可以看到它清晰的把加载器,程序入口和配置,程序的主要业务逻辑,以及应用所依赖的类库和资源都做了清晰的隔离. 而所有这些模块和资源全部都是使用requireJS来统一管理和加载的。当应用程序的逻辑逐渐变得复杂,使用各种的本地化资源和第三方类库时,这样模块化的优势就会体现出来.

从服务器读取数据的基础篇:使用 Dojo JS 在网页开发中,经常需要从服务器获取数据并在网页上展示。Dojo JS 是一个功能强大的 JavaScript 框架,它提供了一系列用于处理异步请求的工具和方法。本篇文章将介绍如何使用 Dojo JS 从服务器读取数据,并展示相应的源代码。通过以上步骤,我们就可以使用 Dojo JS 从服务器读取数据。你可以根据实际情况修改请求的 URL 和处理数据的逻辑,以满足你的需求。接下来,我们将创建一个 JavaScript 函数,用于发起从服务器获取数据的请求。首先,我们需要在网页中引入 Dojo JS 库。 阅读详情

相关推荐

Requirejs异步加载Dojo1.6

使用Requirejs异步加载Dojo1.6,运行在Tomcat6下

初步了解dojo js框架之学习实例

mydojo.html --> --> 基于教程http://www.ibm.com/developerworks/cn/web/wa-ground/ dojo和jquery差不多。。。据说一个重量级的一个轻量级的。 了解即可,使用谷歌浏览器或者firebug查看日志 dijit/themes/themeTester.html login.htm

云守护的专栏 1134

Dojo JS框架最新版

Dojo 同样也是一款功能超级强大的JS框架,也可以说Dojo 是一个基于JavaScript 编写的开源DHTML工具箱。

Dojo学习和常用知识

Dojo 是一个流行的 JavaScript 库,用于开发 Web 应用程序。它提供了许多功能,如 DOM 操作、事件处理、动画效果、数据存储和许多其他实用功能。在今天的 Web 开发中,Dojo 仍然被广泛使用,尤其是在企业级应用程序开发中。下面是一个详细的 Dojo 详解,包括代码实例。

AI时代光年 1753

Comsol有限元网格剖分实战:从基础操作到高效仿真技巧

本文系统介绍了COMSOL有限元网格剖分的核心实战技巧。从基础的物理场控制与用户控制网格选择,到三角形、四边形、四面体等网格单元类型的适用场景,再到扫掠网格、边界层网格与复制网格等高效剖分方法,最后讲解了网格质量评估与几何预处理的关键步骤。旨在帮助用户掌握从自动到手动、从基础到高效的网格剖分艺术,实现仿真精度与计算效率的最佳平衡。

j7k8l的博客 376

PLC1200使用CB1241RS485通讯模块做从站进行Modbus Rtu通信

添加新设备(PLC)->设备和网络管理->点击PLC->看到硬件目录选择通信板->点到点->CB1241(RS485)->看到6ES7241-1CH30-1XB0选择添加,如图。指向Modbus保持寄存器数据块的指针 我这里指向了自定义的DB块数据中一个INT数组。在通信->通信处理模块->MODBUS(选择不带RTU的通信指令块)注意:接线时,TRA接485调试模块的B- TRB接调试模块的A+组态后的硬件标识符 270 对应自己组态后自动生成的。1:事务完成,且无任何错误。波特率对应自己使用的。

swmyaopeng的博客 2万+

dojo框架简介

一.dojo介绍dojo是一个js的工具集,一个面向对象的js框架(在widget中更能体现这点),根据功能分成多个module,每个module又分为多个package,可以根据程式的需要导入不同的package,类似于JAVA。 官方网站: http://dojotoolkit.org/ 操作指南: http://manual.dojotoolkit.org/WikiHome 二.do

Johnny.Wang 1万+

STM32超声波避障小车硬件设计与实时测距实现

超声波测距是嵌入式系统中经典的环境感知技术,其原理基于声波在空气中的传播时间与距离的线性关系,通过精确计时实现非接触式距离测量。该技术具备成本低、抗光干扰强、算法简洁等优势,广泛应用于智能小车、机器人避障、液位监测等场景。工程落地的关键在于硬件信号完整性(如5V/3.3V电平匹配)、微秒级定时精度(依赖高稳定外部晶振与输入捕获模式)以及强干扰环境下的数据鲁棒性(需软硬协同滤波)。本文以STM32F103C8T6为平台,深入解析HC-SR04模块的时序闭环控制、TIM3输入捕获双沿测量、L298N电机状态机驱

weixin_42578963的博客 295

实战Dojo与RequireJS集成 之一

<br />在前几篇关于Dojo 1.6中新加入AMD支持的介绍文章中我们提到, 虽然dojo1.6 没有自带一个AMD加载器,但是dojo可以作为一个AMD模块被任意标准AMD 加载器(AMD loader) 加载(例如requireJS)<br /><br /> 后面有读者问具体如何实现。 本文就次做一些探讨。 <br /><br /> 在开始动手之前我们要下载一些素材<br /><br /> 首先我们要感谢Ben Hockey 他已经为dojo 和requireJS的集成做了一个模板项目, 在G

Dojo中文博客 7014

机器人抓取(一)—— ROS MoveIt! 程序控制真实UR5机器人运动(python)

接上篇:ubuntu18.04 ros-melodic 安装 ur_robot_driver,驱动真实的 ur5 机器人 上文在 ubuntu 系统中配置了ur 机器人ros功能包 universal_robot 和驱动 Universal_Robots_ROS_Driver,并实现了用 moveit_rviz 拖动机器人运动。本文旨在学习如何使用 moveit python 用户接口moveit_commander,实现真实的ur5 机器人轨迹规划与控制。 1. ur5 机器人控制 参考:MoveIt »

zxxRobot的博客 1万+

LangChain实战:Plan and Execute代理在智能预算规划中的应用

本文详细介绍了如何利用LangChain框架中的Plan and Execute代理实现智能预算规划。通过拆解复杂财务问题、调用多工具链协作,该代理能自动完成从个人月度预算到家庭年度综合预算的智能规划,并具备消费习惯学习和多目标优化等进阶功能,帮助用户实现精准财务管理和决策优化。

weixin_42530732的博客 382

dojo与requireJS的分析

dojo框架与requireJS都采用了AMD异步加载模块的方法,但是两者有一定的区别。 相同点是:当你引入库文件后,都会形成一个require()全局函数。 异同点: 1.requireJS引入库文件后,需要设置主模块。例如: requireJS原理:当你引入require.js文件的时候会对该脚本文件造成延迟,所以html先加载,require.js脚本后加载,require.js

遇见最好的自己,才能遇见最好的人! 2071

【Zephyr存储专题】09_LittleFs文件系统操作

本文档旨在为开发者介绍Zephyr下Littlef's文件系统相关配置使用指南

zero的博客 3246

Arcgis javascript那些事儿(二十)——dojo中djconfig配置、dojo与requirejs项目冲突

一、引言      由于项目一部分使用requirejs另一部分地图是用dojo开发(因为arcgis javascript使用的dojo),两个要和到一起,所以要求研究下如何把两者和到一起,花了两天时间看了看requirejs与dojo,终于搞定了,跟大家分享下==二、AMD标准下dojo与requirejs区别与联系      AMD标准我就不说了,简单来讲这个就是类似java包import或...

xcymorningsun的专栏 2204

Coze 打通飞书多维表格,实现数据增删改查操作实战详解

基于Coze 打通飞书多维表实现数据录入系统实战详解

congge 5780

【Claude】Claude Code 子代理(Subagents)完全指南:多 AI 编排与并行任务管理

子代理是在独立上下文窗口特性主代理子代理上下文窗口与你对话的主上下文完全独立的上下文工具权限拥有所有工具可自定义限制生命周期整个会话完成任务后结束通信方式直接对话结果返回给主代理模型继承主会话设置可指定不同模型你可以创建专属子代理,指定模型、工具权限和系统提示。在对话中,Claude 会根据任务自动选择合适的子代理。

博客 5538

Dojo与Requirejs

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34117522的博客 80

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

requirejs 调用 arcgisApi时候与dojo的集成

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34227447的博客 293

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

理解dojo.require机制

Dojo 提供了一个非常强大的javascript控件库. 在使用dojo之前,用户基本上不需要具备任何基础知识. 你可以用script远程链接到dojo(dojo.js), 也可以把dojo.js下载到本地并用script标签加载.如果你不太了解dojo, 可以参考一下如下资料:Dojo 1.4 Cheat SheetDojo Base Source Tree (1.4.3)Dojo Reference Guide大体上,dojo.js和jquery.js 或者 prototype js, 里面有很

Dojo中文博客 3万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

RequireJS模块化加载

引子 RequireJS模块化加载 本文主要是介绍RequireJS模块化加载,引进RequireJS,并不对其做深入研讨,因为我本身对RequireJS了解的不是很深入。引入RequireJS模块化加载,为后续继续学习打下基础。 RequireJS 简介 RequireJS 是一个非常小巧的 JavaScript 模块载入框架,是 AMD 规范最好的实现者之一。最新版...

145
上一篇: Dojo EnhancedGrid新功能评介(1)——Pagination
下一篇: Dojo mobile TweetView 系列教程之三——Tweets和Mentions视图
dojotoolkit
博客等级 码龄16年 1205粉丝 61原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值