├── README.md ├── babel ├── .babelrc ├── .gitignore ├── dist │ ├── crud.html │ ├── css │ │ └── bootstrap.min.css │ ├── index.html │ ├── index.js │ ├── js │ │ ├── bootstrap.min.js │ │ ├── jquery-3.3.1.min.js │ │ ├── js.js │ │ └── popper.min.js │ └── listagem-table.html ├── package-lock.json ├── package.json └── src │ └── index.js ├── bootstrap-index ├── crud.html ├── css │ └── bootstrap.min.css ├── index.html ├── js │ ├── bootstrap.min.js │ ├── jquery-3.3.1.min.js │ ├── js.js │ └── popper.min.js └── listagem-table.html ├── projeto-piloto ├── rest-api │ ├── .gitignore │ ├── api.js │ ├── banco │ │ ├── banco.xml │ │ ├── dbconexao.js │ │ └── script-popular.sql │ ├── model │ │ ├── PortfolioModel.js │ │ └── RespostaClass.js │ ├── package-lock.json │ ├── package.json │ └── router │ │ └── portfolioRouter.js ├── roteiro.js └── web-app │ ├── .babelrc │ ├── .gitignore │ ├── dist │ ├── bundle │ │ ├── babelpolyfill.bundle.js │ │ ├── css.css │ │ ├── index.bundle.js │ │ ├── indexController.bundle.js │ │ └── portfolioController.bundle.js │ ├── index.html │ └── view │ │ └── portfolio │ │ └── crud.html │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── ConfigClass.js │ ├── controllers │ │ ├── IndexController.js │ │ └── PortfolioController.js │ ├── css │ │ └── base.css │ ├── index.js │ ├── models │ │ └── portfolio │ │ │ ├── PortfolioClass.js │ │ │ └── PortfolioModel.js │ └── scss │ │ ├── _variaveis.scss │ │ └── base.scss │ └── webpack.config.js ├── projeto-portfolio ├── rest-api │ ├── .gitignore │ ├── api.js │ ├── banco │ │ ├── banco.xml │ │ ├── dbConexao.js │ │ ├── script-popular.sql │ │ └── script_tab.sql │ ├── model │ │ ├── RespostaClass.js │ │ └── portfolio │ │ │ └── PortfolioModel.js │ ├── package-lock.json │ ├── package.json │ └── router │ │ └── portfolioRouter.js └── web-app │ ├── .babelrc │ ├── .gitignore │ ├── dist │ ├── bundle │ │ ├── babelpolyfill.bundle.js │ │ ├── css.css │ │ ├── index.bundle.js │ │ ├── indexController.bundle.js │ │ └── portfolioController.bundle.js │ ├── index.html │ └── view │ │ └── portfolio │ │ └── crud.html │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── ConfigClass.js │ ├── controllers │ │ ├── IndexController.js │ │ └── PortfolioController.js │ ├── css │ │ └── base.css │ ├── index.js │ ├── models │ │ └── portfolio │ │ │ ├── PortfolioClass.js │ │ │ └── PortfolioModel.js │ └── scss │ │ ├── _variaveis.scss │ │ └── base.scss │ └── webpack.config.js ├── template-html ├── crud.html ├── css │ └── bootstrap.min.css ├── index.html ├── js │ ├── bootstrap.min.js │ ├── jquery-3.3.1.min.js │ ├── js.js │ └── popper.min.js └── listagem-table.html └── webpack ├── .babelrc ├── .gitignore ├── dist ├── bundle.js ├── bundle │ ├── babelpolyfill.bundle.js │ ├── css.css │ ├── index.bundle.js │ ├── vendors~babelpolyfill.bundle.js │ └── vendors~index.bundle.js ├── crud.html ├── css │ └── bootstrap.min.css ├── index.html ├── js │ ├── bootstrap.min.js │ ├── jquery-3.3.1.min.js │ ├── js.js │ └── popper.min.js └── listagem-table.html ├── package-lock.json ├── package.json ├── src ├── cliente-class.js ├── css │ └── base.css ├── index.js ├── instancia-cliente.js ├── promise.js └── scss │ ├── _variaveis.scss │ └── base.scss └── webpack.config.js /README.md: -------------------------------------------------------------------------------- 1 | # Projeto RESTFul CRUD + JavaScript + NodeJs + Express + MySQL 2 | 3 | Criei um projeto Web completo com Home Page e CRUD com Bootstrap, JavaScript ES6, Node, Express, MySQL, Webpack, Babel.. 4 | 5 | O desenvolvimento Web tem crescido a passos largos com surgimento de diversas tecnologias baseadas em JavaScript, sendo de grande importância o surgimento do NodeJs, no qual esta se popularizando no mercado e nos possibilita desenvolver com JavaScript no lado servidor Back-end. 6 | 7 | Com a gama de frameworks JavaScript front-end e back-end o desenvolvedor deve aprimorar seus conhecimentos em JavaScript moderno ES6 e ESNext, podendo desenvolver aplicações Web sofisticadas e escaláveis através do uso do NodeJs e SPA (Single Page Application) no Front-end com requisições Ajax. 8 | 9 | Com a popularidade do NodeJs, o Express Middleware, que trata requisições e repostas em servidores Node, mostrou-se eficiente para criação de aplicações Web e API RESTFul, no qual fazemos uso neste curso. -------------------------------------------------------------------------------- /babel/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "env", 5 | { 6 | "targets": { 7 | "browsers": [ 8 | "last 3 versions", 9 | "ie >= 8" 10 | ] 11 | } 12 | } 13 | ] 14 | ] 15 | } -------------------------------------------------------------------------------- /babel/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules -------------------------------------------------------------------------------- /babel/dist/crud.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |Id | 66 |Nome | 67 |Rua | 68 |Id | 69 |Nome | 70 |Rua | 71 |Id | 72 |Nome | 73 |Rua | 74 |75 | |
---|---|---|---|---|---|---|---|---|---|
10 | 80 |Pedro | 81 |Rua A | 82 |10 | 83 |Pedro | 84 |Rua A | 85 |10 | 86 |Pedro | 87 |Rua A | 88 |89 | |
11 | 92 |Maria | 93 |Rua B | 94 |11 | 95 |Maria | 96 |Rua B | 97 |11 | 98 |Maria | 99 |Rua B | 100 |101 | |
13 | 104 |João | 105 |Rua C | 106 |13 | 107 |João | 108 |Rua C | 109 |13 | 110 |João | 111 |Rua C | 112 |113 | |
14 | 116 |Francisco | 117 |Rua A | 118 |14 | 119 |Francisco | 120 |Rua A | 121 |14 | 122 |Francisco | 123 |Rua A | 124 |125 | |
Id | 66 |Nome | 67 |Rua | 68 |Id | 69 |Nome | 70 |Rua | 71 |Id | 72 |Nome | 73 |Rua | 74 |75 | |
---|---|---|---|---|---|---|---|---|---|
10 | 80 |Pedro | 81 |Rua A | 82 |10 | 83 |Pedro | 84 |Rua A | 85 |10 | 86 |Pedro | 87 |Rua A | 88 |89 | |
11 | 92 |Maria | 93 |Rua B | 94 |11 | 95 |Maria | 96 |Rua B | 97 |11 | 98 |Maria | 99 |Rua B | 100 |101 | |
13 | 104 |João | 105 |Rua C | 106 |13 | 107 |João | 108 |Rua C | 109 |13 | 110 |João | 111 |Rua C | 112 |113 | |
14 | 116 |Francisco | 117 |Rua A | 118 |14 | 119 |Francisco | 120 |Rua A | 121 |14 | 122 |Francisco | 123 |Rua A | 124 |125 | |
'+c.detalhes+"
\n${servico.detalhes}
30 |Id | 32 |Descrição | 33 |34 | | 35 | |
---|---|---|---|
${servico.id_portfolio} | 42 |${servico.descricao} | 43 |46 | | 49 | |
\" + servico.detalhes + \"
\\n${servico.detalhes}
27 |Código | 32 |Descrição | 33 |34 | | 35 | 36 | |
---|---|---|---|
${servico.id_portfolio} | 42 |${servico.descricao} | 43 |44 | | 45 | |
Id | 66 |Nome | 67 |Rua | 68 |Id | 69 |Nome | 70 |Rua | 71 |Id | 72 |Nome | 73 |Rua | 74 |75 | |
---|---|---|---|---|---|---|---|---|---|
10 | 80 |Pedro | 81 |Rua A | 82 |10 | 83 |Pedro | 84 |Rua A | 85 |10 | 86 |Pedro | 87 |Rua A | 88 |89 | |
11 | 92 |Maria | 93 |Rua B | 94 |11 | 95 |Maria | 96 |Rua B | 97 |11 | 98 |Maria | 99 |Rua B | 100 |101 | |
13 | 104 |João | 105 |Rua C | 106 |13 | 107 |João | 108 |Rua C | 109 |13 | 110 |João | 111 |Rua C | 112 |113 | |
14 | 116 |Francisco | 117 |Rua A | 118 |14 | 119 |Francisco | 120 |Rua A | 121 |14 | 122 |Francisco | 123 |Rua A | 124 |125 | |
Id | 66 |Nome | 67 |Rua | 68 |Id | 69 |Nome | 70 |Rua | 71 |Id | 72 |Nome | 73 |Rua | 74 |75 | |
---|---|---|---|---|---|---|---|---|---|
10 | 80 |Pedro | 81 |Rua A | 82 |10 | 83 |Pedro | 84 |Rua A | 85 |10 | 86 |Pedro | 87 |Rua A | 88 |89 | |
11 | 92 |Maria | 93 |Rua B | 94 |11 | 95 |Maria | 96 |Rua B | 97 |11 | 98 |Maria | 99 |Rua B | 100 |101 | |
13 | 104 |João | 105 |Rua C | 106 |13 | 107 |João | 108 |Rua C | 109 |13 | 110 |João | 111 |Rua C | 112 |113 | |
14 | 116 |Francisco | 117 |Rua A | 118 |14 | 119 |Francisco | 120 |Rua A | 121 |14 | 122 |Francisco | 123 |Rua A | 124 |125 | |