Vscode-ng-language-service: Roteiro de serviço da Angular Language

Criado em 30 mai. 2019  ·  20Comentários  ·  Fonte: angular/vscode-ng-language-service

Já se passou mais de um ano desde que @chuckjaz , o autor original do serviço linguístico, deixou a equipe. Desde então, a equipe se espalhou muito trabalhando em vários objetivos ambiciosos, como o compilador Ivy e a integração do Bazel com CLI, entre outros.
Agora que a versão 8 foi lançada, gostaríamos de fornecer algumas atualizações e um roteiro para o futuro serviço de idiomas.

  1. Estabilidade / desempenho ✔️ pronto!
    É nossa maior prioridade garantir que o serviço linguístico não regredir no desempenho. Continuaremos a abordar os problemas de estabilidade, se houver.

  2. Transição para o plugin tsserver ✔️ concluído!
    Nos próximos meses, assumiremos o trabalho restante necessário para fazer a transição para o modelo de plug-in tsserver. Os principais benefícios de um plugin tsserver são o desempenho (sem compilação de TS duplicada) e sem incompatibilidade de versão (tanto Angular quanto TS). A maior parte do trabalho é garantir que os modelos HTML externos sejam bem suportados.
    Atualização 11/11/2019: embora continuemos a oferecer suporte ao modo de plug-in, decidimos manter a extensão autônoma. A extensão foi completamente renovada para resolver os problemas de desempenho e muitos recursos foram adicionados. Uma nova versão foi publicada no mercado em conjunto com o lançamento da versão 9 do Angular.

  3. Correções de bugs / melhorias ✔️ concluído!
    Assim que o plugin estiver pronto, iremos resolver alguns bugs de longa data com relação à verificação de tipo de modelo e alguns aprimoramentos de recursos muito solicitados.

  4. Mude o serviço de idioma para o compilador Ivy ✔️ concluído!
    Como o modelo de compilação no Ivy é significativamente diferente daquele no View Engine, o back-end do serviço de linguagem terá que ser reformulado para garantir compatibilidade futura.

Obrigado por todos os comentários e informe-nos se deseja contribuir!

Comentários muito úteis

Última atualização: o serviço de idioma Ivy estará disponível para teste beta na versão 11. O lançamento está agendado para 11 de novembro de 2020. Nosso objetivo é melhorar o desempenho e fornecer um conjunto de recursos mais amplo nesta iteração completamente nova do serviço de idioma. Entre os novos recursos estão:

  1. Melhores tipificações em modelos angulares
  2. Produz o mesmo diagnóstico do compilador
  3. Honrar o usuário angularCompilerOptions

Sabemos que já demorou muito, mas obrigado pelo apoio e pela paciência!

Todos 20 comentários

Bem, apenas para vinculá-lo aqui, eu tenho dois problemas / bugs de desempenho pesado bem descritos:

Enquanto para o primeiro há uma solução alternativa para não fechar pelo menos o último editor aberto, para o segundo é apenas desabilitar o plugin. Dos meus testes intensivos com o plug-in, posso dizer que se os dois forem corrigidos, o plug-in é quase perfeito.

Uma nova versão da extensão Angular foi publicada no GitHub como uma prévia, consulte https://github.com/angular/vscode-ng-language-service/releases/tag/v0.900.0-next.0.

Se você experimentar, informe-nos sobre quaisquer problemas / bugs. Obrigado!

@kyliau : Eu gostaria de experimentar a mais nova inteligência Angular integrada no Eclipse Wild Web Developer. A extensão que você vinculou em seu comentário anterior contém um servidor de idioma (como em um processo que fala LSP)? Em caso afirmativo, espera-se que funcione em arquivos TS e HTML? E se sim, qual é a forma recomendada de iniciar este servidor de linguagem?

@kyliau Eu segui as instruções para instalar v0.900.0-next.0, porém não há sugestões de autocompletar para nada (por exemplo, seletores de componentes, propriedades, eventos, etc).

