Quase todos os sistemas de construção optam por usar o mecanismo de relógio para resolver o problema de gerar repetidamente arquivos pós-construção durante o desenvolvimento. No entanto, sob o mecanismo de vigilância, temos que suportar o problema de modificar o código por um longo tempo e ter que beber um gole de chá depois de salvar o código antes de atualizar e ver o efeito. Aqui, tentamos explorar por que o relógio não é uma bala de prata e tentamos encontrar uma solução melhor para esse problema.
Fatos baseados no relógio
Quando um arquivo é modificado, podemos conhecer as modificações de arquivo que podem ser causadas por sua modificação; portanto, basta reconstruir esses arquivos.
Geralmente, para o arquivo A, o relacionamento correspondente é muito preciso na construção de um cenário como o arquivo B. Mas em cenários reais, o processo de construção geralmente não é tão simples. Por exemplo:
Arquivo A + Arquivo B (referenciado pelo Arquivo A) -> Arquivo C
Nesse cenário, quando o arquivo B é modificado, pode ser difícil localizar quais arquivos precisam estar executando a tarefa de construção, porque muitos arquivos podem se referir ao arquivo B.
A menos que criemos uma árvore de dependência e atualize a árvore de dependência sempre que o arquivo for atualizado e acionar a construção de arquivos com base na nova árvore de dependência. Mas isso exige que todos os plug-in implementem esse mecanismo por si só e sejam extremamente propensos a erros. Portanto, de fato, o mecanismo de relógio apenas remodela toda a tarefa. Assim, à medida que o projeto aumenta, o mecanismo de relógio se tornará mais lento (porque mais e mais arquivos precisam executar novamente todo o processo, mesmo que o cache seja reduzido reduzindo o tempo necessário para todo o processo).
Solução
SRC está disponível diretamente
Alloyteam & @ldjking, basta colocar o SRC diretamente e colocar as tarefas de construção no lado do navegador, ou mesmo não construir. Ele pode não apenas modificar e atualizar no tempo, mas também reduzir o consumo de tempo durante o processo de desenvolvimento. A construção offline é responsável apenas por problemas de otimização de desempenho e não pela eficiência do desenvolvimento.
Os representantes típicos incluem menos, reagem, etc. Mas há alguns problemas:
É difícil implementar métodos elegantes de construção no lado do navegador, e é difícil fornecer funções poderosas para reduzir ainda mais os custos de desenvolvimento. A maioria deles só pode introduzir scripts de maneira semelhante à <style type = "text/menos"> </style>.
A ordem de execução no modo de desenvolvimento não é necessariamente a mesma do cenário real, o que pode levar a bugs invisíveis. Por exemplo, a implementação de um inline HTML é assíncrona, mas no modo de liberação é sincronizado, resultando em bugs inexplicáveis.
O desempenho da compilação do navegador é preocupante, como a versão JS do SASS, e a velocidade de compilação é quase insuportável.
É necessário manter dois conjuntos de sistemas de construção on -line e offline, o que aumenta o custo do desenvolvimento de ferramentas.
Construção dinâmica do servidor local
Um fato é: com suporte a especificação razoável, podemos voltar ao arquivo de entrada solicitado pelo navegador para o arquivo que foi criado durante o arquivo. Dessa forma, podemos acionar dinamicamente um processo de construção.
Ao estabelecer um servidor localmente, deixe o servidor capturar a solicitação e criá -la dinamicamente no servidor. Enquanto voltarmos ao arquivo de entrada, podemos lançar o arquivo de entrada no pipeline composto por plug-in gulp e a saída é o arquivo exigido pelo navegador.
Dessa forma, podemos resolver todos os problemas acima.