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:
StringouObject-
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. |