`
子衿青青
  • 浏览: 112263 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

dojox.app:单页面应用框架

 
阅读更多
本文翻译自:http://www.sitepen.com/blog/2011/09/30/dojox-app-a-single-page-application-framework/
原文作者:Colin Snover
译者:Oliver


dojox.app是一个小型的应用框架,它提供了一组类,用于管理部署在移动设备或桌面系统上的单页面应用的生命周期和行为。其主类Application用来管理应用的生命周期,并且能够方便地对其进行修改,扩展出额外的自定义功能。一个Application实例包含一些Scene对象和View对象,这些对象提供了可视的用户界面。所有的视图、场景、依赖模块、以及一些其他关于应用的信息都是默认通过一个JSON配置文件传给Application类的。

config.json

这个主配置文件定义了所有的模块依赖、应用行为、顶级视图和场景、以及其他所有对应用的正确运行至关重要的信息。
示例配置:


配置属性描述:

dependencies 当其作为配置文件的顶层属性出现时,这个属性定义了整个应用所需要的模块。当其作为某个场景或视图的属性出现时,则定义了哪些模块必须在该视图/场景实例化之前加载。
modules 这个属性声明了哪些模块需要混入Application类来控制应用的生命周期。换句话说,每一个特定应用的Application类都是在运行时在基类Application的基础上加上这些模块动态创建出来的。
template 当其作为配置的顶层属性出现时,定义了整个应用的布局模板。当作为视图或场景的属性出现时,则表示该视图或场景的模板。
defaultView 这个属性定义了应用默认加载的视图。
defaultTransition 当作为配置文件的顶级属性出现时,该属性定义了顶层视图/场景所使用的默认视觉转换方法。当定义在一个场景里时,仅代表该场景的默认视觉转换方法。
views 这个views属性是一组嵌套的对象,定义了本应用或场景中的所有的视图和场景。这些内容将在后面详细介绍。
还有一些额外的属性,例如models, stores, id, name以及description,它们在将来可能会被用到,其具体的定义和用途还在开发中。


Application类

Application类本身是一个抽象类,因此从不被直接使用。它是从Scene类(详见下文)简单扩展出来的子类。dojox.app提供了一个工厂方法,以配置对象为参数,创建并自动启动整个Application实例。
其用法如下:


Scene类

Scene类为视图提供了一个模板化的容器。它的目的是为了能通过HTML模板来定义场景的布局,以及在场景切换时用到的一组子视图。例如,要显示一组标签页,你需要在一个Scene中为每一个标签配置一个子View。场景的模板将定义在哪里显示这个标签页控件和这些视图。

在内部实现上,Scene借用了dijit.layout和dijit._Templeted的一些概念。Scene类的默认模板非常简单,甚至都不能称其为一个模板——它只是简单地输出当前视图中的任意内容。场景模板中的元素可以用region属性定义在哪里显示,类似于dijit.layout.BorderContainer。例如,要实现一个标签页场景的模板可能像这样(使用dojox.mobile中的组件):
上面这个模板定义了两个region="top"的区域:一个头元素以及一个标签按钮列表。它们将在渲染时放置在场景的顶部。

通常在使用BorderContainer时还需要指定一个region="center"的区域。对于Scene来说,这个“中央”区域会被自动指定为当前活动的视图(例如当前标签页)。

除了支持场景的生命周期以及渲染过程的代码外,Scene还提供了控制子视图相互之间切换的变换方法。场景既可以包含视图,也可以包含其他场景。


View类

与场景类似,视图也是内容的容器。然而,视图只含有其模板内定义的内容,而不能包含其他子视图。它与场景的区别是,一个View实例无法包含其他场景或视图。


小结

这三个类的设计都力求简单,只提供必要的结构和生命周期(虽然还有一些额外的核心方法和生命周期句柄会很快加上)。开发者使用dojox.app框架可以通过继承这些基类来自定义视图和场景(或者实现等价的功能),并且在应用的配置文件中定义它们。


TODO

dojox.app是一个实验性的框架,其中还有一些关键组件尚在开发过程中。它的发行版预期将在Dojo2.0之前到来。目前正在开发的项目如下:

Model / Store支持 我们有几个Model/Store支持的实现,包括一个用于dojox.mvc的实现。然而,要为这些组件提供大家一致认可的API还有更多的工作要做。虽然MVC系统将会最先被支持,但它不会是必要组件,因为应用开发人员可以仅通过扩展View类来很好地控制视图的HTML。
桌面 / 移动设备分支 dojox.app是平台无关的。但在配置文件中可以使用CSS媒体选择符和属性定义,从而支持根据用户的浏览器环境选择视图和参数。
智能打包系统支持 出于性能考虑,特别是在移动平台上,一个合适的应用打包系统是十分必要的。为此,我们没有为每一个应用采用单独的打包配置文件,而是用一个包装器工具直接基于配置文件智能地生成应用包。
分享到:
评论

相关推荐

    多文件上传 dojo组件 dojox.form.FileUploader

    标题中的“多文件上传 dojo组件 dojox.form.FileUploader”是指使用Dojo JavaScript库中的dojox.form.FileUploader组件来实现网页上的多文件上传功能。Dojo是一个强大的JavaScript框架,它提供了丰富的UI组件和工具...

    DOJO_API_中文参考手册 附加注释实例

    - dojox.collections:提供了实用的集合数据结构,如List、Query、Set、Stack、Dictionary。 - dojox.encoding:提供加密功能的API,包括Blowfish、MD5、Rijndael、SHA算法。 - dojox.math:数学函数库,如曲线、...

    用DOJO中的dojox.gfx做甘特图

    标题中的“用DOJO中的dojox.gfx做甘特图”表明了本文将探讨如何利用DOJO框架的dojox.gfx模块来创建甘特图。dojox.gfx是DOJO的一个图形库,提供了丰富的图形绘制功能,支持矢量图形的创建,非常适合用于制作图表、...

    28个强大的数据可视化工具

    1.Ajax.org:Ajax.org是一个纯粹的JavaScript应用程序框架,用于创建在浏览器中运行的实时协作应用程序。开发者可以使用Ajax.org创建强大的数据可视化解决方案。 2.AnyChart:AnyChart是一个灵活的基于Flash的解决...

    SVG to dojox.gfx Convertor-开源

    Dojo Toolkit是JavaScript的一个强大的、模块化的开发框架,其中的dojox.gfx库为浏览器端的2D图形提供了抽象层,支持多种渲染后端,如SVG、VML、Canvas和Silverlight。 这个开源项目“SVG to dojox.gfx Convertor”...

    dojo api最好资料

    - `dojox.collections`:提供高级数据结构,如列表、查询、集合等。 - `dojox.encoding`:加密API,支持多种算法。 - `dojox.math`:数学函数库。 - `dojox.storage`:本地存储功能。 - `dojox.xml`:XML解析...

    dojo所有jar包dojoroot

    10. **Integration with Java**:Dojo可以通过Java Servlets、JavaServer Pages(JSP)或其他Java框架(如Spring、Struts)进行集成,实现前后端交互。 在实际开发中,"dojoroot"这个目录可能包含了Dojo所有版本的...

    使用HTML5实现多文件上传

    Uploader(dojox.form.Uploader),它具有一个可定制样式的fileinput按钮,可使用多文件选择模式,且完全基于HTML元素。在不支持HTML5的浏览器中,该控件可以自动切换到使用Flash或者iframe。Fileinput之所以叫...

    dojo api 1.0 中文文档

    - **dojox.collections**:提供有用的集合数据结构,如 List、Query、Set、Stack、Dictionary。 - **dojox.encoding**:加密功能 API,如 Blowfish、MD5、Rijndael、SHA。 - **dojox.math**:数学函数,如曲线、点、...

    dojo API pdf

    - **dojox.encoding**:加密功能API,支持Blowfish、MD5、Rijndael、SHA等加密算法。 - **dojox.math**:数学函数库。 - **dojo.reflect**:提供反射功能的函数库。 - **dojox.storage**:用于将数据保存在本地存储...

    DOJO API 中文参考手册,附加注解实例

    - **dojox.collections**:提供了多种集合数据结构,如List、Set等。 - **dojox.encoding**:加密API,支持Blowfish、MD5等算法。 - **dojox.math**:数学计算库。 - **dojo.reflect**:反射功能库。 - **...

    arcgis_js_v322_api

    ArcGIS JavaScript API v3.22是Esri公司推出的一款强大的Web GIS开发框架,它为开发者提供了丰富的功能,使得创建交互式地图应用程序变得轻而易举。这款API支持多种地图操作和地理处理任务,适用于构建各种复杂的...

    dojo技术入门ysk

    16. **dojox.collections**:提供了集合类的操作,如列表、字典等。 17. **dojox.encoding**:编码解码相关的API,如加密算法的实现。 18. **dojox.math**:数学计算相关的功能。 19. **dojo.reflect**:提供了反射...

    dojo 1.7 最新dojo包,内含最新的实例若干个。

    Dojo 是一个强大的JavaScript工具库,专为构建高性能、可扩展的Web应用程序而设计。这个压缩包中的"dojo-release-1.7.1"代表的是Dojo框架的1.7.1版本,这是一个稳定且广泛使用的版本。在这个版本中,Dojo提供了许多...

    DOJO—API—中文参考手册

    16. **dojox.charting**:用于在页面上绘制各种统计图表的工具包。 17. **dojox.collections**:提供有用的集合数据结构,如List、Set等。 18. **dojox.encoding**:实现加密功能的API,如Blowfish、MD5等。 19. ...

    DOJO API 中文参考手册,附加注解实例(精心重新排版DOC文档)

    DojoX包含了如dojox.charting用于绘制统计图表,dojox.collections提供集合数据结构,dojox.encoding实现了加密功能,dojox.math包含数学函数,dojox.reflect提供反射功能,dojox.storage支持本地数据存储,dojox....

    dojo toolkit

    总之,Dojo Toolkit是一个功能全面且强大的JavaScript框架,它通过Dijit、DojoX和Dojo Core提供了丰富的功能,帮助开发者构建高性能、易维护的Web应用。"dojo-0.4.1-ajax"这个文件展示了Dojo在Ajax通信方面的早期...

    DOJO.js 最优秀的js 框架 1.9.3

    应用框架** DOJO的`dojox/app`模块提供了一种构建富互联网应用(RIA)的框架,支持路由、状态管理、模块化应用结构。这使得开发者可以轻松地创建复杂、可维护的多页面或单页应用。 **5. 数据存储与数据绑定** ...

    Master Dojo

    - **WishList应用**:本书通过一个具体的示例——WishList应用,展示了如何使用Dojo.Data模块来处理用户数据,以及如何使用dojox.grid来显示和编辑这些数据。 - **具体步骤**:从创建数据模型开始,然后使用Dojo....

Global site tag (gtag.js) - Google Analytics