翻译 - 【Dojo Tutorials 】Getting Start 3 Modern Dojo

原文:Modern Dojo

你可能有段时间没有碰Dojo了,或者你想把你之前为Dojo1.6写的代码放在1.10上运行,但有不确定是否完好。你一直听到人们讲AMD与baseless,但不知道他们是什么,从何了解。这篇教程就是讲这些的。

开始

Dojo至版本1.7起有了重大转变,Dojo工具集转向了更现代的架构,Dojo1.10延续这条路。虽然向后兼容,为了利用Dojo1.10的优势,有些基本概念变了。这些概念是基于Dojo2.0的,目前已采用了这些概念,你可以确定走上了这条光明而漫长的道路。另外,为了使用高级功能(如dojo/on)你需要了解一些“现代”的概念。

在这教程中我将试图解释一些Dojo已经引入的新的概念。我将引用这些作为遗留的和现代的Dojo。我尽力去解释哪些东西改变了,以及其所以然。有些改变咋看起来也许会让人迷惑,它们都是为了让你编码更有效率,运行的更快,更好的利用JavaScript,让你的代码更好维护。我觉得还是值得花时间来理解现代Dojo的。

这篇教程不是专门讲版本迁移的,但是很多改变都知道你考虑,如果你已经熟悉Dojo的话。关于迁移的具体细节参考Dojo1到2的迁移指南

你好,新世界

现代Dojo的一个核心概念就是全局命名空间害死人。有很多原因,但是在复杂的web应用中,全局命名空间很容易就会污染代码,尤其是当团队使用多个框架的时候。没有提交的危害还有基于安全考虑人们有意去修改全局命名空间。这意味着在现代Dojo中,如果你还在使用全局命名空间,应该立即停止,因为你在做错误的事情。为了向后兼容,有些组件尤其自己的命名空间,在新的开发不要再使用它们。

如果你发现自己在输入dojo.*或dijit.*或dojox.*,那就是有问题了。

这意味着那种使用老的Dojo的方式,包含一下dojo.js,然后引入一些模块,在代码使用dojo.something的日子远去了。

再次申明,“全局命名空间害死人,全局命名空间害死人,我再也不用,我再也不用了”。

另一个核心概念是异步比同步快,在旧的Dojo中dojo.Deferred的概念就有纯正的异步血统,但是在现代Dojo中,最好每件事都想着异步操作。

为了增强Dojo的模块化和利用上面讲到的概念,自版本1.7起Dojo采纳了CommonJS的模块定义,叫做异步模块定义,简称AMD。这意味着Dojo的模块加载器要重写,通过require与define函数。你可以在加载器参考指南中查看详情。这从根本改变了代码的结构。

接下来看个新旧风格对比的例子,旧:

1 dojo.ready(function() {
2   dojo.byId("helloworld").innerHTML = "Hello World!";
3 });

现在写法:

1 require([
2   "dojo/dom",
3   "dojo/domReady!"
4 ], function(dom) {
5   dom.byId("helloworld").innerHTML = "Hello new World!";
6 });
时间: 2024-10-11 18:24:59

翻译 - 【Dojo Tutorials 】Getting Start 3 Modern Dojo的相关文章

翻译 - 【Dojo Tutorials】Getting Started with Dojo Mobile

原文:Getting Started with Dojo Mobile web上的内容更新的飞快,重心很快就转移到移动设备上来了.就像对象web上的其他问题一样,Dojo对此也有解决方案:Dojo Mobile.Dojo Mobile是一个框架,可以让你轻松的构建设备兼容的web应用.这是关于Dojo Mobile系列教程的引导文章.通过对这一系列文章的学习,我们将构建一个叫做FlickView的Dojo Mobile应用.首先,我们应该先学习为什么既如何使用Dojo Mobile. Dojo

翻译 - 【Dojo Tutorials】Creating Builds

Dojo的编译系统(build,后称编译)提供了一种编译Dojo和你的其他JavaScript代码与CSS文件的方式,让你的应用在生产环境可以高效的利用它们. “编译”Dojo或JavaScript? 如果你使用过其他编程语言,你也许会纳闷为什么我们要探讨Dojo或JavaScript的“编译”问题,因为编译通常意味着是将代码编译成机器语言.但是当我们谈论Dojo的编译时讲的是这么一个概念,将代码最小化,优化性能,代码串联与移除没用的代码. 每当你从服务器发送代码到客户端来解释执行时,如Java

