我一直在阅读O'Reilly的书“Dojo - The Definitive Guid”,但有些事情对我来说仍然没有确定性。
他们谈论“引导”并从AOL CDN获取dojo.css“。
当我在我的机器上测试时,我应该使用CDN吗?或者我应该等待并在我部署时使用它?
其次,本书讨论了dojo的CDN,但不是dijit。
我正在开发Google App Engine(GAE) - 因此在我的Javascript目录中使用2000+ Dojo / Dijit文件有点烦人,因为它每次都会减慢我上传到GAE的速度。
Firebug给了我这个错误: 找不到http://localhost:8080/dijit/nls/dijit-all_en-us.js 404 GET http://localhost:8080/dijit/_editor/plugins/FontChoice.js 404未找到
我从这里下载了样本: http://archive.dojotoolkit.org/nightly/dojotoolkit/dijit/themes/themeTester.html?theme=soria 我想“简单地”让它在我的机器上运行在本地谷歌应用引擎(这是您在上面的URL中看到的localhost:8080)。
我看到这句话可能导致上面的第二个404: dojo.require( “dijit._editor.plugins.FontChoice”);
另一个错误: 无法访问优化的闭包 preload(“en-us”)dijit-all.js(第479行) 匿名(“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文件。
答案 0 :(得分:8)
您实际上有几个选择:
您可以将CDN用于所有内容(尽管在本地使用完整源代码可以为您提供更好的错误消息)。 Google has them as well。 Dijit在这里:http://ajax.googleapis.com/ajax/libs/dojo/1.3.2/dijit/dijit.js仅供参考。在我看来,这有很多优点。 JS的用户缓存是主要的。
构建分层文件。我认为O'Reilly的书有一节关于它,但PragProg book在这方面更好IMO。关于建筑也有doc on dojocampus.org。这将减少您需要上传到GAE的文件,并加快您的应用加载速度。这实际上是我为了减少HTTP请求而做的事情。
继续做你正在做的事。 :)
关于你看到的关于en-us文件404的错误基本上是无害的。 Here's a better description
您也可能正在使用dijit.uncompressed.js和dijit-all.js重新加载dijit文件并导致过程中出现问题......但我不确定这个。
答案 1 :(得分:2)
我只想澄清一下,在使用CDN时,您需要包含的是主要的Dojo脚本。当你dojo.require()
时,其他内容会被自动拉入。
如果由于某些(技术)原因你不想使用X-Domain加载器(CDN使用这种类型的加载器),你可以进行自定义构建(在许多地方都有详细描述)。构建完成后,将仅相关文件复制到您的服务器。无需复制所有2000多个测试,演示,未使用的DojoX项目,Dijit等。
在构建过程中,您将创建一个缩小的文件(或几个图层),其中包含您使用的所有Dojo JavaScript代码。如果您使用Dojo小部件,他们的模板将已经内联,因此您不会对它们进行点击。作为构建的一部分,CSS文件也被组合在一起并缩小。因此,在大多数情况下,您只需要两个文件:一个Dojo图层,其中包含所有内容+您的自定义代码以及一个CSS文件。在更复杂的情况下,您可能有更多文件,但通常我们谈论的是少数。
如何确保所有内容都在构建中?启动您最喜爱的网络分析器(Live HTTP Headers,Firebug,Fiddler2或Charles Proxy会很好),看看你是否点击了构建之外的任何文件。如果你这样做 - 在构建中包含它们,或者试图找出它们被请求的原因,并消除这些请求(一些与本地化相关的调用很好)。
就我个人而言,我会从CDN选项开始 - 运作良好,没有麻烦,由其他人用胖管托管。
答案 2 :(得分:0)
要解决您的第一个问题,请在本地使用完整源代码进行开发,以便您可以获得更清晰的调试信息,这些信息指向源中的清晰行,而不是缩小版本减少到的单行。使用CDN进行生产。