Estou feliz em anunciar que a versão RC foi lançada e, em algumas semanas, uma nova extensão será publicada no mercado vscode.
Nesse ínterim, se quiser experimentar, baixe o binário na página de lançamento .
No momento, estamos nos concentrando no item de trabalho (3), no qual corrigiremos alguns bugs antigos.

A nova extensão agora está ativa. Faça o download em https://marketplace.visualstudio.com/items?itemName=Angular.ng-template

Tenho uma pergunta sobre o ponto 4 "Mudar o serviço de idioma para o compilador Ivy [em andamento]"

Temos a nossa própria biblioteca interna, que só é utilizada nas aplicações que desenvolvemos. Portanto, migramos para o Ivy, porque toda a nossa base de código foi migrada de uma vez. Mas agora o vscode não reconhece mais as diretivas e componentes da biblioteca.

Isso significa que a melhor maneira por enquanto seria, compilamos a biblioteca com o View Engine até que o serviço de linguagem suporte totalmente Ivy. Isso está correto? Em caso afirmativo, existe um roteiro quando o suporte chegará para o serviço de idiomas?

Os aplicativos que usam o compilador ivy não têm problema. Os componentes dos aplicativos são resolvidos corretamente.

@furti Como você notou, sim, por enquanto as bibliotecas e aplicativos terão que ser compilados com o View Engine para que o serviço de linguagem obtenha o metadata.json que é a base do serviço de linguagem hoje.
@xiaoxiangmoe Estou trabalhando com a equipe do compilador para integrar totalmente o Ivy ao serviço de linguagem. Atualmente, pretendemos um lançamento beta na versão 10, o que deve acontecer no final de junho / início de julho, salvo quaisquer surpresas. Nosso planejamento foi um pouco interrompido devido à situação em andamento do WFH, mas faremos o possível para seguir o roteiro original.

É bom ver que o angular lançou a versão 10 🎉
Existe alguma atualização para "Mudar o serviço de idioma para o compilador Ivy"?

@xiaoxiangmoe O cronograma para o serviço de idiomas Ivy caiu devido a alguma reorganização interna.
O trabalho já começou e convidamos alguns membros para aumentar o ímpeto deste projeto.
Você pode acompanhar o andamento de todo o projeto aqui .
Planejamos lançar o Ivy LS junto com o LS existente, para que os usuários que desejam experimentar uma "prévia" possam fazê-lo a partir das configurações do editor. Por favor fique atento!

Acho que a performance ainda não acabou. Essa extensão tem sido a maior fonte de picos de CPU para mim e para muitas outras pessoas que conheço há muito tempo e, ultimamente, deixa os fãs do macOS loucos.

Sim, concordo com @DenysVuika. Tive problemas com este plugin por meses. Abandonei ontem e desativei. Depois de iniciar o vscode e o servidor web ng, a CPU disparará em algum ponto e permanecerá lá até que eu reinicie o vscode. O Intellisense irá parar de funcionar várias vezes ao dia. Sou forçado a reiniciar o vscode todos os dias, várias vezes. Desde que o desativei, tudo voltou ao normal. Também estou no macOS. Aqui estão algumas informações contextuais:

CLI Angular: 10.0.1
Nó: 12.13.0
SO: darwin x64

Angular: 10.0.2
... animações, comum, compilador, compilador-CLI, núcleo, formulários
... navegador de plataforma, dinâmico de navegador de plataforma, roteador
Espaço de trabalho Ivy: Sim

Versão do pacote

@ angular-devkit / architect 0.1000.1
@ angular-devkit / build-angular 0.1000.1
@ angular-devkit / build-optimizer 0.1000.1
@ angular-devkit / build-webpack 0.1000.1
@ angular-devkit / core 10.0.1
@ angular-devkit / schematics 10.0.1
@ angular / cdk 10.0.1
@ angular / cli 10.0.1
@ angular / material 10.0.1
@ ngtools / webpack 10.0.1
@ esquemáticos / angular 10.0.1
@ schematics / update 0.1000.1
rxjs 6.6.0
datilografado 3.9.6
webpack 4.43.0

