AngularJS Olá Mundo: Seu Primeiro Programa de Exemplo

⚡ Resumo Inteligente

Os programas "Hello World" do AngularJS precisam apenas de um único arquivo HTML, uma referência de script e duas diretivas, ng-app e ng-controller, para vincular uma variável de escopo de controlador à página por meio de uma expressão entre chaves duplas.

  • 🔘 ng-app: O atributo ng-app marca o elemento raiz e inicializa automaticamente o módulo AngularJS nomeado.
  • ☑️ ng-controller: O ng-controller anexa o HelloWorldCtrl ao elemento h1, tornando o escopo do controlador disponível ali.
  • Vinculação de escopo: Atribuir `$scope.message` dentro do controlador alimenta a expressão `{{message}}` renderizada na visualização.
  • 🧪 Fila única: Um único arquivo HTML e uma referência de script executam o exemplo, sem necessidade de etapa de compilação.
  • 🛠️ Solução de problemas: A presença de chaves literais na tela quase sempre significa que a biblioteca nunca foi carregada ou que o ng-app está faltando.
  • 📊 Nota de versão: O suporte ao AngularJS terminou em janeiro de 2022, com a versão 1.8.3 sendo a última lançada; novos trabalhos devem ser feitos no Angular.

AngularJS Hello World primeiro programa de exemplo usando ng-app e ng-controller

A melhor maneira de perceber o poder de uma aplicação AngularJS é criar seu primeiro programa básico, um aplicativo "Olá Mundo", em AngularJS.

Existem muitos ambientes de desenvolvimento integrados que você pode usar para AngularJS desenvolvimento, alguns dos mais populares são mencionados abaixo. Em nosso exemplo, estamos usando Webstorm como nosso IDE.

  1. Webstorm
  2. Sublime Text
  3. AngularJS Eclipse
  4. Visual Studio

Olá mundo, AngularJS

Nota de versão: O AngularJS 1.x deixou de ter suporte de longo prazo em 31 de dezembro de 2021, e a equipe do framework confirma isso. O suporte ao AngularJS foi oficialmente encerrado. Em janeiro de 2022, com a versão 1.8.3 como lançamento final e sem patches de segurança posteriores. Cada etapa e bloco de código abaixo é preservado exatamente como foi escrito. Novos projetos pertencem ao Angular moderno, onde o mesmo exercício começa com ng serve e um componente independente e ainda usa o mesmo {{ }} sintaxe de interpolação.

O exemplo abaixo mostra a maneira mais fácil de criar sua primeira aplicação “Hello world” em AngularJS.

A captura de tela anotada abaixo identifica cada parte desse arquivo, e seus sete números correspondem ao Code Abaixo segue uma lista de explicações. A captura de tela foi feita em uma versão anterior, a 1.4.0, portanto, a linha de script difere da versão fixada no código.

Arquivo HTML "Olá Mundo" do AngularJS anotado com sete chamadas numeradas para ng-app, ng-controller, a referência do script e a variável de escopo.

<!DOCTYPE html>  
<html ng-app="app">  
<head>  
    <meta charset="utf 8">
    <title>Guru99</title>     
</head>  
<body>
<h1 ng-controller="HelloWorldCtrl">{{message}}</h1>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script>  
    angular.module("app", []).controller("HelloWorldCtrl", function($scope) {  
    $scope.message="Hello World" 
    } )
</script> 

</body>  
</html>

Code Explicação:

  1. O "aplicativo ngA palavra-chave “aplicação” é usada para indicar que esta aplicação deve ser considerada como uma aplicação AngularJS. Qualquer nome pode ser dado a esta aplicação.
  2. O controlador é o que contém a lógica de negócios. Na tag h1, queremos acessar o controlador, que terá a lógica para exibir “Olá Mundo”, então podemos dizer que, nesta tag, queremos acessar o controlador chamado “HelloWorldCtrl”.
  3. Estamos usando uma variável de membro chamada “message” que nada mais é do que um espaço reservado para exibir a mensagem “Hello World”.
  4. A tag “script” é usada para referenciar o script angular.js, que contém todas as funcionalidades necessárias para o AngularJS. Sem essa referência, qualquer função do AngularJS não funcionará.
  5. "Controller" é o local onde criamos nossa lógica de negócios, que é o nosso controlador. Os detalhes de cada palavra-chave serão explicados nos capítulos subsequentes. É importante observar que estamos definindo um método de controlador chamado 'HelloWorldCtrl', que é referenciado na Etapa 2.
  6. Estamos criando uma "função" que será chamada quando nosso código invocar este controlador. O objeto `$scope` é um objeto especial no AngularJS, sendo um objeto global usado em todo o AngularJS. O objeto `$scope` é usado para gerenciar os dados entre o controlador e a visualização.
  7. Estamos criando uma variável membro chamada "message", atribuindo a ela o valor "Hello World" e associando a variável membro ao objeto de escopo.

