2009-08-27 7 views
6

Я читал книгу О'Рейли «Додзе - окончательное руководство», но кое-что еще не окончательно для меня.Dojo vs Dijit - файлы для включения или ссылки?

Они говорят о «самозагрузки» и получение dojo.css от AOL CDN».

Когда я тестирую на моей машине, я должен использовать CDN? Или я должен ждать, и использовать это только тогда, когда развернуть

во-вторых, книга рассказывает о CDN для додзё, но не для Dijit

Я разрабатываю на Google App Engine (GAE) -?. поэтому иметь 2000+ Dojo/Dijit файлы в моем Javascript справочник немного раздражает, потому что каждый раз он замедляет мою загрузку в GAE.

Firebug дает мне эту ошибку: GET 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 , и я хотел бы, чтобы «просто» заставить его работать на моем машина под локальным движком Google (это локальный хост: 8080, который вы видите в приведенных выше URL-адресах).

Я вижу это утверждение, которое, вероятно, вызывает второе 404: dojo.require («dijit._editor.plugins.FontChoice»);

Еще одна ошибка: не могут получить доступ оптимизировано закрытия преднагрузку ("ан-нас") Dijit-all.js (строка 479) анонимным ("dijit.nls.dijit-все", [ "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 (локаль, правда, функция (LOC) {\ п

чтобы продолжить сейчас, я буду пытаться копировать вся библиотека 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 файл путем копирования и переименования dijit.js.uncompressed.js в dijit.js.

ответ

8

У вас есть несколько вариантов: собственно

  1. Вы можете использовать CDN для всего (хотя, используя полный источник локально действительно дает вам лучшие сообщения об ошибках). Google has them as well. Dijit находится здесь: http://ajax.googleapis.com/ajax/libs/dojo/1.3.2/dijit/dijit.js FYI. На мой взгляд, это имеет много преимуществ. Пользовательское кэширование JS является основным.

  2. Создайте многоуровневый файл. Я думаю, что в книге О'Рейли есть раздел об этом, но PragProg book лучше в этом отношении ИМО. Существует также это doc on dojocampus.org о здании. Это позволит обрезать файлы, необходимые для загрузки в GAE, и ускорить загрузку приложения. На самом деле это то, что я делаю, чтобы сократить HTTP-запросы.

  3. Продолжайте делать то, что вы делаете. :)

Что касается ошибок, которые вы видите около 404 для файлов en-us, по сути, безвредны. Here's a better description.

Вы также можете перезагружать файлы dijit с помощью dijit.uncompressed.js и dijit-all.js и вызывать проблемы в процессе ... но я не уверен в этом.

0

Чтобы решить свой первый вопрос, используйте локальную версию источника для разработки, чтобы вы могли получить более четкую информацию об отладке, которая указывает на разборчивую строку в источнике, а не на одну строку, с которой уменьшена сокращенная версия. Используйте CDN для производства.

2

Я просто хочу пояснить, что при использовании CDN все, что вам нужно включить, это основной сценарий Dojo. Остальные будут автоматически втянуты, если вы их dojo.require().

Если по каким-либо (техническим) причинам вы не хотите использовать загрузчик X-Domain (CDN используют этот тип загрузчика), вы можете выполнить пользовательскую сборку (хорошо описанную во многих местах). После сборки вы копируете только соответствующие файлы на свой сервер. Не нужно копировать все 2000+ тестов, демонстраций, неиспользуемых проектов DojoX, Dijits и т. Д.

Во время сборки вы создадите один миниатюрный файл (или несколько слоев), который будет содержать все используемые вами JavaScript-код Dojo. Если вы используете виджеты Dojo, их шаблоны будут уже встроены, поэтому вы не получите хитов для них. Как часть сборки CSS-файлы объединяются вместе и минимизируются. Таким образом, буквально в большинстве случаев у вас будет только два файла: слой Dojo, который включает в себя все + ваш пользовательский код и файл CSS. В более сложных случаях у вас может быть больше файлов, но обычно мы говорим о горстке.

Как убедиться, что все в сборке? Запустите свой любимый сетевой анализатор (Live HTTP Headers, Firebug, Fiddler2 или Charles Proxy будет делать все) и посмотрите, попали ли вы в какие-либо файлы за пределами вашей сборки. Если вы делаете —, включите их в сборку или попытайтесь выяснить, почему они запрошены, и устраните эти запросы (некоторые вызовы, связанные с локализацией, прекрасны).

Лично я бы начал с варианта CDN — работает хорошо, без хлопот, размещен кем-то еще с жирными трубами.