Как локально протестировать междоменные сборки?

Используя инструментарий dojo, как правильно локально тестировать код, который будет выполняться как междоменный, без фактической сборки?

Как оказалось, есть три возможных варианта (каждый со своими недостатками):

  1. Использование локального (не xd) XMLHttpRequest dojo.require
    • Эта опция на самом деле не проверяет поведение xd, так как она синхронно через XHR выполняет doj.require [s] js.
  2. djConfig.debugAtAllCosts = true;
    • Хотя эта опция загружает требуемый код асинхронно (через тег 'script'), она также извлекает код через XHR, анализирует внутри него dojo.require[s] и извлекает их. Это (используя loader_debug), опять же, это не то, что делает loader_xd. Больше информации по этой теме в другом вопросе.
  3. Создание междоменной сборки
    • Этот подход требует сборки, что невозможно в среде, в которой я запускаю код (мы используем наш собственный процесс сборки на лету, который включает только js, необходимый для конкретной страницы. процесс не подходит для разработки).

Таким образом, мой вопрос: есть ли способ использовать loader_xd, который не требует сборки xd (которая добавляет префикс / суффикс xd к каждому файлу)?

Второй способ (с использованием debugAtAllCosts) также заставляет меня усомниться в мотивации предварительного анализа dojo.require[s]. Если loader_xd не будет (или, скорее, не сможет) предварительно анализировать, почему метод, созданный для тестирования / отладки, делает это?

2 ответа

Решение

Я не думаю, что есть способ загрузить XD без сборки и развертывания. Ваш анализ различных вариантов кажется правильным.

Функция debugAtAllCosts предназначена специально для решения проблемы отладки, когда большинство браузеров до недавнего времени не могли ничего сделать с кодом, введенным через eval. Еще сегодня Firefox будет сообщать об исключении в консоли как о появлении на сайте eval (bootstrap.js) со смещением номера строки относительно eval, а не из фактического буфера eval, и обычно этот eval-буфер является анонимным. Firebug был первым отладчиком, который перепрыгнул через некоторые обручи, чтобы улучшить опыт отладки, и позволил специальным метаданным, которые загрузчик Dojo вставляет между XHR и eval, чтобы определить путь к файлу источника. Webkit/Safari недавно также реализовали это. Я полагаю, что debugAtAllCosts предшествует загрузчику XD.

Пеллер описал ситуацию. Если вы хотите просто сгенерировать файл.xd.js для своих модулей, вы можете посмотреть на util/buildscripts/jslib/buildUtilXd.js и его функцию buildUtilXd.xdgen().

Чтобы создать собственный сценарий, потребуется немного усилий, но вы можете посмотреть на util / buildscripts / build.js для указателей.

Я надеюсь, что в будущем для Dojo (возможно, с периодом Dojo 2.x) мы сможем переключиться на загрузчик, который просто использует теги сценария с форматом модуля, который имеет функциональную оболочку вокруг модуля, что-то, что кодируется разработчиком. Это позволило бы одному и тому же формату модуля работать в локальном и xd случаях.

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