You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
HelloJS 3.0.0 chapter 8 (big things have small beginnings)
respondam a chamada
criem o repositório hellojs-s03e08 na conta github de vocês
papo bem metafísico hoje
Agenda
boas práticas e padrões de projeto em javascript - 25m
projeto showcase de trabalho - 65m
Boas práticas
papo meio esteticista
Os nomes das variáveis e funções
// OKconstvaloratual=xconstnovovalor=x*2
// OKconstvalorAtual=xconstnovoValor=x*2
// OKconstvalor_atual=xconstnovo_valor=x*2
// DON'Tconstvalor_atual=xconstnovoValor=x*2
mantenha a coesão de estilo
decida no começo do projeto
e mantenha o que já estiver
Os nomes das classes
ClasseNomeieComCamelCase
Os nomes dos arquivos
os-arquivos-nomeie-assim.js (GOOD)
f0003-listagem-de-pedidos.vue (BETTER)
As pastas
agrupe as funcionalidades (features)
agrupe os componentes reutilizáveis (components)
Documentação básica
README.md com
contato do(s) autor(es)
requisitos de sistema
compatibilidade entre plataformas
instruções básicas de execução
Mais de um projeto no sistema
coloque-os no mesmo repositório
coesão entre as versões
vende a ideia correta de conjunto
Os exports são no fim do arquivo!
em seus módulos (arquivos), os exports devem ser no fim do arquivo
evitar referências cíclicas imediatas
// src/components/module-a.jsconstfoo=_=>"foo"constbar=require("./module-b").barconstvish=_=>bar()exports.foo=fooexports.vish=vish// src/components/module-b.jsconstfoo=require("./module-a").foo()// VERY BADconstbar=_=>console.log("bar: %s",foo)exports.bar=bar// src/main.jsconstm1=require("./components/module-a")m1.vish()// erro
saída:
[sombriks@ramza s03e08]$ node main.js
/home/sombriks/Documentos/s03e08/components/module-b.js:3
const foo = require("./module-a").foo() // BAD
^
TypeError: require(...).foo is not a function
at Object.<anonymous> (/home/sombriks/Documentos/s03e08/components/module-b.js:3:35)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/home/sombriks/Documentos/s03e08/components/module-a.js:3:34)
at Module._compile (module.js:570:32)
não é que foo não seja uma função, mas na hora que o modulo-b faz a busca por foo, ele ainda não foi exportado.
// tests/f0002-pedidos.jsconstchai=require('chai');constpedidos=require("../src/features/pedidos")chai.should()// http://chaijs.com/guide/styles/#shoulddescribe("Teste de pedidos",_=>{letidpedidoit("Deveria criar um novo pedido",done=>{pedidos.insert({dscpedido:"10 biscoitos bono"}).then(ret=>{ret.should.have.property("idpedido")idpedido=ret[0]done()}).catch(err=>{done(err)})})// ... })
O Desafio Final
monte um projeto para ser o seu showcase de habilidades fullstack com nodejs
sabe o projeto documentado no episódio 7? é hora de implementar ele!
use sua própria documentação de referência para criar o sistema
garanta a rastreabilidade
uma feature documentada corresponde a uma feature implementada