Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Gulp com JSP

OI,

Posso usar o Gulp com Tags JSP?

Estou tendo erros, vejam abaixo:

//footer.jsp

<!-- build:js js/all.min.js -->
<script src="<c:url value='/js/portal/carrinhoController.js'/>"></script>
<!-- endbuild -->

D:\main\webapp\WEB-INF\views\portal\partials\<c:url not found!

Existe um index.jsp, que importa o footer.jsp

Algúem já passou por isso? Também acontece com os arquivos .css

Obrigado.

6 respostas

O usemin não conseguirá entender o valor de <c:url>, não vai funcionar, infelizmente. No entanto, tenho uma dica.

Você deve usar sua aplicação atrás de um servidor apache (geralmente isso é feito em produção). Existe o

https://developers.google.com/speed/pagespeed/module/

É um mod do apague que fará todas as boas práticas de otimizações on the fly. Eu não usei, mas se eu soubesse que existia antes deu escrever meus scripts eu teria usado.

Aliás, é um mod criado pela própria Google. Se conseguir fazer funcionar, ele o livrará dos detalhes das otimizações e ainda otimizará o seu JSP processado.

Oi Flavio,

Não sabia que o pagespeed podia ser empregado como um módulo no servidor, eu já o conhecia mas somente como teste de páginas (https://developers.google.com/speed/pagespeed/insights/?hl=pt-BR)

Depois de refletir um pouco, eu entendi porque o JSP não funciona, mas e se eu colocar caminhos relativos? Isso daria certo?

Porque eu testei e ele não entende.

<script src="./../js/portal/carrinhoController.js"></script>

carrinhoController.js not found!

Procurei no google, mas não ficou muito claro pra mim, tem alguma dica sobre isso?

Obrigado pela atenção.

Tem que ser um caminho que o Gulp encontre a partir do local onde o script foi chamado. Em teoria, era para funcionar.

Olá Danilo,

Como já dito pelo professor Flávio você não vai conseguir conciliar o uso de taglibs do spring com o gulp dessa maneira que quer.

Acho que para solucionar esse problema que está tendo, você vai precisar parar de usar esse plugin do gulp que lê diretamente o código .html/.jsp.

Basta criar uma task no Gulp que compile, minifique, etc para o diretório desejado, e no JSP você só carrega o arquivo naquela pasta.

Para isso existem plugins no npm como o gulp-concat.

No exemplo dado no link que eu passei acima

var concat = require('gulp-concat');

gulp.task('scripts', function() {
  return gulp.src('./lib/*.js')
    .pipe(concat('all.js'))
    .pipe(gulp.dest('./dist/'));
});

O Gulp vai concatenar todos os arquivos .js da pasta lib em um único arquivo chamado all.js e vai jogar esse arquivo dentro da pasta dist, ou seja, no JSP basta você carregar esse novo arquivo.

<c:url var="allScriptsURL" value='/dist/all.js'/>
<script src="${allScriptsURL}"></script>

Att.

solução!

Oi Wagner,

Sim esta seria uma possibilidade, inclusive pensei um pouco a respeito.

Mas eu consegui resolver de uma outra forma, eu retirei as taglibs do trechou que importa os meus scripts e usei caminhs relativos, assim consegui concatenar, minificar e dar o replace no código.

Eu demorei pra responder pois não estava funcionando, mas eu tinha errado no caminho relativo (estava apontando para outro diretório).

Ficou desta forma

Antes

<!-- build:js ../js/footer.min.js -->
<script src="../../../../js/portal/carrinhoController.js"></script>
<!-- endbuild -->

Depois

<!-- build:js ../js/footer.min.js -->
<script src="../js/footer.min.js"></script>
<!-- endbuild -->

Obrigado pela dica.

Flávio obrigado pela atenção!

Danilo,

Apenas um adendo, eu não sou muito experiente com o spring no back-end (até porque sou dev front-end), mas acredito que o spring faça o tratamento da URL automaticamente, adicionando parametros e caminhos necessários. Por exemplo, hoje a URL para seu site pode ser assim www.meu-site.com.br

Usando a lib c:url ele gera o seguinte caminho /assets/css/style.css

Mas vamos dizer que amanhã ou depois seu site passe a ter um novo contexto na URL, exemplo www.meu-site.com.br/institucional

A lib c:url vai gerar o seguinte caminho automaticamente (pelo menos é assim nos projetos que trabalho com spring aqui) /institucional/assets/css/style.css

Se você fazer com caminhos relativos, vai ter que refatorar o código sempre que atualizar a URL.

Para você com certeza isso não deve ser um problema, mas é bom sempre ficar por dentro para o caso de precisar no futuro.

Att.