Как использовать пользовательскую сборку из dojo по протоколу file:/// (Cordova/Phonegap)

Я разрабатываю веб-приложение с использованием фреймворка Dojo. Это приложение должно быть загружено браузером с использованием протокола file:/// (оно станет приложением Cordova/Phonegap для Android/iPad). Файл index.html выглядит так:

Главный раздел:

<script type="text/javascript">
    var dojoConfig =  {
        parseOnLoad: true
    }
</script>

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

<script type="text/javascript">
  dojo.require("dojox.mobile.parser");
  dojo.require("dojox.mobile");
</script>

Секция кузова:

<script type="text/javascript">
    dojo.require("dojox.mobile.parser");
    dojo.require("dojox.mobile");
</script>

Он был взят из урока IBM ( Разработка мобильных приложений, часть 1: PhoneGap и Dojo Mobile на Android)

Итак, есть две проблемы:

1) dojo пытается загрузить модули, но не смог сделать это, используя протокол file:///. Требуется протокол HTTP.

2) В index.html я использую пользовательскую сборку dojo, созданную веб-разработчиком. Эта сборка состоит из одного файла, который содержит нужные мне модули. Однако эти модули должны быть обязательными, что заставляет инфраструктуру пытаться загрузить их из несуществующих файлов, хотя они уже были загружены в большой пользовательский файл dojo.js.

Может быть, кто-то знает, как решить эти две проблемы.

2 ответа

В каком браузере вы тестируете свой код? Chrome не допускает использование нескольких доменов в одном HTML-файле из-за проблем безопасности. Попробуйте свой код в браузере Firefox, он должен выдать предупреждение и запустить код. Также убедитесь, что файл index.html находится в родительском каталоге источника dojo (библиотека dojo). т.е.

ваша структура каталогов должна быть такой, как показано ниже
| - [dojo_source / dojo_library]
|
| -Index.html.

также запустите ваш код с файловым протоколом в файле браузера://

Надеюсь это поможет.

Другой альтернативой является установка веб-сервера. Вы можете попробовать очень легкий веб-сервер "mongoose" размером всего 136 КБ. Который вы можете затем настроить для запуска кода Dojo. Я использую веб-сервер, и он отлично подходит для модульного тестирования моего кода.

Вы просто не можете использовать dojo через файловый протокол, так как движок AMD лениво загружает зависимости через XHR-запросы, которые не будут работать таким образом.

См. http://www.sitepen.com/blog/2014/07/30/dojo-faq-why-do-i-need-to-use-an-http-server-with-dojo/

Подумайте просто об использовании узла js webserver для разработки и встраивания небольшого веб-сервиса в телефонное приложение.

Вы все еще можете попытаться получить доступ к модулям через устаревший, но все еще доступный интерфейс dojo.someModule, так как модули определены в глобальном пространстве имен из-за проблем совместимости. Однако я не уверен, что это работает хорошо.

Вы также можете попробовать установить async в false в конфигурации dojo.

Другие вопросы по тегам