NOTA: A diretiva ng-controller é uma palavra-chave definida em AngularJS (Etapa 2) e é usado para definir controladores em sua aplicação. Aqui em nossa aplicação, usamos a palavra-chave ng-controller para definir um controlador chamado 'HelloWorldCtrl'. A lógica real para o controlador será criada na (Etapa 5).

Se o código for executado com sucesso, a seguinte saída será mostrada quando você executar o código no navegador.

Saída:

A mensagem 'Olá Mundo' será exibida.

Janela do navegador intitulada Guru99 renderizando o cabeçalho Hello World a partir da variável de escopo do AngularJS

Como carregar o AngularJS: CDN ou arquivo local

O exemplo acima funciona porque uma única linha carrega o framework na página antes que o navegador chegue ao final do corpo. O AngularJS é distribuído como um único componente. JavaArquivo de script, portanto, um primeiro programa não precisa de etapa de compilação nem de gerenciador de pacotes. Um simples arquivo HTML aberto em um navegador é suficiente.

Existem duas maneiras de importar esse arquivo.

  1. Consulte uma cópia do CDN. O exemplo aponta para code.angularjs.org e a versão 1.6.9 do Pins. Esse host ainda serve versões 1.x, sendo a mais recente a 1.8.2, enquanto Google A seção Bibliotecas Hospedadas não lista mais o AngularJS.
  2. Baixe uma cópia local. Salve o arquivo ao lado da página HTML e aponte a tag de script para ele. Uma cópia local mantém o exemplo funcionando offline, o que é importante quando um proxy bloqueia a CDN.
<!-- Option 1: reference a CDN copy -->
<script src="https://code.angularjs.org/1.8.2/angular.min.js"></script>

<!-- Option 2: reference a downloaded copy in the same folder -->
<script src="angular.min.js"></script>

Uso angular.js enquanto aprendia e angular.min.js Em produção: a versão não minificada imprime uma pilha legível. tracsim, enquanto a versão minificada reporta variáveis ​​renomeadas.

Assim que o arquivo for carregado, ng-app Inicia o framework. O AngularJS procura esse atributo quando o documento termina de carregar, trata o elemento que o contém como a raiz de compilação e inicializa o módulo nomeado em seu valor. Três consequências se seguem:

  • Apenas o primeiro ng-app Uma página é inicializada automaticamente. Uma segunda página é ignorada, a menos que... angular.bootstrap é chamada manualmente.
  • O valor deve nomear um módulo registrado com angular.module, caso contrário, o console reporta [$injector:modulerr].
  • Colocação ng-app na html O elemento, como no exemplo, integra todo o documento ao AngularJS; um contêiner mais estreito também funciona.

Como funcionam as expressões {{ }} e a vinculação do ng-model

As duplas braçadeiras ao redor message Os elementos da tag h1 não são espaços reservados preenchidos apenas no momento do carregamento. O AngularJS compila esse nó de texto em um observador do conteúdo ao redor. escopo, então a saída renderizada tracks $scope.message Enquanto a página existir.

O ciclo se executa em três etapas.

  1. O controlador grava um valor em $scope.
  2. Uma análise de resumo compara cada expressão observada com seu resultado anterior.
  3. Cada expressão cujo valor foi alterado é renderizada novamente no mesmo local.

Uma expressão interpolada é, portanto, unidirecional, do escopo para a visualização. A vinculação bidirecional precisa de modelo ng, Directivas Projetado para controles de formulário. Adicionar <input ng-model="message"> Ao lado do título, digite na caixa e o título mudará a cada tecla pressionada, porque o ng-model grava o valor do campo de volta na mesma propriedade de escopo que a expressão monitora.

As expressões são deliberadamente limitadas. Elas leem propriedades de escopo, chamam métodos de escopo e toleram valores indefinidos silenciosamente, mas não podem declarar variáveis, usar instruções de fluxo de controle ou acessar objetos globais como window.