No meu projeto Angular 10 atual, usando a versão: 1.48.0-insider, não tenho mais nenhum IntelliSense Angular nos meus modelos HTML nem nenhuma verificação de erro (como se eu vinculasse a uma variável inexistente).

Última atualização: o serviço de idioma Ivy estará disponível para teste beta na versão 11. O lançamento está agendado para 11 de novembro de 2020. Nosso objetivo é melhorar o desempenho e fornecer um conjunto de recursos mais amplo nesta iteração completamente nova do serviço de idioma. Entre os novos recursos estão:

  1. Melhores tipificações em modelos angulares
  2. Produz o mesmo diagnóstico do compilador
  3. Honrar o usuário angularCompilerOptions

Sabemos que já demorou muito, mas obrigado pelo apoio e pela paciência!

@kyliau Será lançado com angular v11.0.0-rc.2 ou v11.0.0-rc.3?

@kyliau Será lançado com angular v11.0.0-rc.2 ou v11.0.0-rc.3?

O serviço de idioma https://github.com/angular/vscode-ng-language-service/releases/tag/v0.1100.0-rc.0 e instalar o .vsix arquivo manualmente.

Como este é um grande marco para o projeto, gostaríamos de ter certeza de que a extensão foi bem testada e completa antes de ser lançada como estável. Fizemos um progresso tremendo e estamos ansiosos para compartilhar o trabalho com a comunidade, mas agradecemos um pouco mais de paciência enquanto resolvemos as pontas soltas.

@kyliau Quando podemos esperar que os bugs abertos para o serviço Ivy Language sejam investigados?
Aberto https://github.com/angular/vscode-ng-language-service/issues/936

@kyliau Será lançado com angular v11.0.0-rc.2 ou v11.0.0-rc.3?

O serviço de idioma https://github.com/angular/vscode-ng-language-service/releases/tag/v0.1100.0-rc.0 e instalar o .vsix arquivo manualmente.

Como este é um grande marco para o projeto, gostaríamos de ter certeza de que a extensão foi bem testada e completa antes de ser lançada como estável. Fizemos um progresso tremendo e estamos ansiosos para compartilhar o trabalho com a comunidade, mas agradecemos um pouco mais de paciência enquanto resolvemos as pontas soltas.

Qual é a maneira certa de ativar o Ivy Language Service? Já defini esta configuração experimental como verdadeira, mas não consigo executar o ngcc. Tentei executá-lo manualmente antes, mas não funciona. Existe algum passo óbvio que eu não estou dando?

Espero que você não ignore este comentário como outra solicitação de suporte ao usuário. Eu sei que você não está pronto para isso. Eu só quero saber a maneira certa de testar isso.

@Arkthur Este é meu angularCompilerOptions:

{
    "angularCompilerOptions": {
        "fullTemplateTypeCheck": true,
        "strictInjectionParameters": true,
        "strictInputAccessModifiers": true,
        "strictTemplates": true
    }
}

Além disso, se você usar vscode-ng-language-service v0.1100.1 ou v0.1100.3, reinstale v0.1100.0. Parece que vscode-ng-language-service v0.1100.1 tem erros graves e o serviço de linguagem ivy não funcionará.

Levou muito tempo para ser criado, mas hoje o serviço em idioma nativo da Ivy está finalmente disponível para teste na v11.1.0!
O LS nativo da Ivy corrige muitos problemas fundamentais que eram impossíveis de corrigir no View Engine:

  • desempenho de compilação incremental,
  • verificação de tipo mais robusta,
  • os mesmos diagnósticos do compilador, etc,

Ele também apresenta alguns novos recursos, como encontrar referências para variáveis ​​em modelos.

Faça o download no mercado vscode e nos informe se tiver algum comentário.
As instruções para habilitar o LS nativo Ivy podem ser encontradas nas notas de versão .

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Liero picture Liero  ·  3Comentários

pfeigl picture pfeigl  ·  6Comentários

fxck picture fxck  ·  6Comentários

MoazAlkharfan picture MoazAlkharfan  ·  3Comentários

frederikschubert picture frederikschubert  ·  3Comentários