介绍一种Dojo中单页Web应用的实现方式

一旦页面加载完成了,SPA 不会因为用户的操作而进行页面的重新加载或跳转。取而代之的是利用 ">JavaScript 动态的变换 HTML 的内容,从而实现 UI 与用户的交互。由于避免了页面的重新加载,SPA 可以提供较为流畅的用户体验。 Dojo 是一个开源的,功能强大的 JavaScript 库。本文将基于 Dojo,分别从应用生命周期管理和页面布局管理等角度,介绍一种单页 Web 应用的实现方式。

传统的 Web 应用通过加载整个 Web 页面来实现与用户的交互。当用户点击一个链接或提交一个表单时,浏览器将向服务器请求一个全新的页面。这涉及到获取新页面的数据、卸载旧的页面和绘制新的页面。按照这种方式进行用户交互势必影响到 Web 应用的性能。并且,由于网络延时的存在,页面与页面之间的切换很可能会不流畅,从而进一步影响用户体验。

SPA 能够缓解传统的 Web 应用存在的问题。有关 SPA 的详细介绍可以访问 参考资源 以获得更多的信息。SPA 规定在一个页面的生命周期中不会有页面的重新加载,所有的用户交互和页面内容变换将限制在同一个 Web 页面中。换言之,SPA 用 Web 页面的局部变更来代替整个页面的重新加载,从而提高了用户体验和整体性能。

目前 SPA 已经有了较为广泛的应用,如 Google Docs、Gmail 等都是单页 Web 应用。

但是,相比于传统的 Web 应用,SPA 也存在着以下问题。

SPA 中动态变化的内容可能不会被搜索引擎找到。如果你的 Web 页面的内容希望被搜索引擎找到,那就不应该选择 SPA。 需要特殊处理才能实现浏览器的“后退”和“前进”功能。 SPA 需要在一个 Web 页面周期中加载所有需要的 HTML、CSS 等资源。这样有可能造成初次加载时间较长。本文将在“在创建适用于单页 Web 应用的 UI 布局”中介绍缓解该问题的方法。

Dojo 框架:Dojo 是一个强大的前端框架,它提供了方便的 Ajax 方法、丰富的小部件、数据结构、辅助函数、效果和布局帮助。有关 Dojo 的详细介绍请参考 Dojo 技术专题。Dojo 是一个较为活跃的开源项目,截止到 2012 年 8 月,Dojo 的最新版本是 1.8.0。本文中的所有实现将基于 Dojo 1.6.0。

综上所述,本文将分别从 Application controller 和 UI layout 的角度,详细介绍一种利用 Dojo 实现 SPA 的方法。

加载 Dojo,搭建开发环境

加载 Dojo

选择从 Google CDN 上加载完整的 Dojo Toolkit。由于部分文件在本地,所以需要借助 dojoConfig 中的 baseUrl和 modulePaths来注册本地文件。在代码清单 1 中注册了一个本地模块“app”,这样在 Web 页面的地址下的 app 路径中的所有文件都可以被 Dojo 文件系统找到。

清单 1. 加载 Dojo Toolkit

<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.xd.js" data-dojo-config="parseOnLoad: true, baseUrl: './', modulePaths: { app: 'app' }"></script>

准备开发环境和调试工具

下载并安装 Firefox 浏览器,并安装 Firebug 插件。

创建一个 Application controller

Application controller 的作用

作为一个模块化的控件库,大部分的 Dojo 的模块都是相对独立存在的。基于 Dojo 构造一个 Web 应用时,需要一个框架将这些模块(数据、UI 布局等)组装起来。Application controller 所起的作用主要是连接各个模块。同时,对于 SPA,在其生命周期内只会进行页面的局部更新,Application controller 还要肩负着记录各个模块状态和各个模块数据交互的任务。在实际应用中,Application controller 就是一个 JavaScript 对象,所有与 SPA 相关的内容,如数据、UI 布局、行为控制等都存放在这个对象中。

创建 Application controller 的一种方式

由于 Application controller 是一个 JavaScript 对象,因此创建的方式有多种。清单 2 利用 Dojo 的 module 机制创建一个对象作为 Application controller,这样能更好的将 JavaScript 和 HTML 分离。本文将在函数 startup 中完成对 SPA 的 UI 布局的初始化,下一节将详细介绍,这里先打印信息到 Firebug 的 Console 面板上。

清单 2. 创建一个空的 Application controller

// 向 Dojo 的文件系统注册一个模块“app.Application” dojo.provide("app.Application"); dojo.declare("app.Application", [], { startup: function() { console.log("SPA starts up."); } });

由于在“加载 Dojo,搭建开发环境”中已经将 app 注册在 Dojo 的文件系统中。因此只要再调用 dojo.require 即可进行 Application controller 的实例化。清单 3 演示了如何利用 Application controller 初始化 SPA。

清单 3. 用 Application controller 初始化整个页面

<script> // 从 Dojo 的文件系统获取模块“app.Application” dojo.require("app.Application"); dojo.ready(function() { (new app.Application()).startup(); }); </script>

开发人员可以向 Application controller 添加方法来实现单页应用所需要的功能。如,可以添加 refresh 方法实现内容的更新。您可以在随本文提供的示例代码中看到 refresh 方法的声明及使用。

时间: 2024-08-30 06:09:55

介绍一种Dojo中单页Web应用的实现方式的相关文章

8 种提升 ASP.NET Web API 性能的方法

