【问题标题】:Essential Dojo基本道场
【发布时间】:2009-06-12 18:53:07
【问题描述】:

我开始使用 Dojo;这(基本上)是我对 AJAX 的介绍。我们有一个 Java 后端(扭矩/涡轮/速度),并使用jabsorb JSON-RPC 库来连接 Java 和 Javascript。

我需要知道什么? Dojo 和 JSON 的大局是什么,哪些令人讨厌的小细节会吸引我?当您开始使用 Dojo 时,您花了几天的时间来追踪您现在认为理所当然的事情?感谢您提供任何和所有提示。

【问题讨论】:

  • 如果你刚开始使用 AJAX,并且没有 DOJO 的需求,你可能想切换到 jQuery。它有一个非常简单的 API 和非常小的学习曲线。
  • 谢谢,jconlin,但我没有选择。
  • 我发现很多团体在后端使用 Java,例如前端使用 Dojo。不知道为什么。 Dojo 确实有更陡峭的曲线,但它添加了许多类似 jQuery 的语法。我喜欢 pubsub 的东西。
  • 不知道当时是什么样的,但现在 Dojo AJAX 很不错:dojotoolkit.org/documentation/tutorials/1.6/ajax

标签: json dojo


【解决方案1】:

首先要做的是熟悉 Dojo 对象模型。 JavaScript 没有类系统,因此 Dojo 工具包创建了一种“按惯例”对象模型,该模型运行良好,但与 Java 中的运行方式非常不同。

我建议熟悉它的原因是,您可以在遇到问题时深入研究代码库。可用的文档在过去一年中得到了显着改进,但时不时地我发现自己必须通过准确了解所涉及的 Dojo 代码的工作方式来解决代码中的错误。

另一个技巧是利用自定义构建功能,一旦您的应用程序准备就绪,它将显着提高性能。

作为 DHTML 编程的一般技巧,请使用 firebug(Firefox 的插件)。它允许 JavaScript 调试、DOM 检查、实时 HTML 编辑等等。当我在 DHTML 中工作时,我现在已经完全依赖它了!

祝你好运!

【讨论】:

  • Donal:是否有特定于 Dojo 的“Dojo 对象模型”,或者它是 DOM - 文档对象模型 - 还是我遗漏了什么?谢谢。
  • 它是特定于 Dojo 的,用他们自己的话来说,是“模拟”类系统的功能。你可以在这里阅读更多关于它的信息dojotoolkit.org/book/dojo-book-0-9/…
  • 没有大写的“Dojo 对象模型”之类的东西。 Dojo 采用伪经典的面向对象的方法,即可以编写类。不要误会它。
【解决方案2】:

我也只是一头扎进 Dojo,他们在 http://api.dojotoolkit.org/ 上有很好的 API 文档。甚至Dojo Campus 也有一些很好的插件示例。

如果你问我,O'Reilly 的Dojo:权威指南是市场上最好的 Dojo 书籍。

我也想从 Dojo 大师那里得到任何提示和指点。

干杯

【讨论】:

    【解决方案3】:

    确保您阅读的文档尽可能与最新版本相关,因为 Dojo 架构中发生了很多变化。

    了解如何使用 Dojo 或 Dijit 小部件的一个好方法是查看测试的源代码 - 例如,DataGrid 的文档很差,但测试显示了很多用例和配置。

    Sitepen 是 Dojo articles 的好资源。

    另外,阅读Deferred(和DeferredList)以及hitch() - Dojo 的两个极其灵活和强大的功能。 SitePen 有一篇关于揭秘Deferreds 的精彩文章。

    查看plugd,它是Dojo 扩展的集合,可以使某些事情变得更方便或为语言添加一些巧妙的功能。它由 Dojo 的核心作者之一制作,因此相当可靠。它甚至为框架带来了一些 jQuery 的细节。

    还有一些事情:看看数据存储,它们非常有用,而且是处理 Ajax 的一种更简洁的方法。 DojoX 也有很多不错的,请记住,DojoX 的范围包括文档的完善程度或组件的实验程度。了解 dojo.byId 和 dijit.byId 之间的区别,以及 HTML 属性 idjsId(同样,Sitepen 有一篇文章)。

    【讨论】:

    • 谢谢;这一切都非常有帮助。
    • 请注意,Deferreds 有利于使异步进程(如 Ajax 调用)同步运行,例如在继续下一步之前必须等待一些 ajax 调用返回。
    【解决方案4】:

    当我开始编写小部件时,有几件事引起了我的注意:

    [了解dojoAttachPoint、dojoAttachEvent、containerNode和widgitsInTemplate是做什么的][1]

    牢牢把握闭包,

    了解延期

    了解 ItemFileReadStore、ItemFileWriteStore 和一般存储

    您可以查看类似 ResultSet(某种)的存储,也可以将它们数据绑定到小部件。

    通过这些主要概念,您可以开始组合一些引人注目的应用程序。

    通常我所做的是围绕我的服务调用构建一个 JavaScript 外观,然后通过在外观中附加第一个回调将响应清理到存储中,该回调将结果转换为存储然后返回它。这使我无需将我的服务硬绑定到 Dojo 构造(因此我可以支持移动设备等),同时还以数据感知小部件期望的格式重新调整外观中的数据。

    如果你正在做 Java 服务开发,我想研究一下 JAX-RS。我开始使用 JSON-RPC,它后来变成了 JABS-ORB,但是在使用 JAX-RS 之后我更喜欢它,因为它与 JPA-EJB 和 JAXB 集成得很好。

    【讨论】:

      【解决方案5】:

      首先阅读如何在您的应用程序中配置 Dojo。尝试理解 Dojo 的基本结构,例如如果我们正在编写 dijit.form.Button 或 dijit/form/Button,这意味着 Button.js 位于 dijit/form 文件夹中。尝试理解 Dojo 的 require、define、declare 模块。这足以启动 Dojo Toolkit。

      非常重要的事实,沉迷于使用 Dojo 的您自己的示例项目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-05
        • 2021-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-01
        相关资源
        最近更新 更多