{"id":3329,"date":"2022-10-13T21:26:56","date_gmt":"2022-10-14T00:26:56","guid":{"rendered":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/?p=3329"},"modified":"2025-09-02T14:35:36","modified_gmt":"2025-09-02T17:35:36","slug":"astro-js-o-ultimo-framework-web","status":"publish","type":"post","link":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/2022\/10\/13\/astro-js-o-ultimo-framework-web","title":{"rendered":"ASTRO.JS, o ultimo framework web?"},"content":{"rendered":"\n<p>Todo mundo j\u00e1 enfrentou duvidas em qual framework web se usar para um projeto. Hoje no mercado temos dispon\u00edveis dos mais diversos, que abrangem quase todas as linguagens de programa\u00e7\u00e3o. O que antes se limitava a apenas Javascript e php, as linguagens web evolu\u00edram tanto, que trouxeram diversas outras consigo como c#, java e at\u00e9 mesmo python com o surgimento do Pyscript. E com tantas linguagens dispon\u00edveis \u00e9 not\u00f3rio que muitas pessoas tornem uma linguagem sendo a melhor para si e acabe fazendo parte dos programadores que s\u00f3 programam nessa linguagem, mas e se fosse poss\u00edvel juntar todos esses grupos?<\/p>\n<p>Ent\u00e3o essa \u00e9 apenas uma das coisas que Astro pode fazer, o qual \u00e9 uma ferramenta capaz de criar \u201cmulti page application\u201d que acabou de chegar a apenas alguns meses atr\u00e1s.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\" wp-image-3330 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2022\/10\/image-1-astro-300x143.jpeg\" alt=\"\" width=\"487\" height=\"232\" \/><\/p>\n<h6 style=\"text-align: center\">Tela com um fundo roxo e logo em cima desse fundo vem um outro rosa um pouco translucido com um t\u00edtulo em ingl\u00eas escrito \u201crebuilt my blog with out of curiosity&#8230; holy !@#$\u201d. Logo abaixo um gr\u00e1fico mostrando um consumo de Javascript do next.js (138kb) e outro abaixo mostrando o do astro (7.6Kb)<\/h6>\n<p>\u00a0<\/p>\n<p>Astro surge com v\u00e1rias ideias bastante interessantes, partindo de um ponto de vista no \u201chigh-level\u201d, \u00e9 como um gerador de site est\u00e1tico que permite escrever suas p\u00e1ginas utilizando seu pr\u00f3prio sistema de arquivos. Ent\u00e3o ao rodar ele renderiza tudo para gerar static multi-page application.<\/p>\n<p>Para os templates ele tem a sua pr\u00f3pria linguagem chamada astro components, o que \u00e9 bem familiar ao que j\u00e1 conhecemos com frameworks de desenvolvimento. Mas o que realmente \u00e9 bem interessante \u00e9 que podemos trazer o seu framework preferido de desenvolvimento para dentro do astro. Ent\u00e3o isso quer dizer que podemos criar aplica\u00e7\u00f5es astro, utilizando, react, vue, spelt e por ai mais! E ele ent\u00e3o vai renderizar a UI no servidor, enquanto carrega muito pouco Javascript no navegador.<\/p>\n<p>\u00a0<\/p>\n<p><span style=\"color: #993366\">import UmComponenteAstro from &#8216;..\/components\/UmComponenteAstro.astro&#8217;;<\/span><br \/><span style=\"color: #993366\">import UmComponenteReact from &#8216;..\/components\/UmComponenteReact.jsx&#8217;;<\/span><br \/><span style=\"color: #993366\">import algunsDados from &#8216;..\/dados\/pokemon.json&#8217;;<\/span><\/p>\n<p><span style=\"color: #993366\">\/\/ Acesse props passadas ao componente, como `&lt;X titulo=&#8221;Ol\u00e1, Mundo!&#8221; \/&gt;`<\/span><br \/><span style=\"color: #993366\">const { titulo } = Astro.props;<\/span><\/p>\n<p>\u00a0<\/p>\n<p>Javascript pelo que conhecemos \u00e9 o verdadeiro gargalo para performance em aplica\u00e7\u00f5es web devido a sua caracter\u00edstica de utilizar somente uma thread. Isso significa que com astro voc\u00ea n\u00e3o ser\u00e1 capaz de criar thread para Javascript mas sim diminuir o seu uso na sua aplica\u00e7\u00e3o. Mas voc\u00ea pode perguntar como um componente vai funcionar se a p\u00e1gina s\u00f3 possui HTML puro sem Javascript? \u00c9 a\u00ed que nesse momento astro brilha, se voc\u00ea deseja utilizar responsividade, reatividade e estados nas suas p\u00e1ginas, voc\u00ea pode adicionar \u201cislands\u201d de interatividade para o seu website, na perspectiva do desenvolvedor, astro providencia uma variedade de diretivas para a \u201chydration\u201d do seu site.<\/p>\n<p><span style=\"color: #993366\">\/\/ Exemplo: Utilize um componente React din\u00e2mico na p\u00e1gina.<\/span><br \/><span style=\"color: #993366\">import MeuComponenteReact from &#8216;..\/components\/MeuComponenteReact.jsx&#8217;;<\/span><br \/><span style=\"color: #993366\">&#8212;<\/span><br \/><span style=\"color: #993366\">&lt;!&#8211; Este componente agora \u00e9 interativo na p\u00e1gina! <\/span><br \/><span style=\"color: #993366\">O resto do seu website continua est\u00e1tico e com zero JS. &#8211;&gt;<\/span><br \/><span style=\"color: #993366\">&lt;MeuComponenteReact client:load \/&gt;<\/span><\/p>\n<p><span style=\"color: #993366\">&lt;MeuComponenteReact client:idle \/&gt;<\/span><\/p>\n<p><span style=\"color: #993366\">&lt;MeuComponenteReact client:visible \/&gt;<\/span><\/p>\n<p>Se voc\u00ea quer carregar de uma vez a sua hydration utilize Load. Mas se preferir que o componente n\u00e3o seja interativo naquele momento utilize Idle ou visible se deseja mostrar o component assim que ele aparece na tela. Tudo isso que astro proporciona \u00e9 chamado de parcial hydration e todas essas caracter\u00edsticas s\u00e3o um grande diferencial quando se fala de performance. Menos Javascript para rodar significa p\u00e1ginas mais velozes e melhor tempo para pontua\u00e7\u00f5es de interatividade.<\/p>\n<p><img decoding=\"async\" class=\" wp-image-3332 aligncenter\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2022\/10\/image-2-astro-300x240.jpeg\" alt=\"\" width=\"478\" height=\"382\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2022\/10\/image-2-astro-300x240.jpeg 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/791\/2022\/10\/image-2-astro.jpeg 750w\" sizes=\"(max-width: 478px) 100vw, 478px\" \/><\/p>\n<h6 style=\"text-align: center\">Tela com um fundo cinza mostrando no seu topo esquerdo o n\u00famero 100 circulado de verde e logo em baixo escrito performance, mais abaixo temos 6 m\u00e9tricas escritas em ingl\u00eas com o seu tempo abaixo escrito em verde.<\/h6>\n<p>Tomado isso como conclus\u00e3o, se Astro conseguir se tornar uma single-page application seria o ultimato para todos os web frameworks existentes, pois iria abranger todo tipo de uso do Astro nessa tabela, n\u00e3o se limitando somente a isso voc\u00ea pode utilizar qualquer UI que preferir, nesse ponto se todo o desenvolvimento da linguagem conseguir engatar, vai finalmente por um fim a guerra das pessoas f\u00e3s de framework Javascript.<\/p>\n<p>Refer\u00eancias: <br \/>Para saber mais sobre astro.js acesse sua documenta\u00e7\u00e3o: https:\/\/docs.astro.build\/en\/getting-started\/<br \/>Se deseja por em pr\u00e1tica o que viu, saca s\u00f3 esse aqui: https:\/\/prismic.io\/blog\/astro-js-tutorial<\/p>\n<p>\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Todo mundo j\u00e1 enfrentou duvidas em qual framework web se usar para um projeto. Hoje no mercado temos dispon\u00edveis dos mais diversos, que abrangem quase todas as linguagens de programa\u00e7\u00e3o. O que antes se limitava a apenas Javascript e php, as linguagens web evolu\u00edram tanto, que trouxeram diversas outras consigo como c#, java e at\u00e9 [&hellip;]<\/p>\n","protected":false},"author":5643,"featured_media":3328,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[124,112],"tags":[203,149,192],"class_list":["post-3329","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-destaques","category-redacao","tag-frameworks","tag-redacao","tag-web-e-front-end"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/posts\/3329","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\/5643"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/comments?post=3329"}],"version-history":[{"count":0,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/posts\/3329\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/media\/3328"}],"wp:attachment":[{"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/media?parent=3329"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/categories?post=3329"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ufsm.br\/pet\/sistemas-de-informacao\/wp-json\/wp\/v2\/tags?post=3329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}