6

我一直在阅读 O'Reilly 的书“Dojo - The Definitive Guid”,但有些东西对我来说仍然不确定。

他们谈论“引导”和从 AOL CDN 获取 dojo.css”。

当我在我的机器上测试时,我应该使用 CDN 吗?还是我应该等待并仅在部署时使用它?

其次,这本书谈到了 Dojo 的 CDN,而不是 dijit。

我在 Google App Engine (GAE) 上进行开发 - 所以在我的 Javascript 目录中拥有 2000 多个 Dojo/Dijit 文件有点烦人,因为它每次都会减慢我上传到 GAE 的速度。

Firebug 给我这个错误: GET http://localhost:8080/dijit/nls/dijit-all_en-us.js 404 not Found GET http://localhost:8080/dijit/_editor/plugins/FontChoice.js 404 not成立

我从这里下载了示例:http: //archive.dojotoolkit.org/nightly/dojotoolkit/dijit/themes/themeTester.html?theme =soria 我想“简单地”让它在我的机器上运行在本地google 应用程序引擎(即您在上面的 URL 中看到的 localhost:8080)。

我看到这个语句可能导致上面的第二个 404:dojo.require("dijit._editor.plugins.FontChoice");

另一个错误:无法访问优化的闭包 preload("en-us") dijit-all.js(第 479 行)anonymous("dijit.nls.dijit-all", ["ROOT", "ar", "ca",还有 40 个... 0=ROOT 1=ar 2=ca 3=cs 4=da 5=de 6=de-de 7=el 8=en 9=en-gb])dijit-all.js(第 489 行) dijit-all.js() dojo.i18n._searchLocalePath(locale, true, function(loc){\n

现在继续,我将尝试复制整个 dijit 库,但有没有解决方案?

我当前的脚本包括如下所示:

<script type="text/javascript" src="/javascript/dijit.js"></script>

<script type="text/javascript" src="/javascript/dijit-all.js" charset="utf-8"></script>

我通过复制 dijit.js.uncompressed.js 并将其重命名为 dijit.js 获得了 dijit.js 文件。

4

3 回答 3

8

实际上,您有几个选择:

  1. 您可以将 CDN 用于所有内容(尽管在本地使用完整源代码确实会为您提供更好的错误消息)。 谷歌也有它们。Dijit 在这里:http : //ajax.googleapis.com/ajax/libs/dojo/1.3.2/dijit/dijit.js 仅供参考。在我看来,这有很多好处。JS的用户缓存是主要的。

  2. 构建分层文件。我认为 O'Reilly 的书有一个关于它的部分,但PragProg 的书在这方面 IMO 更好。dojocampus.org上也有这个关于建筑的文档。这将减少您需要上传到 GAE 的文件并加快您的应用程序加载速度。这实际上是我为了减少 HTTP 请求所做的。

  3. 继续做你正在做的事情。:)

关于您看到的有关 en-us 文件的 404 错误,基本上是无害的。 这是一个更好的描述

您也可能正在使用 dijit.uncompressed.js 和 dijit-all.js 重新加载 dijit 文件,并在此过程中导致问题......但我不确定这个。

于 2009-08-27T20:04:30.993 回答
2

我只是想澄清一下,在使用 CDN 时,您需要包含的只是主要的 Dojo 脚本。dojo.require()其余的将在您使用它们时自动拉入。

如果出于某些(技术)原因您不想使用 X-Domain 加载器(CDN 使用这种类型的加载器),您可以进行自定义构建(在许多地方都有很好的描述)。在构建之后,您只将相关文件复制到您的服务器。无需复制所有 2000 多个测试、演示、未使用的 DojoX 项目、Dijits 等。

在构建期间,您将创建一个缩小的文件(或几层),其中将包含您使用的所有 Dojo JavaScript 代码。如果您使用 Dojo 小部件,它们的模板将已经内联,因此您不会对它们产生点击。作为构建的一部分,CSS 文件也被组合在一起并被缩小。所以从字面上看,在大多数情况下,您将只有两个文件:一个 Dojo 层,其中包括所有内容 + 您的自定义代码,以及一个 CSS 文件。在更复杂的情况下,您可能有更多文件,但通常我们谈论的是少数。

如何确保一切都在构建中?启动你最喜欢的网络分析器(Live HTTP Headers、Firebug、Fiddler2 或 Charles Proxy 就可以了),看看你是否点击了构建之外的任何文件。如果你这样做了——将它们包含在构建中,或者尝试找出它们被请求的原因,并消除这些请求(一些与本地化相关的调用很好)。

就我个人而言,我会从 CDN 选项开始——效果很好,没有麻烦,由其他有胖管道的人托管。

于 2009-08-28T02:50:45.080 回答
0

要解决您的第一个问题,请在本地使用完整的源代码版本进行开发,以便您可以获得更清晰的调试信息,这些信息指向源代码中清晰的行,而不是缩小版本缩减为的单行。使用 CDN 进行生产。

于 2009-08-27T19:53:15.040 回答