Dojo vs Dijit - файлы для включения или ссылки?

Я читал книгу О'Рейли «Додзё - окончательное руководство», но кое-что еще не окончательно для меня.

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

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

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

Я разрабатываю на Google App Engine (GAE), поэтому наличие более 2000 файлов Dojo / Dijit в моем каталоге Javascript немного раздражает, потому что каждый раз это замедляет мою загрузку в 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, и я хотел бы «просто» запустить его на моем компьютере под локальным движком приложения Google (который является локальным хостом). : 8080, который вы видите в URL-адресах выше).

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

Еще одна ошибка: невозможно получить доступ к оптимизированной предварительной загрузке закрытия («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, скопировав dijit.js.uncompressed.js и переименовав его в dijit.js.


person NealWalters    schedule 27.08.2009    source источник


Ответы (3)


На самом деле у вас есть несколько вариантов:

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

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

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

Что касается ошибок, которые вы видите около 404 для файлов en-us, по сути, безвредны. Вот лучшее описание.

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

person seth    schedule 27.08.2009

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

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

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

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

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

person Eugene Lazutkin    schedule 28.08.2009

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

person aehlke    schedule 27.08.2009