翻译 - 【Dojo Tutorials】Part 5 - Build FlickrView for production

原文:Part 5 - Build FlickrView for production 在前面的几篇文章中,我们通过编写HTML, CSS和JavaScript实现了这个FlickrView移动应用.本片文章将专注于为部署更新代码,利用Dojo的构建系统让生产环境应用保持紧凑,并回顾了整个Dojo Mobile驱动的应用. Dojo Mobile与构建 为Dojo Mobile应用创建一个构建版本是很重的,因为我们想要我们的应用尽可能的小.让我们看逐步了解一下如何创建我们Dojo Mobile应

翻译 - 【Dojo Tutorials】Connecting a Store to a Tree

原文:Connecting a Store to a Tree Dojo Tree组件是一个强大的展示层级数据的工具.该教程将展示如何连接tree与store来快速有效的展示层级数据. 介绍 Dojo Tree组件为展示层级数据提供了一种综合的,熟悉的,直观的方式.它将展示与数据分离.本文将提到为驱动一个tree提供数据的多种方法. 第一个例子使用一个静态tree,其数据从一个JSON文件中获取.这可以用于通过数据提供导航.第二个例子在这个设计的基础上扩展新的强大功能,如拖拽,维护一个动态的tr

翻译 - 【Dojo Tutorials】Developing a Dojo Mobile Application: FlickrView

原文:Developing a Dojo Mobile Application: FlickrView 本系列的第一篇文章Getting Started with Dojo Mobile,详细的讲述了Dojo工具集中dojox/mobile包的基本概念与使用方法.在接下来的文章中,我们将创建一个功能齐全的Dojo Mobile web应用,叫做FlickrView.本文主要让你熟悉什么是FlickrView,我们想做什么,然后会构建这个应用的HTML与CSS布局. FlickrView是什么?

dojo 学习笔记之一 dom.byId dojo.byId registry.byId 的区别

在dojo中,除了沿用Dom结点, dojo 还自定义了一类结点用"dojoType" 进行标识. dojo 称这些结点为widget. 当检测到HTMl文档中某个标签定义了dojoType 属性之后,dojo会调用dojo包中相应的 js 及 css 文件对这个结点进行渲染. 从而这个结点元素就会相应地显示出具有dojo特色的样式及功能. 如此说来, dom.byId 跟 dojo.byId 获取到的就是普通的HTMl文档结构树中的某个结点元素,以下简称dom结点, 而 regist

翻译 - 【Dojo Tutorials】Dojo Object Store

关注分离是良好编程的基础.保持展示与数据的分离是关键.受到HTML5存储API的启发,Dojo对象存储架构为数据交互建立了统一的接口. 为什么要使用Dojo对象存储? 关注分离是有组织,可管理程序的基础,在web应用中分离点主要是指数据与用户接口(在MVC架构中用户接口通常是指试图和控制器).受到HTML5存储API的启发,Dojo对象存储架构为数据交互建立了统一的接口.这些API是为促进松耦合的开发为存在的,可以让挂件和用户接口从多种源以一致的的方式与数据交互. Dojo对象存储允许你开发和使

翻译 - 【Dojo Tutorials】Application Controller

原文:Application Controller 一个页面级别的控制器就像胶水,通过将模块化的功能黏在一起来构造一个鲜活的应用.我们将实现配置与一个明确的生命周期,通过松耦合的架构组合一个单页面应用的多个部分. 介绍 作为一个模块化的工具包,很多Dojo的文档都是在讲解单独的组件如何使用.但是当你需要组合它们来创建一个应用的时候,你需要一个框架来将它们灵活的组织起来. 问题 最佳实践建议保持关注点分离,维护组成应用的模块.所以,如何管理各个组件的加载与初始化,如何将它们与数据结合起来,用户界面

翻译 - 【Dojo Tutorials】Getting Started with dojox/app

原文:Getting Started with dojox/app 在本教程中,将会讲解如何利用dojox/app与dojox/mobile来创建一个单页面的联系人列表应用. 关于dojox/app dojox/app是构建于dojo之上,可扩展的,基于配置的应用框架.dojox/app提供了一些功能,用于帮助应用开发者快速的创建应用,增强可维护性,减少编码量.如下: 支持一份基于JSON的配置文件 一个典型的应用结构 一个应用可以利用和扩展的控制器的集合,包括布局与转换控制器等 有一个视图的概