A classe ModuleContainer
- Código-fonte: core/module.js
Todos os módulos serão chamados dentro do contexto da instância de ModuleContainer
.
Plugins intercetáveis
Nós podemos registar gatilhos em certos eventos do ciclo de vida.
nuxt.moduleContainer.plugin('ready', async moduleContainer => {
// Faça isso depois de todos módulos estiverem prontos
})
Dentro do contexto de módulos nós podemos usar isso:
this.plugin('ready', async moduleContainer => {
// Faça isso depois de todos módulos estiverem prontos
})
Plugin | Argumentos | Quando |
---|---|---|
ready |
moduleContainer | Todos módulos dentro do ficheiro nuxt.config.js terem sido inicializados |
Métodos
O método addVendor (vendor)
Depreciado visto que vendor
não é mais usado
Adiciona ao options.build.vendor
e aplica filtro único.
addTemplate (template)
-
template:
String
ouObject
-
src
-
options
-
fileName
-
Renderiza o modelo dado usando o modelo do lodash durante a construção dentro do projeto buildDir
(.nuxt
).
Se o fileName
não for fornecido ou o template
não for uma sequência de caracteres, o nome do ficheiro alvo é padronizado para [dirName].[fileName].[pathHash].[ext]
.
Este método retorna o objeto final { dst, src, options }
.
O método addPlugin (template)
-
template: propriedades de Objeto (
src
,options
,fileName
,mode
).
Regista um plugin usando o método addTemplate
e adiciona ele no início do arranjo plugins[]
.
this.addPlugin({
src: path.resolve(__dirname, 'templates/foo.js'),
fileName: 'foo.server.js' // [opcional] apenas inclui o pacote do servidor
options: moduleOptions
})
Repare que: Você pode usar o mode
ou os modificadores .client
e .server
com a opção fileName
para usar o plugin apenas no lado do cliente ou servidor. (Consulte a secção plugins para conhecer todas opções disponíveis)
Se você escolher especificar um fileName
, você pode também configurar um caminho personalizado para fileName
, assim você pode escolher a estrutura da pasta dentro da pasta .nuxt
no sentido de prevenir a colisão de nome:
{
fileName: path.join('folder', 'foo.client.js'), // resultará em `.nuxt/folder/foo.client.js`
}
O método addServerMiddleware (middleware)
Empurra o intermediário dentro options.serverMiddleware .
O método extendBuild (fn)
Permite estender facilmente a configuração da construção do webpack pela encadeamento da função options.build.extend .
O método extendRoutes (fn)
Permite estender facilmente as rotas pelo encadeamento da função options.build.extendRoutes .
O método addModule (moduleOpts, requireOnce)
Função assíncrona
Regista um módulo. O moduleOpts
pode ser uma sequência de caracteres ou um arranjo ([src, options]
). Se o requireOnce
for true
e o módulo resolvido exportar o meta
, ele evita o registo do mesmo módulo duas vezes.
O método requireModule (moduleOpts)
Função assíncrona
É um atalho para addModule(moduleOpts, true)
Os gatilhos
Nós podemos registar gatilhos em certos eventos do ciclo de vida.
Gatilho | Argumentos | Quando |
---|---|---|
modules:before |
(moduleContainer, options) | Chamado antes da criação da classe ModuleContainer, útil para sobrecarregar métodos e opções. |
modules:done |
(moduleContainer) | Chamado quando todos módulos tiverem sido carregados. |












































