{"id":2692,"date":"2020-05-11T17:48:00","date_gmt":"2020-05-11T20:48:00","guid":{"rendered":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/?p=2692"},"modified":"2025-09-02T14:00:36","modified_gmt":"2025-09-02T17:00:36","slug":"descobrindo-deno","status":"publish","type":"post","link":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/2020\/05\/11\/descobrindo-deno","title":{"rendered":"Descobrindo Deno"},"content":{"rendered":"\n<section id=\"h.686fbebca783d65c_12\" 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.686fbebca783d65c_13\" 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\">Quem acompanha os\u00a0<em>trends<\/em>\u00a0de tecnologia e programa\u00e7\u00e3o j\u00e1 ouviu sem d\u00favida alguma do<a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdeno.land%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGIVfO_QWAEh_lv3seDR-g-u7prlw\" target=\"_blank\" rel=\"noopener noreferrer\">\u00a0<\/a><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdeno.land%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGIVfO_QWAEh_lv3seDR-g-u7prlw\" target=\"_blank\" rel=\"noopener noreferrer\">Deno<\/a>. Mas o que \u00e9 isso? \u00c9 uma evolu\u00e7\u00e3o do Node.js? Ent\u00e3o\u2026 Devemos migrar nossas aplica\u00e7\u00f5es para Deno por que essa \u00e9 a nova tend\u00eancia do mercado?! Haha, n\u00e3o vamos nos precipitar. Nesse PET Reda\u00e7\u00e3o, vamos entender o que \u00e9 esse novo\u00a0<em>runtime<\/em>, bem como ele se relaciona com o Node.js e quais s\u00e3o suas particularidades.<\/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.686fbebca783d65c_21\" class=\"yaqOZd\">\n<div class=\"yaqOZd IFuOkc\">\u00a0<\/div>\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\n<div class=\"hJDwNd-AhqUyc-II5mzb 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 yYI8W \">\n<div class=\"JNdkSc-SmKAyb\">\n<div class=\"\">\n<div class=\"oKdM2c Kzv0Me\">\n<div id=\"h.686fbebca783d65c_18\" class=\"hJDwNd-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb jXK9ad D2fZ2 OjCsFc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img fetchpriority=\"high\" decoding=\"async\" class=\"size-medium wp-image-2758 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno1-300x300.png\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno1-300x300.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno1-150x150.png 150w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno1.png 500w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.686fbebca783d65c_22\" class=\"hJDwNd-AhqUyc-II5mzb pSzOP-AhqUyc-II5mzb jXK9ad D2fZ2 wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<pre class=\"zfr3Q\" style=\"text-align: center\">Logo oficial do Deno<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"h.686fbebca783d65c_29\" 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.686fbebca783d65c_26\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.l7umwbxd5369\" 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.l7umwbxd5369\" 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>A origem do Deno<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.686fbebca783d65c_30\" 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\">Sendo um anagrama de Node, o Deno foi concebido por Ryan Dahl, tamb\u00e9m criador do Node. A proposta apresentada por esse novo\u00a0<em>runtime<\/em>\u00a0\u00e9 ser seguro, simples e moderno, suportando JavaScript e TypeScript (outra tecnologia do momento).<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Essa nova tecnologia \u00e9 apresentada em uma palestra de Ryan Dahl na JSConf EU de 2018. Nervoso e n\u00e3o t\u00e3o confiante, ele sobe ao palco para listar uma s\u00e9rie de caracter\u00edsticas do Node.js do qual ele se arrepende de ter implementado. Cita o fato do design da API consistir em\u00a0<em>callbacks<\/em>\u00a0e n\u00e3o em Promises, que ele havia implementado antes do suporte em browsers, mas voltou atr\u00e1s. Tamb\u00e9m reclama das depend\u00eancias dos pacotes acabarem por ocupar muito espa\u00e7o, sendo que j\u00e1 se tornou um meme na comunidade de desenvolvimento o tamanho que a pasta node_modules tem. A partir disso, tamb\u00e9m aproveita para ressaltar que sua decis\u00e3o de juntar o npm ao Node acabou por prejudicar a comunidade inteira, j\u00e1 que atualmente o npm \u00e9 uma ferramenta pertencente \u00e0 uma empresa privada, junto com seu registro.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Ainda assim, seu grande arrependimento consiste em n\u00e3o ter tornado o Node seguro. O que significa isso? Ele exemplifica muito bem da seguinte forma: sup\u00f5e-se que voc\u00ea instale um pacote para formatar seu c\u00f3digo, com o ESLint. N\u00e3o h\u00e1 nada nativo no Node que impe\u00e7a esse pacote de acessar sua rede, por exemplo. Isso acaba por ser um grave defeito na\u00a0<em>seguran\u00e7a<\/em>\u00a0do runtime em si.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">E \u00e9 justamente nesse ponto que o Deno brilha: desde a sua concep\u00e7\u00e3o, ele foi lapidado como um\u00a0<em>runtime<\/em> seguro, sendo que cada pacote necessita ter permiss\u00f5es para escrever\/ler arquivos, acessar sua rede e outras fun\u00e7\u00f5es.<\/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.686fbebca783d65c_38\" 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.686fbebca783d65c_35\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.eshonnrit38\" 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.eshonnrit38\" 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>O que ele \u00e9 por baixo dos panos?<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.686fbebca783d65c_39\" 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\">O Deno utiliza em seu\u00a0<em>runtime<\/em>\u00a0o V8, escrito em C++, assim como o Node. Junto dele, ele tamb\u00e9m implementa certos elementos de sua API com o Rust. Dessa forma, ele se beneficia das vantagens de uma linguagem mais nova com o Rust, sem ter que realizar toda a implementa\u00e7\u00e3o que se comunica com o V8 em C++, que j\u00e1 \u00e9 uma linguagem antiga e tem seus problemas.<\/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.686fbebca783d65c_47\" 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.686fbebca783d65c_44\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.4kj6aous3j3n\" 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.4kj6aous3j3n\" 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\"><strong>Algumas de suas particularidades<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.686fbebca783d65c_48\" 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\">O Deno tem algumas caracter\u00edsticas bem singulares comparadas ao Node, como a seguran\u00e7a no uso de pacotes. Aqui embaixo est\u00e3o listadas outras caracter\u00edsticas do Deno que precisam ser ressaltadas:<\/p>\n<ul class=\"n8H08c UVNKR\">\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\">Apresenta suporte nativo ao TypeScript, sem que o c\u00f3digo precise ser compilado para JavaScript e depois executado pelo runtime, sendo somente executado diretamente;<\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\">\u00c9 um execut\u00e1vel \u00fanico que cont\u00e9m um\u00a0<em>package manager<\/em>\u00a0interno, diferente do Node que distribui consigo o npm;<\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\">O design de sua API \u00e9 totalmente orientado \u00e0 Promises (por consequ\u00eancia, \u00e0s diretivas\u00a0<strong>async<\/strong>\u00a0e\u00a0<strong>await<\/strong>), diferente do Node que em sua cria\u00e7\u00e3o utilizava\u00a0<em>callbacks<\/em>, o que gera dor de cabe\u00e7a at\u00e9 hoje em pacotes antigos;<\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\">O\u00a0<strong>await<\/strong>\u00a0pode ser utilizado diretamente no escopo global, n\u00e3o necessariamente tendo que estar dentro de uma\u00a0<strong>async<\/strong><em><strong>\u00a0<\/strong><\/em><em>function<\/em>.<\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\">O Deno busca ser compat\u00edvel com a Web sempre que poss\u00edvel. Dessa forma, muitos c\u00f3digos escritos para o\u00a0<em>runtime<\/em>\u00a0funcionam perfeitamente no\u00a0<em>browser<\/em>.<\/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<section id=\"h.686fbebca783d65c_56\" 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.686fbebca783d65c_53\" 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.hnity2jw0st1\" 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>Download e instala\u00e7\u00e3o<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.686fbebca783d65c_57\" 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\">Feita\u00a0toda a apresenta\u00e7\u00e3o te\u00f3rica, vamos realizar o download e instalar o runtime para que possamos brincar um pouco com suas funcionalidades. Ah, \u00e9 necess\u00e1rio lembrar que certos conceitos (como\u00a0<strong>async<\/strong>\u00a0e<strong>\u00a0await<\/strong>) n\u00e3o ser\u00e3o explicados por serem fun\u00e7\u00f5es j\u00e1 bem utilizadas no JavaScript.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Para realizar o download do Deno, acesse o site oficial na p\u00e1gina de instala\u00e7\u00e3o. Algumas op\u00e7\u00f5es estar\u00e3o dispon\u00edveis:<\/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.686fbebca783d65c_80\" class=\"yaqOZd\">\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.686fbebca783d65c_77\" class=\"hJDwNd-AhqUyc-qWD73c jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img decoding=\"async\" class=\"aligncenter wp-image-2759 size-full\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno2.png\" alt=\"\" width=\"610\" height=\"511\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno2.png 610w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno2-300x251.png 300w\" sizes=\"(max-width: 610px) 100vw, 610px\" \/><\/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.686fbebca783d65c_88\" 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.686fbebca783d65c_85\" 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\">Como estou utilizando o Linux, o comando que irei utilizar para realizar o download e a instala\u00e7\u00e3o \u00e9 o primeiro. Caso voc\u00ea esteja utilizando o Windows ou queira instalar de outra forma, sinta-se \u00e0 vontade. Conclu\u00edda a instala\u00e7\u00e3o no Linux, dois comandos ainda precisam ser executados para que possamos utilizar o comando\u00a0<strong>deno<\/strong>\u00a0em qualquer localidade de nosso sistema de arquivos.<\/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.686fbebca783d65c_76\" 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.686fbebca783d65c_73\" class=\"hJDwNd-AhqUyc-qWD73c jXK9ad D2fZ2 OjCsFc wHaque\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd baZpAe\">\n<div class=\"t3iYD\"><img decoding=\"async\" class=\"aligncenter wp-image-2760 size-full\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno3.png\" alt=\"\" width=\"742\" height=\"230\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno3.png 742w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno3-300x93.png 300w\" sizes=\"(max-width: 742px) 100vw, 742px\" \/><\/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.686fbebca783d65c_92\" 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.686fbebca783d65c_89\" 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\">Ap\u00f3s rodar esses dois comandos, voc\u00ea j\u00e1 pode utilizar o comando\u00a0<strong>deno &#8211;version<\/strong>\u00a0para checar se a instala\u00e7\u00e3o ocorreu corretamente. Como curiosidade, \u00e9 interessante ressaltar que tamb\u00e9m s\u00e3o mostradas as vers\u00f5es da V8 e do TypeScript. Para consultar o manual desse comando, basta executar\u00a0<strong>deno help.<\/strong><\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Caso tenha instalado uma vers\u00e3o antiga ou at\u00e9 mesmo queira chegar se h\u00e1 alguma nova atualiza\u00e7\u00e3o do runtime, o comando\u00a0<strong>deno upgrade\u00a0<\/strong>realizar\u00e1 a atualiza\u00e7\u00e3o de forma autom\u00e1tica. Com a adi\u00e7\u00e3o de certos par\u00e2metros, o comando tamb\u00e9m permite que se possa escolher qual vers\u00e3o do Deno que deve ser instalada. Para mais informa\u00e7\u00f5es, consulte a<a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdoc.deno.land%2Fhttps%2Fgithub.com%2Fdenoland%2Fdeno%2Freleases%2Flatest%2Fdownload%2Flib.deno.d.ts&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGmLWFHOdwr1IFGr5pQ5Hhp9KGHng\" target=\"_blank\" rel=\"noopener noreferrer\">\u00a0<\/a><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdoc.deno.land%2Fhttps%2Fgithub.com%2Fdenoland%2Fdeno%2Freleases%2Flatest%2Fdownload%2Flib.deno.d.ts&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGmLWFHOdwr1IFGr5pQ5Hhp9KGHng\" target=\"_blank\" rel=\"noopener noreferrer\">documenta\u00e7\u00e3o<\/a>.<\/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.686fbebca783d65c_96\" 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.686fbebca783d65c_93\" 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.ps6mnzdi8lt\" 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>\nHello World!<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.686fbebca783d65c_97\" 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\">Come\u00e7ando de forma clich\u00ea, vamos escrever um simples \u201cHello World\u201d. Lembra que falamos sobre como o Deno tenta, sempre que poss\u00edvel, ser compat\u00edvel com a Web? Ent\u00e3o, para escrever algo no terminal, podemos utilizar o mesmo c\u00f3digo que utilizamos no\u00a0<em>browser<\/em>. Crie um arquivo\u00a0<strong>main.ts\u00a0<\/strong>e execute-o com o comando\u00a0<strong>deno run main.ts<\/strong>, ap\u00f3s inserir o seguinte c\u00f3digo:<\/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.686fbebca783d65c_72\" class=\"yaqOZd\">\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.686fbebca783d65c_69\" 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-2761 size-full\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno4.png\" alt=\"\" width=\"652\" height=\"194\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno4.png 652w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno4-300x89.png 300w\" sizes=\"(max-width: 652px) 100vw, 652px\" \/><\/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.686fbebca783d65c_105\" 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.686fbebca783d65c_102\" 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\">Outra alternativa \u00e9 rodar o c\u00f3digo diretamente de uma forma externa, utilizando o comando\u00a0<strong>deno run<a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdeno.land%2Fstd%2Fexamples%2Fwelcome.ts&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNG2WfRSxxCs0izqVqPTlVIZ-fehFA\" target=\"_blank\" rel=\"noopener noreferrer\">\u00a0<\/a><\/strong><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdeno.land%2Fstd%2Fexamples%2Fwelcome.ts&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNG2WfRSxxCs0izqVqPTlVIZ-fehFA\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>https:\/\/deno.land\/std\/examples\/welcome.ts<\/strong><\/a>.<\/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.686fbebca783d65c_109\" 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.686fbebca783d65c_106\" 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.t0h276m5fpyu\" 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>Realizando uma requisi\u00e7\u00e3o HTTP<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.686fbebca783d65c_110\" 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\">Para exemplificar as funcionalidades do Deno, vamos fazer uma requisi\u00e7\u00e3o HTTP para recuperar dados de algum servidor web. Como o <em>runtime<\/em> \u00e9 sempre compat\u00edvel com Web quando poss\u00edvel, podemos usar o padr\u00e3o da Web <strong>fetch <\/strong>para executar a requisi\u00e7\u00e3o. O c\u00f3digo fica da seguinte maneira:<\/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.686fbebca783d65c_68\" 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.686fbebca783d65c_65\" 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-2762 size-full\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno5.png\" alt=\"\" width=\"978\" height=\"342\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno5.png 978w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno5-300x105.png 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno5-768x269.png 768w\" sizes=\"(max-width: 978px) 100vw, 978px\" \/><\/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.686fbebca783d65c_118\" 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.686fbebca783d65c_115\" 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\">Guardamos o primeiro argumento passado ao programa na vari\u00e1vel\u00a0<strong>url<\/strong>, ent\u00e3o realizando um\u00a0<strong>fetch<\/strong>\u00a0(com\u00a0<strong>await\u00a0<\/strong>no escopo global, uma feature do Deno) para esse endere\u00e7o. Em seguida, realiza-se a convers\u00e3o do corpo da resposta para um\u00a0<strong>ArrayBuffer<\/strong>\u00a0e depois para um\u00a0<strong>Uint8Array<\/strong>. Escrevendo esse array de\u00a0<em>bytes<\/em>\u00a0para o\u00a0<em>output<\/em>\u00a0padr\u00e3o, temos os dados agora no nosso console.<\/p>\n<p class=\"zfr3Q\" dir=\"ltr\">Tente executar esse programa com\u00a0<strong>deno run<a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdeno.land%2Fstd%2Fexamples%2Fcurl.ts&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHG4teJddipKYol2EXIUsUUWXkMqA\" target=\"_blank\" rel=\"noopener noreferrer\">\u00a0<\/a><\/strong><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdeno.land%2Fstd%2Fexamples%2Fcurl.ts&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHG4teJddipKYol2EXIUsUUWXkMqA\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>https:\/\/deno.land\/std\/examples\/curl.ts<\/strong><\/a><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fexample.com&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHW0vWLC0Aeg-6po2RUJo6NPtg6gw\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>\u00a0https:\/\/example.com<\/strong><\/a>. N\u00e3o funcionou, n\u00e3o \u00e9? Essa pequena aplica\u00e7\u00e3o realiza o acesso \u00e0 rede de nosso sistema, e, sendo um ambiente seguro, o Deno n\u00e3o permite isso normalmente. Para que o acesso \u00e0 rede seja liberado, execute\u00a0<strong>deno run &#8211;allow-net<a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdeno.land%2Fstd%2Fexamples%2Fcurl.ts&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHG4teJddipKYol2EXIUsUUWXkMqA\" target=\"_blank\" rel=\"noopener noreferrer\">\u00a0<\/a><\/strong><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdeno.land%2Fstd%2Fexamples%2Fcurl.ts&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHG4teJddipKYol2EXIUsUUWXkMqA\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>https:\/\/deno.land\/std\/examples\/curl.ts<\/strong><\/a><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fexample.com&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHW0vWLC0Aeg-6po2RUJo6NPtg6gw\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>\u00a0https:\/\/example.com<\/strong><\/a>. Para cada acesso \u00e0 arquivos, redes e outros recursos, voc\u00ea necessitar\u00e1 permitir esse acesso. Como dito anteriormente, essa \u00e9 uma das grandes diferen\u00e7as entre o Deno e o Node. Para ler mais sobre as permiss\u00f5es, acesso esse<a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdeno.land%2Fmanual%2Fgetting_started%2Fpermissions&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHd-VMe4WVzQls-y31uxABJew_w4Q\" target=\"_blank\" rel=\"noopener noreferrer\">\u00a0<\/a><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdeno.land%2Fmanual%2Fgetting_started%2Fpermissions&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHd-VMe4WVzQls-y31uxABJew_w4Q\" target=\"_blank\" rel=\"noopener noreferrer\">link<\/a>.<\/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.686fbebca783d65c_122\" 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.686fbebca783d65c_119\" 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.c88wnzpabzoa\" 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>Uma simples aplica\u00e7\u00e3o<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"oKdM2c\">\n<div id=\"h.686fbebca783d65c_123\" 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\">Para finalizar, iremos executar uma simples aplica\u00e7\u00e3o que simula o funcionamento do t\u00e3o conhecido cowsay. A<a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fgithub.com%2Fhierror%2Fkarlsay&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFqAQvrXUJReggsS_tFK7pDUXN7Tw\" target=\"_blank\" rel=\"noopener noreferrer\">\u00a0<\/a><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fgithub.com%2Fhierror%2Fkarlsay&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFqAQvrXUJReggsS_tFK7pDUXN7Tw\" target=\"_blank\" rel=\"noopener noreferrer\">karlsay<\/a> \u00e9 basicamente um clone da biblioteca criada para Node, embora muita mais espec\u00edfica, com Karl Marx sendo usado como modelo. Como ela foi desenvolvida em TypeScript, especificamente para o runtime Deno, seu uso n\u00e3o \u00e9 suportado para Node. Para executar essa pequena aplica\u00e7\u00e3o, utilize o comando seguinte comando:<\/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.686fbebca783d65c_131\" class=\"yaqOZd\">\n<div class=\"mYVXT\">\n<div class=\"LS81yb VICjCf\">\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.686fbebca783d65c_128\" class=\"hJDwNd-AhqUyc-OiUrBf jXK9ad D2fZ2 OjCsFc wHaque GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<p class=\"zfr3Q\" dir=\"ltr\"><strong>deno run &#8211;allow-net=<\/strong><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fraw.githubusercontent.com%2Fhierror%2Fkarlsay%2Fmaster%2Fmarx.txt&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNE_vCNnrzFeVwBg44rw6rut7waQFg\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>https:\/\/raw.githubusercontent.com\/hierror\/karlsay\/master\/marx.txt<\/strong><\/a> <a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fraw.githubusercontent.com%2Fhierror%2Fkarlsay%2Fmaster%2Fkarlsay.ts&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGUPbcKbJkF3t9bzuIlMgGXKO3EEQ\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>https:\/\/raw.githubusercontent.com\/hierror\/karlsay\/master\/karlsay.ts<\/strong><\/a><strong> \u201cPower to the people!\u201d<\/strong><\/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.686fbebca783d65c_136\" 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.686fbebca783d65c_133\" 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\">Dessa forma, o comando ser\u00e1 capaz de buscar a\u00a0<strong>string<\/strong>\u00a0(que representa o rosto de Karl Marx) necess\u00e1ria para a impress\u00e3o do output, j\u00e1 que lhe foi concedida permiss\u00e3o. Entretanto, como especificado, a rede s\u00f3 pode ser utilizada para se comunicar somente com o endere\u00e7o determinado. Para ver o c\u00f3digo da biblioteca, acesse o<a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fgithub.com%2Fhierror%2Fkarlsay&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFqAQvrXUJReggsS_tFK7pDUXN7Tw\" target=\"_blank\" rel=\"noopener noreferrer\">\u00a0<\/a><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fgithub.com%2Fhierror%2Fkarlsay&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFqAQvrXUJReggsS_tFK7pDUXN7Tw\" target=\"_blank\" rel=\"noopener noreferrer\">reposit\u00f3rio<\/a>.<\/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.686fbebca783d65c_84\" class=\"yaqOZd\">\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.686fbebca783d65c_81\" 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-2763 size-full\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno6.png\" alt=\"\" width=\"521\" height=\"504\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno6.png 521w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2020\/09\/deno6-300x290.png 300w\" sizes=\"(max-width: 521px) 100vw, 521px\" \/><\/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.686fbebca783d65c_140\" 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.686fbebca783d65c_137\" 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 Deno ainda \u00e9 uma tecnologia bem nova, mas com certeza muito promissora. Quando o Node foi criado, era imposs\u00edvel imaginar o grande espa\u00e7o que ele ocuparia no mercado de TI, bem como o tamanho gigantesco que sua comunidade teria. Quem sabe o mesmo n\u00e3o acontece com o Deno?<\/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.686fbebca783d65c_144\" 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.686fbebca783d65c_141\" class=\"hJDwNd-AhqUyc-uQSCkd jXK9ad D2fZ2 OjCsFc GNzUNc\">\n<div class=\"jXK9ad-SmKAyb\">\n<div class=\"tyJCtd mGzaTb baZpAe\">\n<div id=\"h.8ljrbzwlx08w\" 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.8ljrbzwlx08w\" 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.686fbebca783d65c_145\" 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\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdeno.land%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGIVfO_QWAEh_lv3seDR-g-u7prlw\" target=\"_blank\" rel=\"noopener noreferrer\">Deno<\/a><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdoc.deno.land%2Fhttps%2Fgithub.com%2Fdenoland%2Fdeno%2Freleases%2Flatest%2Fdownload%2Flib.deno.d.ts&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGmLWFHOdwr1IFGr5pQ5Hhp9KGHng\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/denoland\/deno\/releases\/latest\/download\/lib.deno.d.ts<\/a><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDeno_%28software%29&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFUusSMKGVLYBZ-WOrVdgVllJkROQ\" target=\"_blank\" rel=\"noopener noreferrer\">Deno (software)<\/a><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fblog.codeexpertslearning.com.br%2Fo-que-%25C3%25A9-o-deno-projeto-do-criador-do-nodejs-dd396cae2ea8&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNEM9WFM_gIVUmE88mXceg9Uj1qCXg\" target=\"_blank\" rel=\"noopener noreferrer\">O que \u00e9 o Deno? Projeto do Criador do NodeJs<\/a><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fwww.treinaweb.com.br%2Fblog%2Fdeno-conheca-o-suposto-substituto-do-node-js%2F&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGMVncIA6L23pV3jCQvEwRXovIWbQ\" target=\"_blank\" rel=\"noopener noreferrer\">Deno: conhe\u00e7a o suposto substituto do Node.js \u2013 Blog da TreinaWeb<\/a><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fdev.to%2Fdeno%2Fdeno-x-node-algumas-diferencas-importantes-f8b&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFHPKb_mNfOftymfnJPiTEdop1WpA\" target=\"_blank\" rel=\"noopener noreferrer\">Deno x Node &#8211; O que \u00e9 e algumas diferen\u00e7as importantes<\/a><\/p>\n<\/li>\n<li class=\"TYR86d zfr3Q\">\n<p class=\"zfr3Q\" dir=\"ltr\"><a class=\"XqQF9c\" href=\"https:\/\/www.google.com\/url?q=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FNode.js&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNEegTCy6lNluxQIwAN6IXsjTgeGTA\" target=\"_blank\" rel=\"noopener noreferrer\">Node.js<\/a><\/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>Quem acompanha os\u00a0trends\u00a0de tecnologia e programa\u00e7\u00e3o j\u00e1 ouviu sem d\u00favida alguma do\u00a0Deno. Mas o que \u00e9 isso? \u00c9 uma evolu\u00e7\u00e3o do Node.js? Ent\u00e3o\u2026 Devemos migrar nossas aplica\u00e7\u00f5es para Deno por que essa \u00e9 a nova tend\u00eancia do mercado?! Haha, n\u00e3o vamos nos precipitar. Nesse PET Reda\u00e7\u00e3o, vamos entender o que \u00e9 esse novo\u00a0runtime, bem como [&hellip;]<\/p>\n","protected":false},"author":2948,"featured_media":2688,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[124,112],"tags":[149,192],"class_list":["post-2692","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\/2692","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=2692"}],"version-history":[{"count":0,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/posts\/2692\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/media\/2688"}],"wp:attachment":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/media?parent=2692"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/categories?post=2692"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/tags?post=2692"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}