Trabalhar com javascript modular
[Concluído]
Qual a maneira correta de trabalhar com javascript modular no laravel? No caso javascript puro(vanilla), pois nesse formato não posso importar usando a tag script, aparece uma mensagem no console dizendo q o uso do import é apenas no js modular.
Olá amigo!
No Laravel mix você pode definir diversos entry points e trabalhar com N arquivos JS
Exemplo, crie um arquivo .js em resources/js/meu-arquivo.js
E no arquivo do Laravel Mix defina esse novo entry point:
mix.js('resources/js/app.js', 'public/js')
.js('resources/js/meu-arquivo.js', 'public/js/nome-customizado.js');
Agora em qualquer parte do seu projeto (pode usar o recurso de stacks: https://www.youtube.com/watch?v=iNJ1cP9keyo) inclua o novo arquivo js:
<script src="{{ url('public/js/nome-customizado.js') }}"></script>
Fiz o processo mas ainda retorna o erro de sintaxe:
conteudo do arquivo:
gulpfile.js:
Qual a versão do Laravel você está usando?
Ainda utiliza o elixir, provavelmente é <= 5.3
Isso daqui gerou o seu arquivo customizado likesController?
.scripts('likesController.js', 'public/js/likesController.js')
Já tem muito tempo que não o elixir, porque ele foi descontinuado.
Mas, experimente passar um array no primeiro parâmetro do scripts
.scripts(['pathDoArquivoAqui.js'], 'public/js/likesController.js');
O arquivo foi gerado. A versao do laravel é a 5.1. Ele reclama do uso do import no js ao executar a página, assim o javascript não é executado.Seria talvez o caso da transpilacao? Desde q atenda os requisitos, eu consigo atualizar a versão do laravel mantendo o q ja tenho? Seria recomendado?
Me dê mais detalhes desse erro (upload imagem: https://imgur.com/upload), está nesse import aqui?
import Likes from './models/Likes';
Ou, o erro está quando o elixir vai importar o arquivo definido em scripts()?
o script está gerando os arquivos normalmente. O arquivo app.js está como veio padrão, não mexi nele. No console ele dá a mensagem declarações de importação podem ser feitas apenas no nivel superior de um módulo
Segue as imagens:
https://imgur.com/a/OrX7tFR
No arquivo likesController.js você experimentou não fazer esse import, só para analisar se ainda sim gera o erro?
Deixe no arquivo likesController.js apenas:
console.log('likesController')
------------
Experimente não usar a sintaxe de importação do ES6, mas sim do common js:
const Likes = require('./models/Likes')
------------
Seu código está OK, isso me parece ser uma limitação do elixir.
De fato há algo estranho, usando o require ele dá a seguinte mensagem:
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!