{"id":2698,"date":"2020-06-23T15:10:00","date_gmt":"2020-06-23T18:10:00","guid":{"rendered":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/?p=2698"},"modified":"2025-09-02T14:01:20","modified_gmt":"2025-09-02T17:01:20","slug":"ecossistema-javascript-2020","status":"publish","type":"post","link":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/2020\/06\/23\/ecossistema-javascript-2020","title":{"rendered":"Ecossistema JavaScript 2020"},"content":{"rendered":"\n<section id=\"h.6fd17a5b7a810754_5\" class=\"yaqOZd\">\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c\">\n<div id=\"h.6fd17a5b7a810754_10\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Essa semana teremos mais uma reda\u00e7\u00e3o sobre o nosso querido JavaScript! A linguagem tem recebido bastante aten\u00e7\u00e3o e carinho da comunidade nos \u00faltimos anos, por conta disso, o seu ecossistema tem se expandido cada vez mais. Antigamente utiliz\u00e1vamos o JavaScript para manipular elementos na nossa p\u00e1gina, hoje em dia temos\u00a0<em>frameworks<\/em>\u00a0consolidados, tanto no\u00a0<em>back-end<\/em>, quanto no\u00a0<em>front-end<\/em>, escritos nessa linguagem. No PET-Reda\u00e7\u00e3o dessa semana, vamos viajar no mundo do JavaScript e conhecer algumas das ferramentas mais utilizadas no desenvolvimento web.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_17\" class=\"yaqOZd\">\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_20\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.g1e4ein04iae\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\nDesde os tempos mais prim\u00f3rdios&#8230;<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.6fd17a5b7a810754_22\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Antes de mais nada, vamos lembrar o que \u00e9 o JavaScript, de onde veio, qual foi o seu prop\u00f3sito, etc.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">O JavaScript foi criado em 1995 por Brendan Eich com o prop\u00f3sito de embutir pequenos programas, ou\u00a0<em>scripts<\/em>, nas p\u00e1ginas\u00a0<em>web<\/em>, aumentando o seu dinamismo. Eich tinha o desafio de projetar uma linguagem que fosse flex\u00edvel, f\u00e1cil de aprender, ter um apelo popular e que fosse f\u00e1cil de implementar. Com esses requisitos em mente, n\u00e3o levou mais de 10 dias para que Brendan finalizasse o primeiro produto da linguagem, e na \u00e9poca a batizou de Mocha, nome que mais tarde seria trocado por JavaScript por quest\u00f5es de\u00a0<em>&#8220;marketing&#8221;<\/em>, pois na \u00e9poca o Java estava em alta.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">N\u00e3o, JavaScript n\u00e3o tem nada a ver com Java. A n\u00e3o ser o seu nome, que foi fortemente influenciado na sua publica\u00e7\u00e3o.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">O mercado est\u00e1 aquecido quando pensamos em JavaScript, por conta disso, o seu ecossistema tem crescido muito nos \u00faltimos anos. A popularidade da linguagem teve um salto depois da cria\u00e7\u00e3o e populariza\u00e7\u00e3o do Node.js, o\u00a0<em>runtime<\/em>\u00a0da linguagem que nos d\u00e1 possibilidade de executarmos c\u00f3digos JavaScript na nossa m\u00e1quina, via terminal, coisa que n\u00e3o era poss\u00edvel at\u00e9 ent\u00e3o.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">O Node.js \u00e9 um dos grandes marcos do JavaScript at\u00e9 hoje, pois foi a partir dele que come\u00e7amos a desenvolver solu\u00e7\u00f5es e\u00a0<em>frameworks<\/em>\u00a0apenas em JavaScript, construindo um ecossistema da linguagem.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">A defini\u00e7\u00e3o de um ecossistema, literalmente, \u00e9 um conjunto de comunidades que interagem entre si, constituindo um sistema est\u00e1vel, equilibrado e autossuficiente. Essa defini\u00e7\u00e3o comp\u00f5e exatamente o que tem sido a comunidade JavaScript nos \u00faltimos anos. Surgiram in\u00fameros\u00a0<em>frameworks<\/em>, bibliotecas, facilitadores e implementa\u00e7\u00f5es que fizeram com que a linguagem virasse independente na\u00a0<em>web<\/em>. Hoje em dia, podemos implementar uma solu\u00e7\u00e3o inteira, desde o\u00a0<em>back-end<\/em>, banco de dados at\u00e9 o\u00a0<em>front-end<\/em>\u00a0e realizar testes autom\u00e1ticos, apenas com JavaScript.<\/p>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.w0azapa2ymsn\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n&#8211;\u00a0<span class=\" OGiC0d\">Bizarro, n\u00e9?!<\/span><\/div>\n<p class=\"zfr3Q\" dir=\"ltr\">Esse ecossistema \u00e9 composto de\u00a0<em>frameworks<\/em>\u00a0<em>back-end, front-end,\u00a0<\/em>bancos de dados, gerenciadores de pacotes (<em>package managers<\/em>), ferramentas de testes (<em>testing tools<\/em>), ferramentas de composi\u00e7\u00e3o (<em>build automation tools<\/em>), podemos chamar tamb\u00e9m de gerenciadores de tarefas (<em>task managers\/task runners<\/em>), etc.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_117\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_120\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.rnz3yubugztd\" class=\"GV3q8e aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.rnz3yubugztd\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>Seu Ecossistema<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.6fd17a5b7a810754_122\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.lpku0q99feh2\" class=\"Ap4VC aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.lpku0q99feh2\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong><span class=\" RijTuc\">Front-End<\/span><\/strong><\/div>\n<div id=\"h.g2lk9cckd9a6\" class=\"GV3q8e aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.g2lk9cckd9a6\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<span class=\" OGiC0d\">Como os &#8220;Players&#8221; de 2020, o React e o Vue tomam a lideran\u00e7a, pois ambos t\u00eam recebido um carinho extra da comunidade nos \u00faltimos anos.<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_123\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-qWD73c purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_126\" class=\"hJDwNd-AhqUyc-qWD73c jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.ei7srbwqiu8t\" class=\"CobnVe aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.ei7srbwqiu8t\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>React<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-II5mzb purZT-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_129\" class=\"hJDwNd-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img fetchpriority=\"high\" decoding=\"async\" class=\"alignleft wp-image-2764 size-full\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js1.png\" alt=\"\" width=\"512\" height=\"512\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js1.png 512w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js1-300x300.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js1-150x150.png 150w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<p class=\"zfr3Q\" dir=\"ltr\">O\u00a0<em>framework<\/em>\u00a0foi criado por Jordan Walke em 2013, e hoje \u00e9 mantido pelo Facebook, o que j\u00e1 o atribui uma grande credibilidade.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">O React foi o pioneiro na utiliza\u00e7\u00e3o da Virtual DOM, o que faz a linguagem se destacar no cen\u00e1rio. A sua forma de renderiza\u00e7\u00e3o dos componentes \u00e9 definida por mudan\u00e7as nessa \u00e1rvore virtual, seja essa mudan\u00e7a apenas de algum valor na tela ou de propriedades como mostrar ou esconder esse componente, isso \u00e9 o que chamamos de estado.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">A curva de aprendizado do React \u00e9 bem inclinada, fazendo com que o <em>framework<\/em> n\u00e3o seja t\u00e3o f\u00e1cil para iniciantes em programa\u00e7\u00e3o <em>web<\/em>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_133\" class=\"yaqOZd\">\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-II5mzb purZT-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_142\" class=\"hJDwNd-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img decoding=\"async\" class=\" wp-image-2765 alignright\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js2-300x260.png\" alt=\"\" width=\"501\" height=\"434\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js2-300x260.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js2-1024x887.png 1024w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js2-768x666.png 768w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js2.png 1200w\" sizes=\"(max-width: 501px) 100vw, 501px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-qWD73c purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_136\" class=\"hJDwNd-AhqUyc-qWD73c jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div>\u00a0<\/div>\n<div>\u00a0<\/div>\n<div>\u00a0<\/div>\n<div class=\"CjVfdc\"><strong>Vue<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.6fd17a5b7a810754_138\" class=\"hJDwNd-AhqUyc-qWD73c jXK9ad D2fZ2 wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Muito parecido com o React, o Vue ganha destaque na sua simplicidade. O seu n\u00edvel de complexidade \u00e9 menor comparado ao\u00a0<em>framework<\/em>\u00a0anterior, o que faz com que sua curva de aprendizado seja mais suave.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">O Vue tamb\u00e9m se destaque quando falamos em migra\u00e7\u00e3o de sistemas, pois, segundo sua documenta\u00e7\u00e3o, o\u00a0<em>framework<\/em>\u00a0\u00e9 progressivo, ou seja, podemos ter apenas uma parte do nosso sistema rodando em Vue, enquanto outra parte est\u00e1 em c\u00f3digo legado, por exemplo.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Outro aspecto positivo do Vue \u00e9 a disponibiliza\u00e7\u00e3o de bibliotecas nativas para implementa\u00e7\u00e3o de regras de neg\u00f3cio como o Vue-Router, utilizado para manipular todo o roteamento das p\u00e1ginas da aplica\u00e7\u00e3o, como o Vuex, o gerenciador de estados do Vue.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_146\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_151\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.ti9sjp60oor3\" class=\"Ap4VC aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.ti9sjp60oor3\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>Back-End<\/strong><\/div>\n<div id=\"h.iahjjdx7mdre\" class=\"GV3q8e aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.iahjjdx7mdre\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<span class=\" OGiC0d\">O Express \u00e9 o queridinho quando falamos em\u00a0<\/span><span class=\" OGiC0d\"><em>Back-End<\/em><\/span><span class=\" OGiC0d\">, sua popularidade vem da facilidade em construirmos uma aplica\u00e7\u00e3o e a liberdade que temos para implementar a nossa aplica\u00e7\u00e3o. N\u00e3o menos importante, mas menos popular, temos o Adonis, um framework MVC que nos d\u00e1 possibilidade a possibilidade de utilizarmos apenas a estrutura de Models-Controllers para implementarmos o nosso\u00a0<\/span><span class=\" OGiC0d\"><em>Back-End<\/em><\/span><span class=\" OGiC0d\">.<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_152\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-II5mzb purZT-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_165\" class=\"hJDwNd-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img decoding=\"async\" class=\"size-medium wp-image-2766 alignright\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js3-300x108.jpg\" alt=\"\" width=\"300\" height=\"108\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js3-300x108.jpg 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js3.jpg 435w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/> <strong>Express<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-qWD73c purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c\">\n<div id=\"h.6fd17a5b7a810754_160\" class=\"hJDwNd-AhqUyc-qWD73c jXK9ad D2fZ2 wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Express foi desenvolvido com o objetivo de facilitar a constru\u00e7\u00e3o de APIs e aplica\u00e7\u00f5es\u00a0<em>web.<\/em>\u00a0Por conta da sua popularidade, hoje em dia \u00e9 conhecido como o\u00a0<em>framework<\/em>\u00a0padr\u00e3o quando queremos criar um servidor HTTP em Node.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_172\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_169\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">O facilitador do Express se d\u00e1 pela &#8220;tradu\u00e7\u00e3o&#8221; dos m\u00e9todos de cria\u00e7\u00e3o de um servidor HTTP em Node para uma sintaxe mais compreensiva e amig\u00e1vel ao desenvolvedor, por exemplo, ao inv\u00e9s de utilizarmos:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_184\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-OiUrBf purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_181\" class=\"hJDwNd-AhqUyc-OiUrBf jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2767 size-full\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js4.png\" alt=\"\" width=\"431\" height=\"99\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js4.png 431w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js4-300x69.png 300w\" sizes=\"(max-width: 431px) 100vw, 431px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_188\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_185\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Simplesmente utilizamos o express, dessa forma:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_192\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-c5RTEf JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-qWD73c purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_189\" class=\"hJDwNd-AhqUyc-qWD73c jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2768 size-full\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js5.png\" alt=\"\" width=\"325\" height=\"155\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js5.png 325w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js5-300x143.png 300w\" sizes=\"(max-width: 325px) 100vw, 325px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-c5RTEf JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_196\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_193\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Roteamento declarativo tamb\u00e9m \u00e9 um dos pontos positivos do Express, fazendo com que seja expl\u00edcito que tipo de servi\u00e7o temos na nossa rota e como podemos acessar, com qual verbo HTTP ela ser\u00e1 requisitada.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_197\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-OwsYgb purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_203\" class=\"hJDwNd-AhqUyc-OwsYgb jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.hsajam2cuku3\" class=\"CobnVe aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.hsajam2cuku3\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>Adonis<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-II5mzb purZT-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_206\" class=\"hJDwNd-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2769 alignleft\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js6.png\" alt=\"\" width=\"400\" height=\"353\" \/>\n<p class=\"zfr3Q\" dir=\"ltr\">Por outro lado, temos o Adonis, um\u00a0<em>framework<\/em>\u00a0mais robusto, com uma estrutura baseada no Laravel,\u00a0<em>framework<\/em>\u00a0MVC em PHP. Sua sintaxe \u00e9 bem semelhante, com pequenas diferen\u00e7as do Laravel.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">O Adonis disp\u00f5e de uma CLI,\u00a0<em>Command Line Interface<\/em>, muito \u00fatil quando estamos no desenvolvimento da nossa aplica\u00e7\u00e3o nos fornecendo funcionalidades pr\u00e9-implementadas como um Model, com seus respectivos Controllers e suas respectivas Migrations.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Para quem nunca utilizou um\u00a0<em>framework<\/em>\u00a0MVC antes, pode ser um pouco mais complicado entender todo o funcionamento do Adonis. A sua documenta\u00e7\u00e3o \u00e9 bem completa, com in\u00fameros tipos de exemplos, facilitando assim o seu aprendizado.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Um aspecto negativo do Adonis \u00e9 a sua comunidade n\u00e3o ser t\u00e3o expressiva como a do Express, pois \u00e9 um\u00a0<em>framework<\/em> novo que vem ganhando o carinho do pessoal.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_216\" class=\"yaqOZd\">\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_219\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.4xbv07774fdi\" class=\"Ap4VC aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.4xbv07774fdi\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>Banco de Dados<\/strong><\/div>\n<div id=\"h.ckk31xaqgfvl\" class=\"GV3q8e aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.ckk31xaqgfvl\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\nO JavaScript tamb\u00e9m est\u00e1 presente, como coadjuvante, em implementa\u00e7\u00f5es de ferramentas que auxiliam na administra\u00e7\u00e3o de bancos de dados como o phpMyAdmin, mas tamb\u00e9m \u00e9 o ator principal em solu\u00e7\u00f5es como o MongoDB.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_220\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-Clt0zb purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_223\" class=\"hJDwNd-AhqUyc-Clt0zb jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.h4mapmo4mgor\" class=\"CobnVe aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.h4mapmo4mgor\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>MongoDB<\/strong><\/div>\n<div>\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-ibL1re purZT-AhqUyc-ibL1re pSzOP-AhqUyc-ibL1re JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_229\" class=\"hJDwNd-AhqUyc-ibL1re purZT-AhqUyc-ibL1re pSzOP-AhqUyc-ibL1re jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-2770 alignleft\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js7.jpg\" alt=\"\" width=\"176\" height=\"313\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"\">\n<p class=\"zfr3Q\" dir=\"ltr\">O NoSQL ganhou relev\u00e2ncia no mundo por conta do seu desempenho quando falamos em escalabilidade. A representa\u00e7\u00e3o do NoSQL em JavaScript vem com o MongoDB. O crescimento da sua popularidade vem do seu f\u00e1cil aprendizado, desempenho, sintaxe expressiva das queries, onde se torna muito f\u00e1cil identificar o que est\u00e1 vindo em uma consulta, escalabilidade e consist\u00eancia, pois a redund\u00e2ncia em bandos NoSQL \u00e9 aceit\u00e1vel.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Por outro lado, temos pontos negativos como a aus\u00eancia de triggers, um recurso muito \u00fatil em bancos de dados relacionais. Al\u00e9m dele, tamb\u00e9m h\u00e1 o armazenamento, por conta da redund\u00e2ncia o MongoDB guarda muita informa\u00e7\u00e3o duplicada, gerando mais dados a serem armazenados e complexidade na elabora\u00e7\u00e3o de consultas, o que acaba sendo quase que um impeditivo na maioria das aplica\u00e7\u00f5es.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Al\u00e9m de tudo, o MongoDB \u00e9 um \u00f3timo banco de dados quando utilizado nos seus melhores cen\u00e1rios, muito das limita\u00e7\u00f5es v\u00eam do conceito de NoSQL, e n\u00e3o da ferramenta.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_233\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_236\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.irga5tc22dfn\" class=\"Ap4VC aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.irga5tc22dfn\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>Gerenciadores de Pacotes<\/strong><\/div>\n<div id=\"h.l0stbs3i1ll7\" class=\"GV3q8e aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.l0stbs3i1ll7\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\nJuntamente de frameworks e bibliotecas, gerenciadores de pacotes fazem um papel crucial no desenvolvimento. Eles fazem com que horas e horas de desenvolvimento sejam substitu\u00eddas por apenas algumas palavras combinadas, como por exemplo:<\/div>\n<div id=\"h.jourg9ogpfu5\" class=\"GV3q8e aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.jourg9ogpfu5\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<code>npm install express<\/code><\/div>\n<div id=\"h.7avgdk3wp4x\" class=\"GV3q8e aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.7avgdk3wp4x\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\nUtilizando o exemplo do express com o npm, se queremos utilizar o framework na nossa aplica\u00e7\u00e3o, basta digitarmos isso na nossa linha de comando e o npm ir\u00e1 fazer todo o trabalho de buscar esse pacote na sua biblioteca de pacotes.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_237\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-OwsYgb purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_240\" class=\"hJDwNd-AhqUyc-OwsYgb jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.sq3dih7ou2j7\" class=\"CobnVe aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.sq3dih7ou2j7\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>npm<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-wNfPc purZT-AhqUyc-II5mzb pSzOP-AhqUyc-wNfPc JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_246\" class=\"hJDwNd-AhqUyc-wNfPc pSzOP-AhqUyc-wNfPc jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\">\n<p class=\"zfr3Q\" dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2771 size-full alignleft\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js8.png\" alt=\"\" width=\"242\" height=\"186\" \/><\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">O\u00a0<strong>npm<\/strong>\u00a0\u00e9 o gerenciador de pacotes nativo do Node e \u00e9 utilizado pela sua CLI a fim de gerenciar os pacotes presentes na nossa aplica\u00e7\u00e3o. Por conta de ser nativo, instalando o Node, todos nosso projetos em Node ser\u00e3o gerenciados pelo npm.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Temos uma reda\u00e7\u00e3o explicando mais detalhadamente o que \u00e9 o npm. Basta clicar\u00a0<span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/sites.google.com\/inf.ufsm.br\/pet-si\/reda%C3%A7%C3%B5es\/2020\/npm-para-iniciantes?authuser=0\">aqui<\/a><\/span>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_250\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-II5mzb purZT-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_259\" class=\"hJDwNd-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-2772 \" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js9.png\" alt=\"\" width=\"325\" height=\"325\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js9.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js9-150x150.png 150w\" sizes=\"(max-width: 325px) 100vw, 325px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-OiUrBf purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_253\" class=\"hJDwNd-AhqUyc-OiUrBf jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.e0fymq4pi8w1\" class=\"CobnVe aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.e0fymq4pi8w1\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>Yarn<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.6fd17a5b7a810754_255\" class=\"hJDwNd-AhqUyc-OiUrBf jXK9ad D2fZ2 wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Idealizado pelo Facebook, o Yarn \u00e9 mais inteligente e r\u00e1pido, e, sendo compat\u00edvel com projetos que j\u00e1 utilizam o npm, na maioria das vezes podemos utiliz\u00e1-lo sem problema. Existem alguns raros bugs que podem incomodar quando usamos o Yarn, mas como falei, s\u00e3o raros, bem raros.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">O Yarn utiliza do mesmo registro de pacotes npm para lidar com as depend\u00eancias, ou seja, ainda vamos utilizar o npm em segundo plano, e caso algum dos raros bugs acontecerem, podemos recorrer a ele sem problemas.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">A sua simplicidade nos comandos \u00e9 o que mais chama a aten\u00e7\u00e3o dos desenvolvedores. Fazendo um paralelo com o npm, o comando para instalarmos um pacote fica mais ou menos assim:<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\"><code>yarn add express<\/code><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_267\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_264\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.yegi7seeh8km\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>Module Bundlers<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_272\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-OwsYgb purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_278\" class=\"hJDwNd-AhqUyc-OwsYgb jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.upthryi2r332\" class=\"CobnVe aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.upthryi2r332\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>Webpack<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.6fd17a5b7a810754_280\" class=\"hJDwNd-AhqUyc-OwsYgb jXK9ad D2fZ2 wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2773 size-medium alignleft\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js10-300x253.png\" alt=\"\" width=\"300\" height=\"253\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js10-300x253.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js10.png 512w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<p class=\"zfr3Q\" dir=\"ltr\">Quando falamos em Module Bundlers em 2020 temos o Webpack, ele \u00e9 respons\u00e1vel de transformar o nosso c\u00f3digo JavaScript em uma constru\u00e7\u00e3o da nossa aplica\u00e7\u00e3o com todas as depend\u00eancias sem que precisemos referenci\u00e1-las no nosso HTML, por exemplo.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">O funcionamento do Webpack passa por um objeto de configura\u00e7\u00e3o onde s\u00e3o definidos os par\u00e2metros para fazer a constru\u00e7\u00e3o da aplica\u00e7\u00e3o verificando as depend\u00eancias desses arquivos. Essa constru\u00e7\u00e3o \u00e9 exportada em um local tamb\u00e9m definido neste objeto de configura\u00e7\u00e3o. O arquivo de configura\u00e7\u00e3o \u00e9 bem parecido com o demonstrado abaixo:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_288\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-OiUrBf purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_285\" class=\"hJDwNd-AhqUyc-OiUrBf jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2774 size-full\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js11.png\" alt=\"\" width=\"398\" height=\"173\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js11.png 398w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js11-300x130.png 300w\" sizes=\"(max-width: 398px) 100vw, 398px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-ibL1re JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_292\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_289\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Podemos ver que temos uma entrada (entry) e uma sa\u00edda (output), nesse endere\u00e7o de sa\u00edda que vai estar o nosso arquivo que ser\u00e1 servido da nossa aplica\u00e7\u00e3o.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_293\" class=\"yaqOZd\">\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_296\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.183xt7rkrtfl\" class=\"Ap4VC aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.183xt7rkrtfl\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>Ferramentas para Testes<\/strong><\/div>\n<div id=\"h.ndq4gbpko28k\" class=\"GV3q8e aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.ndq4gbpko28k\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\nMuito se fala em automatiza\u00e7\u00e3o de testes, ou o sujeito desenvolvedor &#8220;tester&#8221; (test developer), com o intuito de testarmos a nossa aplica\u00e7\u00e3o de forma automatizada e exaustiva para garantir que n\u00e3o lancemos um erro na produ\u00e7\u00e3o, comprometendo a nossa aplica\u00e7\u00e3o. Para isso existem ferramentas como o Jest para realizar testes automatizados em JavaScript.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_297\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-OwsYgb purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_300\" class=\"hJDwNd-AhqUyc-OwsYgb jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.mneiz17h31ml\" class=\"CobnVe aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.mneiz17h31ml\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>Jest<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.6fd17a5b7a810754_310\" class=\"hJDwNd-AhqUyc-OwsYgb jXK9ad D2fZ2 wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-II5mzb purZT-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_306\" class=\"hJDwNd-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-2776 \" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js13-300x300.png\" alt=\"\" width=\"369\" height=\"369\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js13-300x300.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js13-150x150.png 150w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js13.png 600w\" sizes=\"(max-width: 369px) 100vw, 369px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\"><span style=\"font-size: inherit\">O Jest \u00e9 um framework para realizar testes em aplica\u00e7\u00f5es JavaScript com foco na simplicidade, suportando projetos Node, React, Angular e Vue, ou seja, o cara \u00e9 pau pra toda obra! hehe<\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_318\" class=\"yaqOZd\">\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_315\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">O framework \u00e9 feito de forma a montar uma sintaxe intelig\u00edvel at\u00e9 para quem n\u00e3o \u00e9 do meio da programa\u00e7\u00e3o, pois seus m\u00e9todos s\u00e3o nomeados de forma que formem uma frase, por exemplo:<\/p>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2775  alignleft\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js12.png\" alt=\"\" width=\"380\" height=\"118\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js12.png 325w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js12-300x93.png 300w\" sizes=\"(max-width: 380px) 100vw, 380px\" \/><\/p>\n<p dir=\"ltr\">\u00a0<\/p>\n<p dir=\"ltr\">\u00a0<\/p>\n<p dir=\"ltr\">\u00a0<\/p>\n<p dir=\"ltr\">\u00a0<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">O m\u00e9todo <strong>it<\/strong>, tamb\u00e9m pode ser importado como <strong>test<\/strong>, executa um teste, nesse caso o teste \u00e9 que a soma precise resultar 4. Apesar de ser um exemplo l\u00fadico, podemos ver a sua caracter\u00edstica de que at\u00e9 uma pessoa que n\u00e3o sabe nada de programa\u00e7\u00e3o consegue entender o que estamos testando.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_319\" class=\"yaqOZd\">\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_322\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.87r8sq8746gx\" class=\"Ap4VC aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.87r8sq8746gx\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>Linguagens que compilam JavaScript<\/strong><\/div>\n<div id=\"h.fgc5ldyt9g74\" class=\"GV3q8e aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.fgc5ldyt9g74\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\nPor mais que o JavaScript seja uma linguagem f\u00e1cil de se aprender, ela sempre teve um grande problema, a sua tipagem din\u00e2mica fraca. \u00c9 f\u00e1cil termos um problema de tipos no JavaScript, por exemplo, onde est\u00e1vamos esperando que fosse um array e vamos tentar percorr\u00ea-lo, ao inv\u00e9s disso, o programa lan\u00e7a um erro e para de funcionar.<\/div>\n<div id=\"h.4r2o995sdtef\" class=\"GV3q8e aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.4r2o995sdtef\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\nPor conta disso, surgem linguagens que compilam o seu c\u00f3digo para JavaScript, implementando a tipagem e a seguran\u00e7a das vari\u00e1veis entre si.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_323\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-OwsYgb purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_326\" class=\"hJDwNd-AhqUyc-OwsYgb jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.wx5zsl17iaz6\" class=\"CobnVe aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.wx5zsl17iaz6\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>TypeScript<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.6fd17a5b7a810754_328\" class=\"hJDwNd-AhqUyc-OwsYgb jXK9ad D2fZ2 wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2777 alignright\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js14.png\" alt=\"\" width=\"300\" height=\"282\" \/><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"hJDwNd-AhqUyc-R6PoUb JNdkSc L6cTce-purZT L6cTce-pSzOP\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<p class=\"zfr3Q\" dir=\"ltr\">Desenvolvido pela Microsoft, o TypeScript ganhou bastante popularidade por ter a sua sintaxe muito semelhante ao da sua linguagem m\u00e3e. \u00c9 f\u00e1cil de aprend\u00ea-la e, se o desenvolvedor j\u00e1 est\u00e1 acostumado com JavaScript, a migra\u00e7\u00e3o acontece naturalmente.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Utilizando o TypeScript temos certeza de que o nosso m\u00e9todo recebe par\u00e2metros de tipos A, e apenas A. N\u00e3o temos mais o problema de tentar acessar um elemento de um poss\u00edvel array que na verdade \u00e9 um boolean. O seguinte exemplo nos mostra exatamente esse comportamento do TypeScript:<\/p>\n<p dir=\"ltr\">\u00a0<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_350\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_338\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2778 size-full\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js15.png\" alt=\"\" width=\"329\" height=\"122\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js15.png 329w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/eco-js15-300x111.png 300w\" sizes=\"(max-width: 329px) 100vw, 329px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.6fd17a5b7a810754_347\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\">Podemos ver que o meu linter j\u00e1 est\u00e1 acusando o erro na chamada da fun\u00e7\u00e3o. Isso acontece porque se tentarmos executar esse c\u00f3digo, n\u00e3o vamos ter \u00eaxito por conta da tipagem e prote\u00e7\u00e3o que o TypeScript implementa. Estamos passando um array onde est\u00e1 expl\u00edcito que o argumento da fun\u00e7\u00e3o greeter() \u00e9 do tipo string.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_352\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_355\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.9s30kmr62935\" class=\"Ap4VC aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e M9Bg4d\" role=\"presentation\" aria-describedby=\"h.9s30kmr62935\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\n<strong>Men\u00e7\u00f5es Honrosas<\/strong><\/div>\n<div id=\"h.zdcgcg7649si\" class=\"GV3q8e aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.zdcgcg7649si\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\nVou listar abaixo frameworks e bibliotecas n\u00e3o citados na reda\u00e7\u00e3o por conta da queda na sua popularidade e uso em aplica\u00e7\u00f5es ultimamente ou por ainda n\u00e3o estarem prontas para uso, ou ainda, por n\u00e3o se encaixarem em um dos contextos listados.<\/div>\n<ul class=\"n8H08c UVNKR\">\n<li class=\"TYR86d zfr3Q OmQG5e\">\n<div id=\"h.16uo2ui58c4e\" class=\"GV3q8e aP9Z7e\"><strong>Angular<\/strong> &#8211; Apesar de ainda ser bastante utilizado sua popularidade tem ca\u00eddo e o seu uso em aplica\u00e7\u00f5es reais tem sido cada vez menor.<\/div>\n<\/li>\n<li class=\"TYR86d zfr3Q OmQG5e\">\n<div id=\"h.6s4uprjyniiq\" class=\"GV3q8e aP9Z7e\"><strong>Bower<\/strong> &#8211; Foi descontinuado por sua equipe de maintainers e hoje se encontra depreciado para utilizar em conjunto com tecnologias mais atuais.<\/div>\n<\/li>\n<li class=\"TYR86d zfr3Q OmQG5e\">\n<div id=\"h.l66uqhyb6uwi\" class=\"GV3q8e aP9Z7e\"><strong>Deno<\/strong> &#8211; Ainda \u00e9 cedo falar de Deno em um cen\u00e1rio de aplica\u00e7\u00f5es reais, mas o seu futuro \u00e9 empolgante. Tamb\u00e9m temos uma reda\u00e7\u00e3o falando do Deno, clica aqui pra conferir.<\/div>\n<\/li>\n<li class=\"TYR86d zfr3Q OmQG5e\">\n<div id=\"h.xs442qfkynad\" class=\"GV3q8e aP9Z7e\"><strong>Lodash<\/strong> &#8211; Uma biblioteca com in\u00fameras fun\u00e7\u00f5es que v\u00eam a ser \u00fateis no desenvolvimento como manipula\u00e7\u00e3o de arrays e objetos, compara\u00e7\u00f5es, valida\u00e7\u00f5es de vari\u00e1veis, etc.<\/div>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_359\" class=\"yaqOZd\">\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc\">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_356\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.arlbqbmr851\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\nEnt\u00e3o, como podemos ver, s\u00e3o in\u00fameros frameworks, bibliotecas e ferramentas escritas em JavaScript que nos auxiliam hoje no desenvolvimento de aplica\u00e7\u00f5es web. E se tu, leitor, gostou dessa reda\u00e7\u00e3o, temos in\u00fameras outras nessa mesma p\u00e1gina, e cada semana publicamos uma nova sobre tecnologias variadas desse nosso mund\u00e3o dentro da computa\u00e7\u00e3o.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.6fd17a5b7a810754_360\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-uQSCkd purZT-AhqUyc-II5mzb pSzOP-AhqUyc-qWD73c JNdkSc yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.6fd17a5b7a810754_363\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.49flrsgegig8\" class=\"GV3q8e aP9Z7e\">\u00a0<\/div>\n<div class=\"CjVfdc\">\n<div class=\"PPhIP rviiZ\">\n<div class=\"U26fgb mUbCce fKz7Od LRAOtb rm120e\" role=\"presentation\" aria-describedby=\"h.49flrsgegig8\" aria-label=\"Copiar link do t\u00edtulo\" data-tooltip=\"Copiar link do t\u00edtulo\" aria-hidden=\"true\" data-tooltip-position=\"top\" data-tooltip-vertical-offset=\"12\" data-tooltip-horizontal-offset=\"0\">\n<div class=\"VTBa7b MbhUzd\">\u00a0<\/div>\n<\/div>\n<\/div>\nRefer\u00eancias<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.6fd17a5b7a810754_365\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<ul class=\"n8H08c UVNKR\">\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2F2019.stateofjs.com%2Ffront-end-frameworks%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGM8fX1TDA37JKU04Len5rtmXvo5A\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>State of JS 2019<\/strong><\/a><\/span><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fwww.imaginarycloud.com%2Fblog%2Fa-javascript-ecosystem-overview%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGNp93BuZsCNaHZ3CXa5Rhs5FF58w\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>JavaScritp Ecosystem Overview<\/strong><\/a><\/span><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fwww.toptal.com%2Ffront-end%2Fwebpack-browserify-gulp-which-is-better&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNF5tukrsP4gI0Zt7x-ai3tkrx02bg\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Webpack x Browserify + Gulp: Which is better?<\/strong><\/a><\/span><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fblog.rocketseat.com.br%2Fadonis-vs-express%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGgy-a16ACbo_YFYRv7pXvRwjVLSQ\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Adonis vs Express &#8211; Rocketseat<\/strong><\/a><\/span><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.youtube.com\/watch?v=uextYhQGP6k&amp;list=PL55RiY5tL51oyA8euSROLjMFZbXaV7skS&amp;index=2\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Configuring your Webpack &#8211; Academind<\/strong><\/a><\/span><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fvuejs.org%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFlesPDPtz95CmEue7pPlMbWGmuug\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Vue<\/strong><\/a><\/span><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Freactjs.org%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFxbP5Qel5akKiDXYzvNMK1vbEcrQ\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>React<\/strong><\/a><\/span><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fnodejs.org%2Fen%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFwY6lJusE0Q2h7it9Vu06t3WISmQ\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Node<\/strong><\/a><\/span><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fyarnpkg.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNENl9so9tX9-X2BktOT8fzkPx30sg\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Yarn<\/strong><\/a><\/span><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fwebpack.js.org%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNEobyxbZcTuiSuDe91vqoK8czic9A\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Webpack<\/strong><\/a><\/span><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fadonisjs.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGaQ5-ampsInEBcxEvvuGFjauW8lA\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Adonis<\/strong><\/a><\/span><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fexpressjs.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNF_sezTlNPzAcVU9MPLr-D4hnyMsA\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Express<\/strong><\/a><\/span><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fwww.mongodb.com%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFo5fESUwVGX5rUrgafS8ibXG9S0Q\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>MongoDB<\/strong><\/a><\/span><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><span class=\" aw5Odc\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fwww.typescriptlang.org%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNH3RKYSI_33STRJTdVwry4WDd6pVQ\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>TypeScript<\/strong><\/a><\/span><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>Essa semana teremos mais uma reda\u00e7\u00e3o sobre o nosso querido JavaScript! A linguagem tem recebido bastante aten\u00e7\u00e3o e carinho da comunidade nos \u00faltimos anos, por conta disso, o seu ecossistema tem se expandido cada vez mais. Antigamente utiliz\u00e1vamos o JavaScript para manipular elementos na nossa p\u00e1gina, hoje em dia temos\u00a0frameworks\u00a0consolidados, tanto no\u00a0back-end, quanto no\u00a0front-end, escritos [&hellip;]<\/p>\n","protected":false},"author":2948,"featured_media":2693,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[124,112],"tags":[149,192],"class_list":["post-2698","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-destaques","category-redacao","tag-redacao","tag-web-e-front-end"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/posts\/2698","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/users\/2948"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/comments?post=2698"}],"version-history":[{"count":0,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/posts\/2698\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/media\/2693"}],"wp:attachment":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/media?parent=2698"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/categories?post=2698"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/tags?post=2698"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}