1. Qual mecanismo é usado para vinculação de dados em Angular?
Respostadetalhada do princípio
: mecanismo de verificação sujo.
Análise:
A vinculação de dados bidirecional é um dos mecanismos principais do AngularJS. Quando algum dado for alterado na visualização, ele será atualizado no modelo. Quando os dados no modelo forem alterados, a visualização também será atualizada de forma síncrona. [Recomendação do tutorial relacionado: "Tutorial Angular"]
O princípio é que Angular define uma fila de escuta no modelo de escopo para monitorar alterações de dados e atualizar a visualização. Cada vez que você vincula algo a uma visualização, o AngularJS inserirá um $watch na fila $watch para detectar se há alterações no modelo que ele monitora. Quando o navegador recebe um evento que pode ser processado pelo contexto angular, o loop $digest é acionado, percorre todos os $watches e finalmente atualiza o dom.
2. Como a ligação de dados bidirecional do AngularJS é implementada?
Resposta:
1. Cada elemento vinculado bidirecional possui um observador.
2. Quando determinados eventos ocorrem, a detecção de dados sujos é chamada.
Esses eventos incluem: alterações de conteúdo de elementos de formulário, respostas de solicitações Ajax, funções executadas clicando em botões, etc.
3. A detecção de dados sujos detectará todos os elementos do observador no rootscope.
A função $digest é monitoramento de dados sujos
3. Quais plug-ins de terceiros você usou no desenvolvimento do projeto angularjs
Resposta: AngularUi ui-router oclazyload, etc. com/a /1190000003858219
4. Qual é a diferença entre ng-show/ng-hide e ng-if?
Resposta: Todos nós sabemos que ng-show/ng-hide na verdade oculta e exibe por meio de exibição. E o ng-if realmente controla a adição e exclusão de nós dom. Portanto, se carregarmos nós dom com base em condições diferentes, o desempenho de ng-if será melhor que ng-show
5. Explique o que é root S crope e a diferença entre ele e rootScrope, rootScrope e escopo.
Resposta: Em termos leigos, a página root S crope é o pai de todas as páginas rootScrope e de todas as páginas rootScrope e de todos os escopos.
Análise:
vamos dar uma olhada em como gerar root S cope e rootScope e rootScope e escopo.
passo 1: Angular analisa ng-app e cria $ rootScope na memória.
etapa 2: angular continua a análise, encontra a expressão {{}} e a analisa em uma variável.
passo 3: Em seguida, o div com ng-controller será analisado e apontado para uma função de controlador. Neste momento, a função do controlador se torna uma instância do objeto $scope.
6. Liste pelo menos três maneiras de implementar a comunicação entre diferentes módulos.
Resposta:
7. Expressão { Como funciona {seuModelo}}?
Resposta:
Depende do serviço $interpolation. Após inicializar a página html, ele encontrará essas expressões e as marcará, portanto, toda vez que encontrar um {. {}}, um $watch será definido. E $interpolation retornará uma função com parâmetros de contexto. Quando a função for finalmente executada, a expressão $parse será aplicada a esse escopo.
8. $http em angular
Resposta: $http é um serviço central do AngularJS, usado para ler dados de servidores remotos.
Podemos usar o serviço http integrado para nos comunicarmos diretamente com o mundo exterior. O serviço http se comunica diretamente com o mundo exterior. O serviço http se comunica diretamente com o mundo exterior. O serviço http simplesmente encapsula o objeto XMLHttpRequest nativo do navegador.
9. Quando ng-repeat itera um array, se houver os mesmos valores no array, o que acontecerá e como resolver?
Resposta: Será solicitado que duplicatas em um repetidor não sejam permitidas. Adicione faixa por $index para resolver o problema. Claro, você também pode rastrear por qualquer valor comum, desde que possa identificar exclusivamente cada item na matriz (estabelecer a associação entre dom e dados)
10. Angularjs mvc ou mvvm framework
resposta:análise
mvvm
:primeiro elaborado Aqui está o seu compreensão de mvc e mvvm:
Em primeiro lugar, por que precisamos de MVC? Porque à medida que o tamanho do código se torna cada vez maior, a divisão de responsabilidades é a tendência geral e, para conveniência de manutenção posterior, a modificação de uma função não afeta outras funções. E para reaproveitamento, porque grande parte da lógica é a mesma. MVC é apenas um meio, o objetivo final é modularização e reutilização.
As vantagens do mvvm
são o baixo acoplamento: a visualização pode ser alterada e modificada independentemente do modelo, e o mesmo ViewModel pode ser reutilizado por várias visualizações e as alterações na visualização e no modelo podem ser feitas independentemente uma da outra:
alguma lógica de visualização pode ser; colocado no ViewModel, vários Views podem ser reutilizados;
desenvolvimento independente: os desenvolvedores podem se concentrar no desenvolvimento de lógica de negócios e dados (ViewModemvvmdi; os designers podem se concentrar no design da UI (View);
testabilidade: camadas claras de View tornam possível É Mais fácil e simples de testar a lógica de negócios da camada de apresentação
No angular, o padrão MVVM é dividido principalmente em quatro partes:
Visualização: concentra-se na exibição e renderização da interface. No angular,
contém um monte de visualizações diretivas declarativas. templates.:
É a cola entre View e Model, responsável pela interação e colaboração entre View e Model. É responsável por fornecer os dados exibidos para View, e fornecer uma maneira para o evento Command em View operar o Model; o objeto $scope serve como este. O papel do ViewModel
Model: É um portador de encapsulamento de dados relacionados à lógica de negócios da aplicação. O Model não se importa como será exibido ou. operado, portanto, o modelo não conterá nenhuma informação relacionada à exibição da interface. Lógica Nas páginas da web, a maioria dos modelos retorna dados do servidor Ajax ou são objetos de configuração global e o serviço em angular é o local para encapsular e processar a lógica de negócios. relacionado ao modelo. Este tipo de negócio Um serviço é um serviço de domínio que pode ser reutilizado por vários controladores ou outros serviços
Controlador: Este não é o elemento central do padrão MVVM, mas é responsável pela inicialização do objeto ViewModel. . Ele combinará um ou mais serviços para obter o objeto ViewModel do domínio de negócios, de modo que a interface do aplicativo atinja um estado utilizável ao iniciar o carregamento.
A interface do mvc está intimamente relacionada à lógica e os dados são lidos diretamente. o banco de dados. A interface do mvvm é fracamente acoplada ao modo de visualização e os dados da interface são obtidos do modelo de visualização. Portanto, o angularjs prefere o mvvm
11.
Quais funções $ escopo, controlador, diretiva e serviço desempenham no mvvm no angularjs?
Se você não sabe, a análise da primeira questão é muito clara, leia novamente com atenção
12. Em angular Como você controla o carregamento razoável de recursos estáticos no projeto
Resposta: Nenhum
13. Quanto você precisa pagar. atenção ao escrever a lógica do controlador?
Resposta:
1. Simplifique o código (isso
é o que todos os desenvolvedores devem ter)
2. Definitivamente não será capaz de operar o nó dom Neste momento, você pode perguntar por que não.
O último lugar onde deve aparecer é em serviço. Angular defende o desenvolvimento orientado a testes. Se as operações DOM aparecerem no serviço ou controlador, isso significa que o teste não pode ser aprovado. Claro, este é apenas um ponto. O que é importante é um dos benefícios de usar Angular, que é uma ligação de dados bidirecional, para que você possa se concentrar no processamento da lógica de negócios sem ter que lidar com pilhas de operações DOM. Se o código Angular ainda está cheio de várias operações DOM, por que não usar jquery diretamente para desenvolvimento?
O que é desenvolvimento orientado a testes? Para popularizá-lo:
Desenvolvimento orientado a testes, o nome completo em inglês é Test-Driven Development, ou TDD, é um novo método de desenvolvimento diferente do processo tradicional de desenvolvimento de software. Requer escrever o código de teste antes de escrever o código para uma determinada função e, em seguida, escrever apenas o código funcional que faz o teste passar e conduzir todo o desenvolvimento por meio de testes. Isso ajuda a escrever código conciso, utilizável e de alta qualidade e acelera o processo de desenvolvimento.
14.
Respostas sobre como se comunicar entre controladores:
1.
Existem dois métodos para evento aqui. Um é scope.scope.scope.emit e, em seguida, obtém parâmetros ouvindo o evento de root S cope; rootScope para obter parâmetros. O outro é o evento de rootScope para obter parâmetros; o outro é rootScope.broadcast, que obtém parâmetros ouvindo a transmissão e ouvindo os eventos do escopo.
Não há diferença de desempenho entre esses dois métodos na versão mais recente do Angular. O principal motivo é que a direção do envio do evento pode ser escolhida de acordo com a situação real.
2. O serviço
pode criar um serviço de evento dedicado, ou pode ser dividido de acordo com a lógica de negócios e armazenar os dados no serviço correspondente.
3.
O método $rootScope pode ser um pouco sujo, mas é mais conveniente, ou seja,. os dados são armazenados na raiz S cope, de modo que em cada sub-rootScope, então em cada sub-rootScope, para que cada sub-escopo possa ser chamado, mas você precisa prestar atenção ao ciclo de vida
4. Use diretamente o escopo .scope.scope.$nextSibling e propriedades semelhantes
. Este método tem mais desvantagens, oficialmente não é recomendado usar nenhum atributo começando com $$, o que não apenas aumenta o acoplamento, mas também requer lidar com problemas assíncronos, e a ordem dos escopos não é fixa. Não é recomendado
passar parâmetros através de armazenamento local, variáveis globais ou postMessage em navegadores modernos. A menos que haja circunstâncias especiais, evite este método.
15. Vários parâmetros de instruções personalizadas
Resposta:
Vamos falar sobre alguns comumente usados, como:
restringir: forma de declaração da instrução no modelo dom E (elemento) A (atributo) C (nome da classe) M (comentário)
: dois formulários, um tipo de texto HTML; uma função que aceita dois parâmetros, tElemetn e tAttrs, e retorna uma string representando o modelo. A string do modelo deve ter um elemento DOM raiz
templateUrl: dois formulários, um é uma string que representa o caminho do arquivo HTML externo, uma função que pode aceitar dois parâmetros, os parâmetros são tElement e tAttrs, e retorna os caracteres do HTML externo; caminho do arquivo
Compilação de string (objeto ou função): A opção de compilação pode retornar um objeto ou função. Se a função de compilação estiver definida, significa que queremos executar operações DOM antes que instruções e dados em tempo real sejam colocados no DOM. É seguro executar operações DOM, como adicionar e excluir nós nesta função. Essencialmente, quando definimos a opção link, na verdade criamos uma função de link postLink() para que a função compile() possa definir a função de link.
Depois, há o portal: http://www.cnblogs.com/mliudong/p/4180680.html
A diferença entre compilar e vincular:
ao compilar, compilar converte o dom e salva-o primeiro quando encontra o local onde o ouvinte é vinculado. Vários são salvos e, finalmente, são resumidos em uma função de link e executados em conjunto, o que melhora o desempenho.
16. A resposta para a diferença entre angular e jquery
:
angular é baseado em dados, então angular é adequado para projetos com operações de dados complicadas (aqui você pode mencionar aplicativos de página única novamente, se não souber como fazer isso, os benefícios estão aqui novamente http://www.zhihu .com/question/20792064)
jquery é baseado no driver dom jquery é adequado para projetos com muitas operações dom
17. Quanto você sabe sobre o formulário em
.angular?
Resposta:
Angular expandiu o tipo de elementos de entrada e fornece um total dos 10 tipos a seguir:
texto
número
url
caixa de
seleção
botão
oculto
enviar
redefinição
Angular tem 4 estilos CSS integrados para o formulário.
ng-valid verifica o estado legal
ng-invalid verifica o estado ilegal
ng-pristine Se você quiser usar o formulário nativo, você precisa definir este valor
ng-dirty O formulário está no estado de dados sujos.
Angular verificará o modelo quando
.verificando automaticamente o formulário Se o modelo ng não estiver definido, o Angular não poderá saber se o valor de myForm.$invalid é verdadeiro.
O conteúdo necessário para verificação
indica se deve inserir o conteúdo
ng-maxlength, comprimento máximo
ng-minlength, comprimento mínimo
Exemplo: Portal https://github.com/18500047564/clutter
18. O que é filtro? Implemente uma resposta de filtro personalizada
:
data (data)
moeda (moeda)
limitTo (limitar o comprimento de uma matriz ou string)
orderBy (classificar)
minúsculas (minúsculas)
maiúsculas (maiúsculas)
número (formatar um número, adicionar um separador de milhares e Receber parâmetros limitam o número de pontos decimais)
filter (processar um array, filtrar elementos contendo uma determinada substring)
json (formatar objeto json)
Existem duas maneiras de usar o filtro,
uma delas é diretamente na página:
<p>{{now | date : 'yyyy-MM-dd'}}</p>
A outra é usá-lo em js:
$filter('filter name')(objeto a ser filtrado, parâmetro 1, parâmetro 2,...) $filter('date')(now, 'yyyy-MM-dd hh:mm:ss');
Personalize uma matriz de desduplicação
app.filter("unique", function() { função de retorno(arr) { var n = []; var obj = {}; for (var i = 0; i < arr.length; i++) { se (!obj[arr[i]]) { n.push(arr[i]); obj[arr[i]] = 1; } } retornar n; }; });