Esta página parece dizer que é possível, mas não entra em muito mais detalhes do que isso.
alho
Respostas:
152
Você também pode definir o caminho de onde os arquivos estáticos serão veiculados na web, especificando um parâmetro adicional (primeiro) para use()assim:
Dessa forma, você obtém dois diretórios diferentes na web que espelham seus diretórios locais, e não um caminho de url que executa failover entre dois diretórios locais.
Em outras palavras, o padrão de URL:
http://your.server.com/public/*
Exibe arquivos do diretório local publicenquanto:
http://your.server.com/public2/*
Atende arquivos do diretório local public2 .
BTW, isso também é útil se você não quiser que o static sirva os arquivos da raiz do seu servidor, mas sim de um caminho mais qualificado.
Perfeito @facetcounter! Apenas apontei um script para meu diretório! script (src = "/ public2 / alertTest.js")
Cody
Se estiver usando o React e tentando servir dois aplicativos separados, você precisa adicionar "homepage": "/public"e "homepage": "/public2"ao respectivo package.json do aplicativo react. Para obter mais informações sobre o uso de dois apps react, veja minha resposta aqui stackoverflow.com/a/48569896/4746648
Danny Harding
isto é muito útil especialmente quando você quer uma sharedpasta para que você pode usar "./"e "./shared"e crescer você pode facilmente compartilhar arquivos js: 3 Obrigado
Jaacko Torus
55
Você também pode "mesclar" diretórios em um único diretório visível
Ambos static e alternate_static serão exibidos como se estivessem no mesmo diretório. No entanto, esteja atento para informações sobre nomes de arquivos.
Se bem entendi, conflitos de nome de arquivo não acontecem porque o node usa a primeira versão do arquivo que encontra. Se ele vê main.jsem static/que não vai continuar a olhar em alternate_static/.
RobW
2
Isso ainda é um problema se você esperava que o arquivo alternate_staticalgum dia fosse entregue.
Randolpho
41
Não é possível por uma injeção de middleware, mas você pode injetar staticmiddleware várias vezes:
Respostas:
Você também pode definir o caminho de onde os arquivos estáticos serão veiculados na web, especificando um parâmetro adicional (primeiro) para
use()
assim:Dessa forma, você obtém dois diretórios diferentes na web que espelham seus diretórios locais, e não um caminho de url que executa failover entre dois diretórios locais.
Em outras palavras, o padrão de URL:
Exibe arquivos do diretório local
public
enquanto:Atende arquivos do diretório local
public2
.BTW, isso também é útil se você não quiser que o static sirva os arquivos da raiz do seu servidor, mas sim de um caminho mais qualificado.
HTH
fonte
"homepage": "/public"
e"homepage": "/public2"
ao respectivo package.json do aplicativo react. Para obter mais informações sobre o uso de dois apps react, veja minha resposta aqui stackoverflow.com/a/48569896/4746648shared
pasta para que você pode usar"./"
e"./shared"
e crescer você pode facilmente compartilhar arquivos js: 3 ObrigadoVocê também pode "mesclar" diretórios em um único diretório visível
Estrutura de Diretório
/static
/alternate_static
Código
Ambos static e alternate_static serão exibidos como se estivessem no mesmo diretório. No entanto, esteja atento para informações sobre nomes de arquivos.
fonte
main.js
emstatic/
que não vai continuar a olhar emalternate_static/
.alternate_static
algum dia fosse entregue.Não é possível por uma injeção de middleware, mas você pode injetar
static
middleware várias vezes:Explicação
Olhe para connect / lib / middleware / static.js # 143 :
Existe
options.root
uma raiz estática, que você define emexpress.static
ouconnect.static
chama, epath
é o caminho da solicitação.Veja mais em connect / lib / middleware / static.js # 154 :
O caminho é verificado apenas uma vez e, se o arquivo não for encontrado, a solicitação é passada para o próximo middleware.
Atualização para Connect 2.x
Os links para o código são inativos para o Connect 2.x, mas o uso de vários middlewares estáticos ainda é possível como antes.
fonte
});
fonte