Como corrigir uma página em branco ou um elemento não renderizado {{ }}

Um primeiro programa AngularJS falha de uma das duas maneiras visíveis: a página permanece em branco ou o texto literal é exibido. {{message}} aparece onde deveria estar "Hello World". Ambos os casos significam que o framework nunca assumiu o controle da marcação. Execute as verificações abaixo na ordem, com o console do navegador aberto.

  1. Confirme se a biblioteca foi carregada. Abra o painel de Rede e procure por angular.js solicitação. Um erro 404 ou uma CDN inacessível não altera os colchetes na tela.
  2. Verifique o caminho do script. Um caminho relativo resolve para a pasta que contém o arquivo HTML, portanto, uma cópia em um js subpasta precisa js/angular.min.js.
  3. Verificar ng-app. Um atributo ausente ou com erro ortográfico não significa nada para o Bootstrap. O atributo é hifenizado como ng-app na marcação, mesmo que a diretiva esteja em camelCase em JavaRoteiro.
  4. Leia o erro no console. [$injector:modulerr] Significa que o módulo nomeado por ng-app nunca foi registrado. [ng:areq] geralmente significa que o nome do controlador na marcação não corresponde ao nome passado para .controller().
  5. Procure por um segundo ng-app. Apenas o primeiro é inicializado automaticamente (bootstrap), portanto, uma cópia perdida deixada em um elemento interno desativa silenciosamente essa parte da página.

Outras duas causas são responsáveis ​​pela maioria dos relatos restantes.

  • O protocolo de arquivo. Este exemplo de arquivo único funciona bem quando aberto diretamente do disco, mas qualquer modelo obtido via XHR é bloqueado pelas regras de origem do navegador. Sirva a pasta via HTTP assim que os modelos estiverem disponíveis.
  • Um breve vislumbre do aparelho ortodôntico. Quando a marcação é renderizada antes da compilação pelo framework, a expressão bruta fica visível por um instante. Adicione ng-cloak para o elemento, ou troque a expressão por ng-bind="message", que nunca exibe sua própria marcação.

Se nenhuma dessas opções se aplicar, reduza a página ao exemplo acima e adicione seu próprio código uma linha de cada vez.

Perguntas Frequentes

Qualquer uma das quatro opções listadas acima funciona, e este exemplo usa WebstormComo o programa consiste em um único arquivo HTML estático, um editor de texto simples é suficiente. Uma IDE apenas adiciona autocompletar diretivas, recarregamento automático e depuração integrada.

$scope é o objeto de vinculação compartilhado entre um controlador e sua visualização. Escrever `$scope.message` dentro de `HelloWorldCtrl` torna essa propriedade visível para a expressão colocada no elemento `h1`.

Ambos os arquivos contêm o mesmo framework. O arquivo angular.js não está minificado, portanto, os erros apontam para o código-fonte legível. O arquivo angular.min.js está compactado para produção e precisa de anotações de dependência explícitas, pois a minificação renomeia os nomes dos parâmetros que o AngularJS normalmente inspeciona.

AngularJS é o framework 1.x mostrado aqui, baseado em diretivas, $scope e código puro. JavaScript. Angular, ou seja, versão 2 e posteriores, é um script separado. TypeScript framework construído sobre componentes e é a linha que recebe manutenção ativa.

Principalmente para a manutenção de aplicações 1.x existentes, que continuam amplamente utilizadas. O vocabulário de vinculação, diretivas e Injeção de dependência As transferências ainda são possíveis, mas o suporte terminou em janeiro de 2022, portanto, novos projetos devem ser feitos no Angular moderno.

Sim. Registre cada um com `.controller()` no mesmo módulo e associe-os a elementos diferentes usando `ng-controller`. Cada um recebe seu próprio escopo filho, portanto, propriedades com nomes idênticos permanecem independentes.

Os assistentes modernos leem um código-fonte 1.x e geram um inventário de diretivas, filtros e serviços com sugestões de componentes e serviços equivalentes. Esse inventário é útil para o escopo.ping o trabalho, embora cada mapaping Ainda precisa de verificação manual.

Copiloto do GitHub completa o código padrão do controlador, atribuições de escopo e ng-enviar Os manipuladores são extraídos de um comentário curto, mas seu treinamento tende para o Angular moderno, portanto, verifique se as sugestões realmente usam a sintaxe da versão 1.x.

Resuma esta postagem com: