-
Criar Estrutura de Pastas
- criar pasta raiz com o nome de jsecommerce
- adicionar pasta de frontend e backend
- criar pasta /src e outra com o nome de /public na pasta frontend
- crie index.html com o título jsecommerce em /public
- TERMINAL: execute npm init na pasta frontend
- TERMINAL: npm install -D live-server
- JSON: adicione o comando start como live-server src --verbose
- TERMINAL: execute npm start
- verificar o resultado
-
Design Website
- CSS: criar style.css
- HTML: vincule style.css a index.html
- HTML: criar div.grid-container
- HTML: criar header, main e footer
- CSS: estilizar html, body
- CSS: estilizar .grid-container, header, main e footer
-
Criar tela inicial estática
- HTML: criar ul.products
- HTML: criar li
- HTML: criar div.product
- HTML: adicionar .product-image, .product-name, .product-brand, .product-price
- CSS: estilIZAR ul.products e divs internos
- HTML: duplique 2 vezes para mostrar 3 produtos
-
Renderizar tela inicial dinâmica
- JS: criar data.js
- JS: exporte uma variedade de 6 produtos
- JS: criar screens/HomeScreen.js
- JS: exportar HomeScreen como um objeto com o método render()
- JS: implementar render()
- JS: import data.js
- JS: retornar produtos mapeados para as li's dentro da ul
- JS: criar app.js
- HTML: vincule-o a index.html como módulo
- HTML: definir id principal para main-container
- JS: criar função de router()
- JS: defina main_container innerHTML para HomeScreen.render ()
- JS: definir o evento load do objeto window para a função do router()
-
Construir roteador de URL
- JS: criar rotas como rota: objeto de tela para tela inicial
- JS: criar utils.js
- JS: export parseRequestURL()
- JS: definir url como endereço hash dividido por barra
- JS: recurso de retorno, id e verbo do url
- JS: atualizar router()
- JS: definir a solicitação como parseRequestURL()
- JS: construir parsedUrl e comparar com rotas
- JS: se a rota existe, renderiza-a, senão renderiza Error404
- JS: criar telas / Error404.js e renderizar mensagem de erro
-
Criar servidor Node.JS
- Criar a pasta jsecommerce/backend
- TERMINAL: cd backend
- TERMINAL: execute npm init na pasta raiz jsecommerce/backend
- TERMINAL: npm install express
- criar backend/server.js
- JSON: adicione o comando start como node server.js em package.json
- JS: require express
- mover data.js de /frontend para /backend
- JS: criar rota para /api/produtcs
- JS: retornar produtcs em data.js
- TERMINAL: execute npm start
-
Carregar produtos do back-end
- JS: editar HomeScreen.js
- tornar a renderização de HomeScreen.js assíncrona
- buscar produtos de '/api/produtcs' em render()
- tornar o route() assíncrono e aguardar a chamada HomeScreen.render()
- usar cors no backend
- verifique o resultado
-
Adicionar Webpack
- TERMINAL: cd frontend
- TERMINAL: npm install -D webpack webpack-cli webpack-dev-server
- TERMINAL: npm uninstall live-server
- JSON: "start": "webpack serve --mode development --open"
- mover index.html, style.css e imagens para a pasta frontend/public
- renomear app.js para index.js
- HTML: atualizar index.html
- HTML: adicione o <script src="main.js" defer></script>
- TERMINAL: npm start
- TERMINAL: npm install axios
- JS: alterar fetch para axios na HomeScreen.js
-
Instalação Babel para usar a sintaxe do ES6
- TERMINAL: npm install -D babel core cli node preset-env
- Crie .babelrc e configure as predefinições para @babel/preset-env
- TERMIAL: npm install -D nodemon
- JSON: Defna o script "start": "nodemon --watch --exec babel-node server.js"
- JS: converter require para import em server.js
- TERMINAL: npm start