A propriedade serverMiddleware
Define o intermediário no lado do servidor.
-
Tipo:
Array
-
Itens:
String
ouObject
ouFunction
-
Itens:
O Nuxt internamente cria um instância de connect que você pode adicionar ao seu próprio intermediário. Isto permite-nos registar rotas adicionais (normalmente rotas /api
) sem precisar de um servidor externo.
Por connect
mesmo ser um intermediário, o intermediário registado funcionará com ambos nuxt start
e também quando usado como um intermediário com uso programático como o express-template . Os Módulos do Nuxt pode também fornecer o serverMiddleware
usando o this.addServerMiddleware()
Adicionalmente a eles, nós introduzimos uma opção prefix
a qual o valor padrão será true
. Ela adicionará uma base de roteador para os intermediários do seu servidor.
Exemplo:
-
Caminho do intermediário do servidor:
/server-middleware
-
Base de roteador:
/admin
-
Com o
prefix: true
(valor padrão):/admin/server-middleware
-
Com o
prefix: false
:/server-middleware
serverMiddleware vs middleware!
Não confunda ele com o intermediários de rotas as quais são chamadas antes de cada rota pelo Vue no lado do cliente ou na renderização no lado do servidor. O intermediário listado dentro da propriedade serverMiddleware
executa no lado do servidor antes do vue-server-renderer
e pode ser usado para tarefas específicas do servidor como manipulando de requisições de API ou servindo recursos.
serverMiddleware
ao diretório middleware/
.Os intermediários são empacotados pelo webpack dentro do seu pacote de produção e executam sobre o gatilho beforeRouteEnter
. Se você adicionar o serverMiddleware
ao diretório middleware/
ele será erradamente tomado pelo Nuxt como um intermediário comum e adicionará dependências erradas ao seu pacote ou gerar erros.Uso
Se o intermediário for um sequência de caracteres o Nuxt tentará pedir e resolver ele automaticamente.
import serveStatic from 'serve-static'
export default {
serverMiddleware: [
// Registará o pacote `redirect-ssl` de npm
'redirect-ssl',
// Registará o ficheiro do diretório `server-middleware` do projeto manipular os pedidos de `/server-middleware/*`
{ path: '/server-middleware', handler: '~/server-middleware/index.js' },
// Podemos também criar instâncias personalizadas
{ path: '/static2', handler: serveStatic(__dirname + '/static2') }
]
}
Intermediário de Servidor Personalizado
É também possível escrever um intermediário personalizado. Para mais informações consulte a Documentação do Connect
.
Intermediário (server-middleware/logger.js
):
export default function (req, res, next) {
// O `req` é o objeto de requisição http do Node.js
console.log(req.url)
// O `res` é o objeto de resposta http do Node.js
// O `next` é uma função para chamar o próximo intermediário
// Não esqueça de chamar o `next` no final se o seu intermediário não for um ponto final!
next()
}
serverMiddleware: ['~/server-middleware/logger']
Ponto Final de API Personalizada
Um intermediário de servidor pode também estender o Express
. Isto permite a criação de pontos finais de REST.
const bodyParser = require('body-parser')
const app = require('express')()
app.use(bodyParser.json())
app.all('/getJSON', (req, res) => {
res.json({ data: 'data' })
})
module.exports = app
serverMiddleware: [
{ path: "/server-middleware", handler: "~/server-middleware/rest.js" },
],
A Sintaxe de Objeto
Se o seu intermediário de servidor compreende em uma lista de funções mapeadas para os caminhos:
export default {
serverMiddleware: [
{ path: '/a', handler: '~/server-middleware/a.js' },
{ path: '/b', handler: '~/server-middleware/b.js' },
{ path: '/c', handler: '~/server-middleware/c.js' }
]
}
Você pode alternativamente passar um objeto para definir eles, como o seguinte:
export default {
serverMiddleware: {
'/a': '~/server-middleware/a.js',
'/b': '~/server-middleware/b.js',
'/c': '~/server-middleware/c.js'
}
}
![Sébastien Chopin](/_nuxt/image/e847b9.png)
![Nazaré da Piedade](/_nuxt/image/d5c785.png)
![Nobu](/_nuxt/image/888ba6.png)
![川音리오](/_nuxt/image/345a82.png)
![Maciek Palmowski](/_nuxt/image/2bdab1.png)
![Nestor Vera](/_nuxt/image/b6ef28.png)
![Daniel Roe](/_nuxt/image/0786f3.png)
![Yue Yang](/_nuxt/image/40c994.png)
![Jeronimas](/_nuxt/image/ba9a98.png)
![Clément Ollivier](/_nuxt/image/77339c.png)
![Alexander Lichter](/_nuxt/image/073577.png)
![N3-rd](/_nuxt/image/20bdf5.png)
![Adrien Zaganelli](/_nuxt/image/c3f019.png)
![Mag](/_nuxt/image/1fe278.png)
![Stefan Huber](/_nuxt/image/c3653a.png)
![Olga Bulat](/_nuxt/image/e50af3.png)
![Paiva](/_nuxt/image/ea02f0.png)
![Florian Reuschel](/_nuxt/image/ee31ca.png)
![Savas Vedova](/_nuxt/image/d403a7.png)
![HIJACK](/_nuxt/image/d0b78e.png)
![Vinícius Alves](/_nuxt/image/ba75e5.png)
![Kareem Dabbeet](/_nuxt/image/c79dfa.png)
![Valentín Costa](/_nuxt/image/3dd0d7.png)
![Ryan Skinner](/_nuxt/image/ec2d86.png)
![Alex Hirzel](/_nuxt/image/980fb6.png)
![Ajeet Chaulagain](/_nuxt/image/2fb9d1.png)
![René Eschke](/_nuxt/image/ddfbaa.png)
![Nico Devs](/_nuxt/image/5fa1fe.png)
![Muhammad](/_nuxt/image/76bed9.png)
![Naoki Hamada](/_nuxt/image/475300.png)
![Tom](/_nuxt/image/aae9cc.png)
![Yann Aufray](/_nuxt/image/305a71.png)
![Anthony Chu](/_nuxt/image/027d85.png)
![Nuzhat Minhaz](/_nuxt/image/431077.png)
![Lucas Portet](/_nuxt/image/260cbe.png)
![Richard Schloss](/_nuxt/image/7f63ae.png)
![Bobby](/_nuxt/image/42cdae.png)
![bpy](/_nuxt/image/ecc096.png)
![Antony Konstantinidis](/_nuxt/image/1434b0.png)
![Hibariya](/_nuxt/image/febb5a.png)
![Jose Seabra](/_nuxt/image/ede04e.png)
![Eze](/_nuxt/image/f22c13.png)
![Florian Lefebvre](/_nuxt/image/e3705e.png)
![Lucas Recoaro](/_nuxt/image/8cdc5c.png)
![Julien SEIXAS](/_nuxt/image/40a795.png)