La identificación del módulo Github SeAJS ha sido relativamente clara. Pero no está cubierto en todo, especialmente cuando necesita ser escrito a mano [ID del módulo] y [dependencia del módulo], o cuando escribe su propia herramienta de automatización para transportar (PS: SPM parece no ser muy adaptable y no es fácil de Use, después de todo, cada estructura del directorio del proyecto puede variar mucho y no es fácil de cambiar. y las reglas de análisis de identificación deben ser completamente entendidas.
Notas:
1. El identificador de nivel superior siempre se analiza en relación con la ruta básica base.
2. La ruta absoluta y la ruta de la raíz siempre se analizan en relación con la página actual.
3. Las rutas relativas en requerir y requerir. Async se analizan en relación con la ruta del módulo actual.
4. El camino relativo en el mars.use siempre se analiza en relación con la página actual.
En SEAJS, la ID del módulo se puede dividir aproximadamente en tres tipos: [identificador relativo], [identificador de nivel superior] y [ruta normal].
Las rutas ordinarias incluyen "ruta absoluta", "ruta raíz", etc.
Aquí nos centramos en [logotipo relativo] y [logotipo superior].
Los identificadores relativos se refieren a "./", "../", como: "./othermodule", "../lib/base".
Identificadores de nivel superior Consulte archivos o directorios (pueden contener: letras, -, _), como: "app/widget/select"
Hay tres lugares donde se requiere ID del módulo:
La copia del código es la siguiente: Define ("id (1)", ["../ id2 (2)"], función (requerir, exportar, módulo) {
var modulea = request ('./ modulea (3)');
})
Nota: Si es el primer parámetro [ID del módulo] o el segundo parámetro [ID del módulo] o el [ID de módulo confiable], el estándar de comparación final es [URI de archivo analizado].
Por lo tanto, estos tres lugares donde los ID deben escribirse pueden escribirse de cualquier manera, y siempre que finalmente sean analizados en el mismo URI, se consideran el mismo módulo.
Durante el proceso de análisis de la identificación, se procesará de antemano por alias y caminos definidos en SEAJS.Config.
Reglas de resolución de ruta base
(Capa 1, la ruta en sí no depende de ninguna configuración)
1. [La identificación de nivel superior] no se puede utilizar, porque la identificación de nivel superior se analiza en relación con la ruta básica de la base, por lo que la base en sí solo puede usar [identificación relativa] o [ruta raíz], etc.
2. La ruta predeterminada de la base es el directorio SEAJS.
3. [Identificación relativa]: analice en relación con la página actual.
Reglas de resolución de ruta en los caminos
(Capa 1, la ruta en sí no depende de ninguna configuración)
1. [Identificación relativa]: dónde se citará, la ubicación analítica relativa depende del lugar citado y sigue las reglas locales.
2. Los campos en las rutas se reemplazarán en forma de variables donde se usan y luego se analizan.
Por ejemplo:
Copie el código de la siguiente manera: // bloque de código (1)
// Definición de ruta:
Seajs.config ({
Base: "./ App/src",
camino:{
"A": "../ lib", // (1) ruta relativa
"lib": "ruta/a/lib", // (2) logotipo de nivel superior
"L2": "/lib" // (3) ruta raíz
}
});
// módulo mod/m/m.js:
...
requiere ("a/jQuery");
// => Convertir a: "../../lib/jquery"
// => Carga: mod/lib/jQuery (nota especial 1)
...
// módulo mod/f.js:
...
requiere ("a/jQuery");
// => Convertir a: "../../lib/jquery"
// => Carga: lib/jQuery (nota especial 2)
...
Reglas de resolución de ruta en alias
(En la capa 2, la ruta en sí puede depender de la configuración de las rutas)
1. Las reglas del alias son similares a las rutas, y la ruta de alias también puede usar "variables" en las rutas
2. Recordatorio: intente usar [identificación de nivel superior], [ruta de raíz] y [ruta absoluta] en rutas y alias, y no use [identificación relativa], porque los módulos de diferentes profundidades se analizarán en diferentes rutas.
3. [Identificación relativa]: dónde se citará, la ubicación analítica relativa depende del lugar citado y sigue las reglas locales.
Sejs.use reglas de resolución del camino
[Identificación relativa]: Analice en relación con la página actual.
Definir las reglas de análisis de ID del módulo (1)
(En la capa 3, la ruta se puede configurar en relación con alias o rutas)
Puede usar: [identificación relativa], [identificación de nivel superior], [ruta raíz]
Se recomienda usar [identificación de nivel superior].
【Identificación relativa】: Análisis relativo a la página actual
Copie el código de la siguiente manera: // bloque de código (2)
// config: también use la configuración en [bloque de código (1)]
// Módulo 1, sin ambigüedad, análisis de ruta de raíz
Define ("/App/Src/Module/Base", ..);
// Módulo 2, identificación inequívoca, de nivel superior, analizado en relación con la ruta básica de la base
Define ("APP/SRC/MODULE/BASE", ..);
// Módulo 3, con ambigüedad e identificación relativa, aquí en relación con la página actual (consulte la página HTML de este módulo)
// Pero incluso si [superficialmente se usa la misma "ID"] en otro lugar, se pueden analizar diferentes módulos
Define ("./ App/src/módulo/base", ..);
Reglas de resolución de identificación de dependencia del módulo (2)
(En la capa 3, la ruta se puede configurar en relación con alias o rutas)
【Identificación relativa】: Análisis de ruta básica de la base relativa
Copie el código de la siguiente manera: // bloque de código (3)
// config: también use la configuración en [bloque de código (1)]
// sin ambigüedad, en relación con la resolución de la ruta de la raíz
Define ("..", ["/app/src/módulo/base"], ..)
// sin ambigüedad, identificación de nivel superior, en relación con el análisis de ruta básica base
Define ("..", ["APP/SRC/MODULE/BASE"], ..)
// Hay ambigüedad, en relación con el módulo actual.
// La dependencia aquí parece depender de `módulo 3` en [bloque de código (2)]
// Pero si el módulo actual y la página actual no están en el mismo directorio de nivel, no se analizará en `Módulo 3`
Define ("..", ["./app/src/module/base"], ..)
Requerir reglas de resolución de identificación para otros módulos dentro del módulo (3)
(En la capa 3, la ruta se puede configurar en relación con alias o rutas)
【Identificación relativa】: Análisis de ruta básica de la base relativa
Copie el código de la siguiente manera: // bloque de código (4)
// config: también use la configuración en [bloque de código (1)]
Define ("..", [..], función (requerir) {
// sin ambigüedad, en relación con la resolución de la ruta de la raíz
requerir ("/app/src/módulo/base");
});
Define ("..", [..], función (requerir) {
// sin ambigüedad, identificación de nivel superior, en relación con el análisis de ruta básica base
requerir ("APP/SRC/MODULE/BASE");
});
Define ("..", [..], función (requerir) {
// Hay ambigüedad, en relación con el módulo actual.
// La dependencia aquí parece depender de `módulo 3` en [bloque de código (2)]
// Pero si el módulo actual y la página actual no están en el mismo directorio de nivel, no se analizará en `Módulo 3`
requerir ("./ App/src/módulo/base");
})
Recordatorio especial: hay tres lugares en el módulo donde los ID deben escribirse, y no es necesario usar la misma cadena, siempre que se analice en el mismo módulo.
Resumir:
1. La configuración de rutas y alias es solo equivalente a una variable.
2. Use [logotipo de nivel superior] tanto como sea posible.
3. Si no puede usar el [identificador de nivel superior], como el tramo del directorio es relativamente grande, intente establecer alias o rutas para localizarlo en un directorio a través de un identificador de [ruta no relativa], y luego defina la ID debajo de este identificador.