Code Monkey home page Code Monkey logo

projeto-angular-cli-nodejs's Introduction

Projeto: Criação de aplicação de Gerenciamento de Cursos com Angular + NodeJS

  • O intuito do projeto é criar uma aplicação de gerenciamento de cursos com Angular8 + NodeJS. Será utilizado uma api interna, que terá os cursos cadastrados. Essa api estará armazenada no proprio projeto (na pasta server do backend nodejs) e essa api será consumida para ser carregada no site os cursos que estão cadastrados. No projeto será simulado requisições http (put, post, get, delete) utilizando o nodejs como servidor backend. As requisições http apenas funcionará se o servidor BackEnd NodeJs estiver iniciado. Quando o servidor BackEnd for desativado, as requisições que foram realizadas no site serão descartadas.

Ferramentas Utilizadas

IDE:
  • VSCode (ou alguma de sua preferencia)
NODEJS:
  • Utilizei a versão v14.15.4. Mas pode ser a ultima disponivel no site (Versão LTS). Abaixo link para download: https://nodejs.org/en/
TYPESCRIPT
  • O Angular usa a linguagem TypeScript como padrão, ao invés do JavaScript. Não é necessario instalar o typescript, pois vem junto com o angular. Foi usado os conceitos typescript para tipar as variaveis.
ANGULAR CLI
  • Link de referencia: https://cli.angular.io/

  • Comando para instalar o angular: $npm install -g @angular/cli

  • Comando para verificar versao do angular apos instalacao: $ng version

  • Para criar novo projeto angular, execute o comando abaixo. Será criado a estrutura de pastas padrão do angular: $ng new 'nome-do-projeto'

  • Depois terá tres perguntas:

    Pergunta1: Do you want to enforce stricter type checking and stricter bundle budgets in the workspace? This setting helps improve maintainability and catch bugs ahead of time. For more information, see https://angular.io/strict $A primeira escolhi 'y'

    Pergunta2: Would you like to add Angular routing? $A segunda escolhi 'n' para nao criar a rota. No projeto a rota foi criada posteriormente.

    Pergunta3: Which stylesheet format would you like to use? $A terceira escolhi 'CSS'

  • Para iniciar o projeto informe o comando abaixo. Detalhe: Enquanto estiver codificando o codigo, para visualizar as alterações no navegador, necessario que o servidor do angular esteja iniciado com o comando abaixo. $ng serve

  • Por padrão o angular utiliza a porta 4200, acesse o endereço abaixo para verificar a pagina inicial. Nessa pagina inicial é possivel acessar a documentação do angular. http://localhost:4200/

BOOTSTRAP
  • Comando para instalar no projeto: $npm install bootstrap
FONT-AWESOME
  • O Font Awesome é um conjunto de ícones baseados em webfont e CSS, lançado em 2012 pelo desenvolvedor Dave Gandy. A proposta é carregar uma webfont sem precisar utilizar icones salvos no projeto. Nesse projeto o font-awesome esta sendo utilizado para os icones do componente 'star' (os icones das estrelas serão carregados pelo font-awesome). Abaixo o comando para instalar no projeto: $npm install font-awesome

Conceitos Utilizados

  • Criação de modulos e componentes.

  • Uso do 'Two-way Data Binding', no campo pesquisar. No codigo utiliza os colchetes e parenteses [()], para envio dos dados em mao dupla, ou seja, é quando quer exibir e alterar o valor da propriedade, de forma que irá se propagar todas as referencias dessa variavel.

  • Injeção De Dependência.

  • Utilização de Pipes para alterar os valores dos campos ( | ).

  • Criação de Rotas para navegar entre os componentes.

  • Criaçao de templates.

  • Utilização de Formularios, Variaveis de Templates (representado com simbolo #).

  • ngClass - para criação de classes dinamicas.

  • ng-model: vincula o valor dos controles html (input, select, textarea) aos dados do aplicativo, ou seja, com ng-model é possivel vincular o valor de um campo de entrada a uma variavel criada no Angular.

  • Construir um serviço.

  • Recuperar Requisições em HTTP com NodeJS + Express (BackEnd). Fora da pasta do projeto foi criado uma pasta de nome 'server', e dentro dessa pasta foi criado uma outra pasta com o nome 'course-manager-server'. O intuito de criar esse diretorio, foi para separar o servidor backend nodejs, do projeto principal. (' .\servers\course-manager-server ') . Dentro da pasta 'course-manager-server', foi criado o arquivo 'server.js' e dentro do arquivo, foi criado as rotas para fazer as requisições de back-end. E ainda dentro dessa mesma pasta 'course-manager-server' foi criado o arquivo 'package.json', e adicionado os comandos abaixo:

{
  "name": "course-manager-server",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cors": "^2.8.5",
    "express": "^4.17.1"
  }
}
  • Dentro da pasta do backend, (' .\servers\course-manager-server '), execute o comando abaixo, para instalar as dependecias do backend. Detalhe: as dependencias serão instaladas de acordo com o que consta no arquivo 'package.json', que esta dentro do novo diretorio que foi criado ('.\servers\course-manager-server'). $npm install

  • Para iniciar o servidor backend do nodejs, utilize o comando abaixo. Deverá aparecer uma mensagem de 'Server Starded!' . Detalhe: Nao foi utilizado banco de dados, para testes, foi utilizado o nodejs, para simular as requisições http (put, post, get, delete). As requisições http apenas funcionará se o servidor BackEnd NodeJs estiver iniciado. Quando o servidor BackEnd for desativado, as alterações que foram realizadas no site serão descartadas. $node serve.js

  • Uso do RXJS Observable: O Observable é uma funcionalidade da biblioteca do rxjs, que é instalada quando se cria uma nova aplicação do angular. Com seu uso, é possivel lidar com transferencia de dados assincrona, algo que em muitas vezes é semelhante as Promisses do Javascript.

  • Segregrando Aplicação em Modulos: Utilizado o forChild: O forChild é utilizado em modulos filhos. Isso diferencia do modulo Pai, que no projeto, o arquivo pai, é o arquivo 'app.module.ts'

    Criado Pasta Shared: Nessa pasta foi armazenada os componentes pequenos e genericos, que podem ser compartilhados com outros modulos.

    Criado Pasta Core: Nessa pasta foi armazenado componentes relacionado a regra do negocio ou que tem amarração maior com outros componentes que não são tão genericos, ou componente que são mais dificieis de serem compartilhados devido ao seu contexto especifico.

  • Tratamento de Erros no Angular

Link de referencia:

projeto-angular-cli-nodejs's People

Contributors

camila-github avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.