Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AngularJS: Começando do Jeito Certo

AngularJS: Começando do Jeito Certo

Um conjunto de recomendações para quem está iniciando com AngularJS e/ou desenvolvimento de Web Apps/SPAs, baseadas em boas práticas da comunidade, acertos e erros do autor, e lições aprendidas enquanto trabalhando com AngularJS.

A set of recommendations for those starting w/ AngularJS and/or development of Web Apps/SPAs, based on community best practices, author's trials and errors, and lessons learned while working w/ AngularJS.

Joel Jucá

March 12, 2016
Tweet

More Decks by Joel Jucá

Other Decks in Technology

Transcript

  1. componentes angular • Modules ◦ Controllers ◦ Directives ◦ Providers

    (services, factories, constants, etc.) ◦ Filters, etc.
  2. • TLDR: para Web apps! • Ao lidar com dados

    + contextos (usuário autenticado, cotação de moedas, previsão do tempo, etc.). quando usar angular?
  3. • TLDR: para Web apps! • Ao lidar com dados

    + contextos (usuário autenticado, cotação de moedas, previsão do tempo, etc.). • Quando você não precisa/depende de SEO. quando usar angular?
  4. • TLDR: para Web apps! • Ao lidar com dados

    + contextos (usuário autenticado, cotação de moedas, previsão do tempo, etc.). • Quando você não precisa/depende de SEO. • Ex.: agenda de contatos, cliente de e-mail, app financeira, etc. quando usar angular?
  5. • Um repositório Git dedicado ao projeto Angular ▪ Incentiva

    o desacoplamento adequado (o maior/melhor benefício dos frameworks SPAs!) versionamento (git)
  6. • Um repositório Git dedicado ao projeto Angular ▪ Incentiva

    o desacoplamento adequado (o maior/melhor benefício dos frameworks SPAs!) ▪ Documentação específica pro projeto versionamento (git)
  7. • Um repositório Git dedicado ao projeto Angular ▪ Incentiva

    o desacoplamento adequado (o maior/melhor benefício dos frameworks SPAs!) ▪ Documentação específica pro projeto ▪ Testes e todo o resto adequadamente separados versionamento (git)
  8. • Um repositório Git dedicado ao projeto Angular ▪ Incentiva

    o desacoplamento adequado (o maior/melhor benefício dos frameworks SPAs!) ▪ Documentação específica pro projeto ▪ Testes e todo o resto adequadamente separados ▪ Processo de deploy separado, e simplificado versionamento (git)
  9. • Documentar é caro; não documentar é ainda mais! •

    Use e abuse do readme.md! documentação
  10. documentação • Documentar é caro; não documentar é ainda mais!

    • Use e abuse do readme.md! • Use JSDoc para coisas não tão óbvias
  11. • Descrição do projeto, cliente e seus objetivos • Mapa

    de navegação documentação: readme.md
  12. • Descrição do projeto, cliente e seus objetivos • Mapa

    de navegação • Instruções de uso e contribuição documentação: readme.md
  13. • Descrição do projeto, cliente e seus objetivos • Mapa

    de navegação • Instruções de uso e contribuição ▪ Como preparar o ambiente ▪ Como instalar ▪ Como fazer builds ▪ Como rodar ▪ Como testar documentação: readme.md
  14. • Desenvolvedores devem saber ler código • Pequenas descrições não

    tomam tempo e ajudam um bocado! documentação: jsdoc
  15. • Desenvolvedores devem saber ler código • Pequenas descrições não

    tomam tempo e ajudam um bocado! ▪ /** * A high-level interface for user-related * operations against our HTTP API. */ angular.module('mymodule').service('User', User); documentação: jsdoc
  16. • Desenvolvedores devem saber ler código • Pequenas descrições não

    tomam tempo e ajudam um bocado! ▪ /** * A high-level interface for user-related * operations against our HTTP API. */ angular.module('mymodule').service('User', User); • Links para documentação, bons artigos, exemplos, etc. documentação: jsdoc
  17. • Separe o código-fonte do build ▪ Use compiladores/transpiladores ▪

    Use linters, preprocessadores, etc. código-fonte
  18. • Separe o código-fonte do build ▪ Use compiladores/transpiladores ▪

    Use linters, preprocessadores, etc. ▪ Use aquilo que te tornar mais produtivo! código-fonte
  19. • Separe o código-fonte do build ▪ Use compiladores/transpiladores ▪

    Use linters, preprocessadores, etc. ▪ Use aquilo que te tornar mais produtivo! • Automatize tarefas com Grunt/gulp/Shell/whatever código-fonte
  20. código-fonte • Separe o código-fonte do build ▪ Use compiladores/transpiladores

    ▪ Use linters, preprocessadores, etc. ▪ Use aquilo que te tornar mais produtivo! • Automatize tarefas com Grunt/gulp/Shell/whatever • Adote um Style Guide (Eu uso o do John Papa)
  21. • Aprendam task runners! (Grunt, gulp, etc.) • Aprendam task

    runners!!!11 • Shell vs Grunt vs gulp vs [PUT YOUR TASK RUNNER HERE] workflow
  22. • Aprendam task runners! (Grunt, gulp, etc.) • Aprendam task

    runners!!!11 • Shell vs Grunt vs gulp vs [PUT YOUR TASK RUNNER HERE] ▪ ¬¬ workflow
  23. • Aprendam task runners! (Grunt, gulp, etc.) • Aprendam task

    runners!!!11 • Shell vs Grunt vs gulp vs [PUT YOUR TASK RUNNER HERE] ▪ ¬¬ ▪ ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ workflow
  24. • Aprendam task runners! (Grunt, gulp, etc.) • Aprendam task

    runners!!!11 • Shell vs Grunt vs gulp vs [PUT YOUR TASK RUNNER HERE] ▪ ¬¬ ▪ ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ • Use e abuse dos scripts npm! workflow
  25. • no seu package.json: { (configs do projeto, etc...) "scripts":

    { "start": "node dev-server.js", "build": "gulp build", "watch": "gulp watch" } workflow: scripts npm
  26. • No seu terminal: ◦ $ npm start (Inicia o

    servidor de desenvolvimento) workflow: scripts npm
  27. • No seu terminal: ◦ $ npm start (Inicia o

    servidor de desenvolvimento) ◦ $ npm run build (Faz o build do projeto) workflow: scripts npm
  28. • No seu terminal: ◦ $ npm start (Inicia o

    servidor de desenvolvimento) ◦ $ npm run build (Faz o build do projeto) ◦ $ npm run your-custom-command-here workflow: scripts npm
  29. • No seu terminal: ◦ $ npm start (Inicia o

    servidor de desenvolvimento) ◦ $ npm run build (Faz o build do projeto) ◦ $ npm run your-custom-command-here ◦ E por aí vai... workflow: scripts npm
  30. • { (configs do projeto, etc...) "scripts": { "start": "node

    dev-server.js", "build": "gulp build", "watch": "gulp watch" } workflow: scripts npm
  31. • { (configs do projeto, etc...) "scripts": { "start": "node

    dev-server.js", "build": "gulp build", "watch": "gulp watch", "build:html": "gulp build:html", "build:css": "gulp build:css", "build:js": "gulp build:js" } workflow: scripts npm
  32. • { (configs do projeto, etc...) "scripts": { "start": "node

    dev-server.js", "build": "gulp build", "watch": "gulp watch", "build:html": "gulp build:html", "build:css": "gulp build:css", "build:js": "gulp build:js", "watch:*": "gulp watch:*" <=== Repita as variações de build aqui } workflow: scripts npm