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

StackOverflow https://stackoverflow.com/questions/1343422

  •  20-09-2019
  •  | 
  •  

Вопрос

Я читал книгу О'Рейли "Dojo - The Definitive Guid", но кое-что для меня все еще не окончательно.

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

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

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

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

Firebug выдает мне эту ошибку:ПОЛУЧИТЬ http://localhost:8080/dijit/nls/dijit-all_en-us.js 404 не найдено ПОЛУЧИТЬ http://localhost:8080/dijit/_editor/plugins/FontChoice.js 404 не найдено

Я скачал образец отсюда:http://archive.dojotoolkit.org/nightly/dojotoolkit/dijit/themes/themeTester.html?theme=soria и я хотел бы "просто" запустить его на моем компьютере под управлением локального Google app engine (это localhost: 8080, который вы видите в URL-адресах выше).

Я вижу это утверждение, которое, вероятно, вызывает второе 404 выше:додзе.требовать("dijit._editor.Плагины.Выбор шрифта");

Еще одна ошибка:не удается получить доступ к оптимизированному закрытию предварительная загрузка ("en-us") dijit-all.js (строка 479) анонимный ("dijit.nls.dijit-все", ["ROOT", "ar", "ca", еще 40...0= КОРЕНЬ 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(локаль, true, функция(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.

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top