A identificação do módulo Github do SEAJS foi relativamente clara. Mas não está coberto de tudo, especialmente quando você precisa escrito à mão [ID do módulo] e [dependência do módulo], ou quando você escreve sua própria ferramenta de automação para transportar (PS: SPM parece não ser muito adaptável e não fácil de fazer Afinal, use toda a estrutura do diretório do projeto pode variar bastante e não é fácil de alterar. e as regras de análise de identificação precisam ser completamente compreendidas.
Notas:
1. O identificador de nível superior é sempre analisado em relação ao caminho básico base.
2. O caminho absoluto e o caminho raiz são sempre analisados em relação à página atual.
3. Os caminhos relativos requisitos e requisitos. AsSync são analisados em relação ao caminho atual do módulo.
4. O caminho relativo em Seajs.use é sempre analisado em relação à página atual.
Nos SEAJs, o ID do módulo pode ser dividido aproximadamente em três tipos: [identificador relativo], [identificador de nível superior] e [caminho normal].
Os caminhos comuns incluem "caminho absoluto", "caminho raiz", etc.
Aqui nos concentramos em [logotipo relativo] e [logotipo superior].
Identificadores relativos se referem a "./", "../", como: "./othermodule", "../lib/base".
Identificadores de nível superior se referem a arquivos ou diretórios (podem conter: letras, -, _), como: "app/widget/select"
Existem três lugares onde o ID do módulo é necessário:
A cópia do código é a seguinte: define ("id (1)", ["../ id2 (2)"], função (requer, exporta, módulo) {
var modulea = requer ('./ modulea (3)');
})
Nota: Seja o primeiro parâmetro [ID do módulo] ou o segundo parâmetro [ID do módulo] ou o [ID do módulo confiável], o padrão de comparação final é [URI de arquivo parsed].
Portanto, esses três lugares onde os IDs precisam ser escritos podem ser escritos de qualquer maneira e, desde que sejam finalmente analisados no mesmo URI, são considerados o mesmo módulo.
Durante o processo de analisar o ID, ele será processado com antecedência por pseudônimo e caminhos definidos em Seajs.config.
Regras de resolução do caminho da base
(Camada 1, o caminho em si não depende de nenhuma configuração)
1. [Identificação de nível superior] Não pode ser usado, porque a identificação de nível superior é analisada em relação ao caminho básico base, para que a própria base possa usar apenas [identificação relativa] ou [caminho raiz], etc.
2. O caminho padrão da base é o diretório SEAJS.
3. [Identificação relativa]: Analise em relação à página atual.
Regras de resolução do caminho em caminhos
(Camada 1, o caminho em si não depende de nenhuma configuração)
1. [Identificação relativa]: Onde ser citado, a localização analítica relativa depende do local que está sendo citado e segue as regras locais.
2. Os campos nos caminhos serão substituídos na forma de variáveis onde são usados e depois analisados.
por exemplo:
Copie o código da seguinte forma: // bloco de código (1)
// Definição do caminho:
Seajs.config ({
base: "./ app/src",
caminho:{
"A": "../ lib", // (1) caminho relativo
"lib": "caminho/para/lib", // (2) logotipo de nível superior
"L2": "/lib" // (3) Caminho da raiz
}
});
// módulo mod/m/m.js:
...
requer ("a/jQuery");
// => converta para: "../../lib/jquery"
// => Carregando: mod/lib/jQuery (nota especial 1)
...
// módulo mod/f.js:
...
requer ("a/jQuery");
// => converta para: "../../lib/jquery"
// => Carregando: lib/jQuery (nota especial 2)
...
Regras de resolução do caminho em alias
(Na camada 2, o caminho em si pode depender das configurações dos caminhos)
1. As regras dos alias são semelhantes aos caminhos, e o caminho do alias também pode usar "variáveis" nos caminhos
2. Lembrete: tente usar [identificação de nível superior], [caminho raiz] e [caminho absoluto] em caminhos e alias, e não use [identificação relativa], porque os módulos de diferentes profundidades serão analisados em diferentes caminhos.
3. [Identificação relativa]: Onde ser citado, a localização analítica relativa depende do local que está sendo citado e segue as regras locais.
Seajs.Use Regras de Resolução do Caminho
[Identificação relativa]: Analise em relação à página atual.
Definir definir regras de análise de identificação do módulo (1)
(Na camada 3, o caminho pode ser definido em relação a alias ou caminhos)
Você pode usar: [identificação relativa], [identificação de nível superior], [caminho raiz]
Recomenda -se usar [Identificação de nível superior].
【Identificação relativa】: Análise relativa à página atual
Copie o código da seguinte forma: // bloco de código (2)
// config - também use a configuração no [bloco de código (1)]
// Módulo 1, sem ambiguidade, análise do caminho raiz
define ("/app/src/module/base", ..);
// Módulo 2, identificação inequívoca, de nível superior, analisado em relação ao caminho básico da base
define ("app/src/module/base", ..);
// Módulo 3, com ambiguidade e identificação relativa, aqui em relação à página atual (consulte a página HTML deste módulo)
// mas mesmo que [superficialmente o mesmo "id"] seja usado em outros lugares, diferentes módulos podem ser analisados
define ("./ app/src/module/base", ..);
Regras de resolução de identificação de dependência do módulo (2)
(Na camada 3, o caminho pode ser definido em relação a alias ou caminhos)
【Identificação relativa】: Análise de caminho básico da base relativa
Copie o código da seguinte forma: // bloco de código (3)
// config - também use a configuração no [bloco de código (1)]
// sem ambiguidade, em relação à resolução do caminho raiz
define ("..", ["/app/src/module/base"], ..)
// sem ambiguidade, identificação de nível superior, em relação à análise básica do caminho básico
define ("..", ["app/src/module/base"], ..)
// Há ambiguidade, em relação ao módulo atual.
// A dependência aqui parece depender do `Módulo 3` em [Bloco de Código (2)]
// Mas se o módulo atual e a página atual não estiverem no mesmo diretório de nível, ele não será analisado no `Módulo 3`
define ("..", ["./app/src/module/base"], ..)
Requer regras de resolução de identificação para outros módulos dentro do módulo (3)
(Na camada 3, o caminho pode ser definido em relação a alias ou caminhos)
【Identificação relativa】: Análise de caminho básico da base relativa
Copie o código da seguinte forma: // bloco de código (4)
// config - também use a configuração no [bloco de código (1)]
define ("..", [..], function (requer) {
// sem ambiguidade, em relação à resolução do caminho raiz
requer ("/app/src/module/base");
});
define ("..", [..], function (requer) {
// sem ambiguidade, identificação de nível superior, em relação à análise básica do caminho básico
requer ("app/src/module/base");
});
define ("..", [..], function (requer) {
// Há ambiguidade, em relação ao módulo atual.
// A dependência aqui parece depender do `Módulo 3` em [Bloco de Código (2)]
// Mas se o módulo atual e a página atual não estiverem no mesmo diretório de nível, ele não será analisado no `Módulo 3`
requer ("./ app/src/module/base");
})
Lembrete especial: existem três lugares no módulo em que os IDs precisam ser escritos e não há necessidade de usar a mesma string, desde que seja analisada no mesmo módulo.
Resumir:
1. As configurações de caminhos e alias são equivalentes apenas a uma variável.
2. Use [logotipo de nível superior] o máximo possível.
3. Se você não pode usar o [Identificador de nível superior], como a extensão do diretório é relativamente grande, tente definir alias ou caminhos para localizá-lo em um diretório através de um identificador [não-relativo] e, em seguida, definir o ID em Este identificador.