У меня проблема с реализацией междоменной пользовательской сборки в Dojo.
Ситуация следующая: у меня довольно большое приложение с большим количеством пакетов локализации, поэтому в основном структура каталогов похожа на
ядро \ (мой модуль)
NLS \
фр \
ан \
....
При сборке моего модуля получается большой файл core.js / core.xd.js, который, bien sur, не содержит локализаций. В каталогах nls для локализации (en / fr / etc) я нахожу после сборки каждый пакет, собранный / уменьшенный, и файл большего размера для каждого языка, core_fr.js / core_en.fs, который содержит только строки, связанные с Dojo / Dijit.
так что мой скрипт сборки
layers: [
{
resourceName: "core",
name: "../core/trusted.js",
dependencies: [
"dojo.i18n",
//data
"dojox.data.JsonRestStore",
"dojox.data.XmlStore",
"dojox.rpc.Service",
"dojox.form.FileInput",
...
"core.controller.Fusebox"
],
prefixes: [
["dijit","../dijit"],
["dojox","../dojox"],
["core", "../core"]
]
В классе core.controller.Fusebox я пытаюсь загрузить 1 nls
dojo["requireLocalization"]("core", "FuseboxContent");
здесь он умрет, однако с
availableFlatLocales is undefined
[Break on this error] var locales = availableFlatLocales.split(",");\r\n
Моя конфигурация в html-файле:
// version build
var djConfig = {
baseUrl: 'https://..../',
modulePaths: { 'core': 'core'},
useXDomain: true,
xdWaitSeconds: 10,
parseOnLoad: true,
afterOnLoad: true,
// debugAtAllCosts: true,
isDebug: true,
locale: "fr"
};
, а затем
<script type="text/javascript" src="http://xd.woopic.com/dojoroot/1.3.2-xd/dojo/dojo.xd.js.uncompressed.js"></script>
<script type="text/javascript" src="https://..../core/trusted.js.uncompressed.js"></script>
Я использовал несжатый для отладки, конечно.
Проблема в том, что во время выполнения Dojo пытается загрузить мои пакеты и не может их найти, и я хотел бы встроить их в файл слоя, поэтому никаких дополнительных загрузок не потребуется.
Можно ли этого достичь? И пока мы здесь, есть ли рабочие сайты / примеры с междоменной локализацией?
ОБНОВЛЕНИЕ: я продолжил свой анализ, и проблема, похоже, заключается в том, что я динамически загружаю nls, поэтому анализатор сборки не может найти вызовы requireLocalization (). Поэтому файл проекта nls содержит только содержимое, связанное с dojo / dijit. Тем не менее, я добавил несколько загрузок пакетов в фиктивный файл, и сборщик по-прежнему игнорирует содержимое core / nls.
Спасибо за любую информацию, я почти закончил поиски, в сети не так много информации по этому вопросу.