ASP.NET Web API 是非常棒的技术.编写 Web API 十分容易,以致于很多开发者没有在应用程序结构设计上花时间来获得很好的执行性能. 在本文中,我将介绍8项提高 ASP.NET Web API 性能的技术. 1) 使用最快的 JSON 序列化工具 JSON 的序列化对整个 ASP.NET Web API 的性能有着关键性的影响. 在我的一个项目里,我从 JSON.NET 序列化工具转到了 ServiceStack.Text 有一年半了. 我测量过,Web API 的性能提升了20

单页Web设计优秀案例

  单页网站设计正快速成为Web应用开发标准,单页网站是指只有一个页面的网站,这种形式的网站曾经非常流行,但并不是每个网站都适合做成单页.很多开发者的作品集网站会设计成单页网站,在内容很少而需要追求创意的时候,单页网站是很好的选择.单页Web设计网页因其超强的视觉效果.独特的外观备受用户关注.单页Web设计同样适用于移动版网页,拜移动大潮所赐,越来越多用户倾向于用手机观看网页. 单页面应用是指用户通过浏览器加载独立的HTML页面并且无需离开此导航页面,这也是其独特的优势所在.对用户操作来说,一旦

《单页Web应用:JavaScript从前端到后端》——第1章 第一个单页应用 1.1 定义、一些历史和一些关注点

第1章 第一个单页应用 单页Web应用:JavaScript从前端到后端 本章涵盖的内容 定义单页应用 比较最流行的单页应用平台:Java.Flash和JavaScript 编写第一个JavaScript单页应用 使用Chrome开发者工具查看单页应用 探讨单页应用对用户的好处 本书是为Web开发人员.架构师和产品经理而编写的,他们至少要有些JavaScript.HTML和CSS的经验.如果你从来没有涉猎过Web开发,本书就不适合你,但不管怎样还是欢迎购买.有很多非常不错的教初学者开发和设计网站

8种提升ASP.NET Web API性能的方法

http://www.aliyun.com/zixun/aggregation/14156.html">ASP.NET Web API 是非常棒的技术.编写 Web API 十分容易,以致于很多开发者没有在应用程序结构设计上花时间来获得很好的执行性能. 在本文中,我将介绍8项提高 ASP.NET Web API 性能的技术. 1) 使用最快的 JSON 序列化工具 JSON 的序列化对整个 ASP.NET Web API 的性能有着关键性的影响. 在我的一个项目里,我从 JSON.NET

8 种提升 ASP.NET Web API 性能的方法 【已翻译100%】

ASP.NET Web API 是非常棒的技术.编写 Web API 十分容易,以致于很多开发者没有在应用程序结构设计上花时间来获得很好的执行性能. 在本文中,我将介绍8项提高 ASP.NET Web API 性能的技术. 1) 使用最快的 JSON 序列化工具 JSON 的序列化对整个 ASP.NET Web API 的性能有着关键性的影响. 在我的一个项目里,我从 JSON.NET 序列化工具转到了 ServiceStack.Text 有一年半了. 我测量过,Web API 的性能提升了20

给大家介绍两种调试程序的方法,希望版主帖到精华区里!!!!!!

程序|精华 大家在调试一个程序时,有时候可能这个程序很长,多到成百上千行的代码,如果你的程序写的又零乱不堪,到了这种时候通常都不知道自己写了些什么,有些人还比较懒,像我,连个注释都不写,但是我从来没有被我的程序搞晕过,一般来说,不管你的程序是不是面向对像的开发模式,在局部的程序代码里,你的程序还是结构式的,如果你没有把一个模块分成几个小模块去做,而是几百行甚至上千行的代码全在一个模块里,那么一但出了问题,你恐怕哭都来不及,你不得不整天整天的找bug,就算你的程序运行上没有问题,而在设计上却有漏洞

介绍两种调试程序的方法

程序 大家在调试一个程序时,有时候可能这个程序很长,多到成百上千行的代码,如果你的程序写的又零乱不堪,到了这种时候通常都不知道自己写了些什么,有些人还比较懒,像我,连个注释都不写,但是我从来没有被我的程序搞晕过,一般来说,不管你的程序是不是面向对像的开发模式,在局部的程序代码里,你的程序还是结构式的,如果你没有把一个模块分成几个小模块去做,而是几百行甚至上千行的代码全在一个模块里,那么一但出了问题,你恐怕哭都来不及,你不得不整天整天的找bug,就算你的程序运行上没有问题,而在设计上却有漏洞什么的

介绍一种效率极高的分类算法

算法 在网站建设中,分类算法的应用非常的普遍.在设计一个电子商店时,要涉及到商品分类:在设计发布系统时,要涉及到栏目或者频道分类:在设计软件下载这样的程序时,要涉及到软件的分类:如此等等.可以说,分类是一个很普遍的问题. 我常常面试一些程序员,而且我几乎毫无例外地要问他们一些关于分类算法的问题.下面的举几个我常常询问的问题.你认为你可以很轻松地回答么^_^.1. 分类算法常常表现为树的表示和遍历问题.那么,请问:如果用数据库中的一个Table来表达树型分类,应该有几个字段?2. 如何快速地从这个

介绍几种常见的垃圾代码

摘要: 网站的优化分为站内优化和站外优化,其中站内优化中又有许多方面的内容,代码的优化正是这其中一项主要内容.下面为大家介绍几种常见的垃圾代码,希望对大家有所帮助. 清理垃 网站的优化分为站内优化和站外优化,其中站内优化中又有许多方面的内容,代码的优化正是这其中一项主要内容.下面为大家介绍几种常见的垃圾代码,希望对大家有所帮助. 清理垃圾代码是达到站内优化目的的一项重要环节.究竟什么才是垃圾代码呢?垃圾代码就是由编程软件或编程员的不良习惯所造成的多余代码.简单的来说,垃圾代码的删除对页面是没有任