Tengo un problema al implementar una creación personalizada de dominio cruzado en Dojo. La situación es la siguiente: tengo una bonita aplicación de gran tamaño, con un buen número de paquetes de localización, por lo que, básicamente, las estructuras de directorios es como
núcleo \ (mi módulo)
nls \
fr \
es \
....
Al construir mi módulo, el resultado es un gran archivo core.js/core.xd.js, que, bien sur, no contiene las localizaciones. En los directorios nls de localización (en/fr/etc) encuentro después de la compilación cada paquete incorporado/minificado, y un archivo más grande para cada idioma, core_fr.js/core_en.fs, que contiene solo cadenas relacionadas con Dojo/Dijit.Creación personalizada de Dojo con NLS/localización
así que mi escritura de la estructura es
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"]
]
En la clase core.controller.Fusebox intento cargar 1 NLS
dojo["requireLocalization"]("core", "FuseboxContent");
aquí que va a morir, sin embargo, con
availableFlatLocales is undefined
[Break on this error] var locales = availableFlatLocales.split(",");\r\n
Mi configuración en el archivo html es:
// version build
var djConfig = {
baseUrl: 'https://..../',
modulePaths: { 'core': 'core'},
useXDomain: true,
xdWaitSeconds: 10,
parseOnLoad: true,
afterOnLoad: true,
// debugAtAllCosts: true,
isDebug: true,
locale: "fr"
};
y luego
<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>
he utilizado la sin comprimir para depurar, por supuesto. El problema es que, en tiempo de ejecución, Dojo intenta cargar mis paquetes y no puede encontrarlos, y me gustaría incrustarlos en mi archivo de capa, por lo que no se requerirán cargas adicionales. ¿Se puede lograr esto? Y mientras estamos en ello, ¿hay sitios/ejemplos que funcionen con ubicaciones de dominios cruzados? ACTUALIZACIÓN: continué mi análisis y el problema parece residir en el hecho de que estoy cargando nls dinámicamente, por lo que el analizador de compilación no puede encontrar las llamadas a requireLocalization(). Por lo tanto, el archivo nls del proyecto contiene solo contenido relacionado con dojo/dijit. Sin embargo, agregué algunas cargas agrupadas en un archivo ficticio, y el constructor todavía ignora el contenido de core/nls.
Gracias por cualquier información, estoy casi al final de mis búsquedas, no hay mucho en la red sobre este tema.
No soy un experto en xd issues, pero tenía curiosidad por ver las entradas nls en modulePaths. No deberían ser necesarios. ¿Los estás usando y hay alguna diferencia si los eliminas? – peller
Los eliminé, sin cambios, las localizaciones aún no están cargadas. Creo que estaban allí por alguna razón heredada ... pero tenías razón, eres útil. Actualicé la publicación en consecuencia. – aciobanu