Mural de Rede Social Usando ASP.NET MVC e JavaScript – Parte 1
Mural de Rede Social Usando ASP.NET MVC e JavaScript – Parte 3
Nesta segunda parte do artigo será abordada em profundidade a utilização da biblioteca JavaScript chamada Knockout Js que é usada extensivamente na aplicação do exemplo e que permite a criação de interfaces web dinâmicas baseadas em modelos de dados. Ao longo do artigo veremos as principais características e recursos do com exemplos pontuais dos mesmos, além de comentar em que parte do projeto de exemplo do primeiro artigo estes recursos foram utilizados.
Em que situação o tema é útil
A biblioteca Knockout Js é útil na criação de interfaces HTML dinâmicas baseadas em objetos JavaScript que dispensam a manipulação direta de elementos da página para exibir ou coletar informações da interface do usuário.
No artigo da edição passada abordamos a criação de um mural de rede social utilizando a tecnologia de comunicação em tempo real chamada SignalR.Net. Nele mostramos como os clientes da aplicação se conectam ao servidor e assim passam a enviar e receber notificações em tempo real, tais como novos status e comentários que são postados na rede social.
Neste artigo vamos nos concentrar no estudo da biblioteca de renderização de interfaces web chamada Knockout Js, que foi brevemente descrita na última edição e que merece uma apresentação mais detalhada.
O que é Knockout Js?
O Knockout Js é uma biblioteca open-source criada em 2010 por Steve Sanderson, funcionário da Microsoft, como um projeto pessoal. Basicamente, o Knockout Js é uma implementação JavaScript do padrão de projeto MVVM (Model – View – ViewModel) que permite a criação de interfaces web ricas com base em um modelo de dados. Podemos utilizá-lo em qualquer parte da página que necessite de atualizações dinâmicas de seus elementos.
Podemos relacionar como características principais do Knockout Js:
· Rastreamento de dependências – Através da marcação dos elementos HTML o Knockout cria uma ligação entre estes elementos com propriedades do seu modelo, possibilitando que a view seja atualizada automaticamente quando os dados deste modelo forem alterados.
· Bindings declarativos – Através dos bindings, o Knockout Js fornece um modo simples de conectar elementos da view com o modelo. Com isso, podemos construir views complexas usando contextos de binding estruturados.
· Extensividade – Você pode implementar seus próprios behaviors (comportamentos) customizados com novos bindings.
O Knockout Js também possui os seguintes benefícios adicionais:
· É uma biblioteca de JavaScript – Por fazer uso apenas de instruções nativas do JavaScript, o Knockout Js funciona com qualquer servidor ou tecnologia client-side.
· Pode complementar sua aplicação web preexistente – Não importa se você já tem um projeto rodando, você pode passar a usar o Knockout Js sem a realização de grandes mudanças na sua arquitetura.
· Leve – Tem apenas 13kb após a compactação pelo GZip.
· Funciona com os principais navegadores – IE 6 ou superior, Firefox, Chrome, Safari, etc.
· Suíte de especificações abrangente – Criados no estilo BDD (Behavior Driven Design), os testes de unidade do Knockout Js podem ser facilmente verificados em novos navegadores e plataformas.
Quando se trata de adotar uma nova biblioteca de JavaScript em um sistema já estabelecido, uma das preocupações mais comuns de arquitetos de software é o possível conflito entre bibliotecas quando as mesmas são colocadas para trabalhar ao mesmo tempo. Felizmente é possível adicionar e utilizar Knockout Js em um projeto que já trabalha com jQuery, Mootools, Prototype ou qualquer outra biblioteca JavaScript de uso geral, sem qualquer conflito entre elas.
Outra preocupação de arquitetos e desenvolvedores de software é se o uso do Knockout Js não se torna redundante quando já estamos usando em nosso projeto uma biblioteca tão poderosa como o jQuery. A resposta é que não se torna redundante, pois cada um foi criado para resolver um problema específico. Quando se trata de manipulação de interface web e tratamento de eventos, a biblioteca jQuery é muito competente e substitui de forma magnífica o velho e inconsistente desenvolvimento baseado em API DOM (Nota do DevMan 1) que era necessário no passado. Para manipulação direta de elementos do DOM o jQuery é provavelmente a melhor biblioteca disponível na atualidade.
Programar diretamente para a API do DOM (Document Object Model) costuma ser uma grande dor de cabeça para desenvolvedores web. O maior problema é a inconsistência, já que alguns navegadores implementam a mesma funcionalidade através de métodos diferentes, forçando os desenvolvedores a detectar primeiro o navegador e só então executar o método apropriado.
Apesar destes benefícios, o desenvolvimento e manutenção de uma interface web rica pode se tornar uma tarefa árdua quando você só utiliza jQuery, pois você terá que implementar todas as funções para realização do bind dos dados do seu modelo para a view, considerando as diferentes características dos elementos HTML e de seus modelos de dados. Com o Knockout Js as coisas ficam mais simples, pois você precisa apenas marcar os elementos com a sua devida regra de bind e passar o modelo para o Knockout Js para que se encarregue de renderizar os dados na view.
Para ilustrar melhor vamos supor a seguinte especificação: ”Uma tela de pedidos com uma lista de itens e com um botão adicionar. Cada pedido tem um limite de cinco itens, então o botão adicionar deverá ser habilitado apenas quando o pedido possuir menos de cinco itens. Esta tela deverá ainda exibir o total de itens para o usuário.”.
Para implementar este requisito com jQuery teríamos que fazer um for no array de itens do pedido para então renderizarmos uma table HTML com os itens em questão. Teríamos ainda uma função para adicionar um novo item nesta lista que iria verificar se o número de itens é igual a 5 e então desabilitaria o botão Adicionar. Esta função teria ainda que contar o total de itens e atualizar esta informação em um elemento span para exibição ao usuário.
...Confira outros conteúdos:
Teste unitário com NUnit
Como migrar projetos do ASP.NET MVC...
Crie relatórios com o Stimulsoft...
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.