JS vs JS · Rendering · toString() vs toHTML()

Saturday 22 May 2021

Starts 14:00 PM

Finishes 16:00 PM


Organized by JavaScript vs JavaScript


Venue: Online/Virtual

Address: Online event on your device
8600 Lisboa

Go to this event

About this event

Na maioria das linguagens de programação existe uma função chamada ‘toString()’. É utilizada por todos os programadores para imprimir valores, às vezes numa janela, como a consola, outras vezes em ficheiros de rastreio (‘log files’). É também muito utilizada durante os ciclos de desenvolvimento, para avaliar o estado das aplicações e os seus objetos. É ainda muito utilizada durante sessões de ‘debugging’, em alternativa ao uso de breakpoints.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

Em Java, C++ e Kotlin existe a mesma função com a mesma assinatura (a assinatura de uma função refere ao seu nome e ao resultado da sua invocação com os seus eventuais argumentos). Em outras linguagens, a função pode ter um outro nome, p.ex. str() em Python ou ToString() em CSharp e Go, mas servem todas o mesmo objetivo.

········· ········· ········· ········· ········· ········· ········· ········· ········· ·········

À primeira vista, em aplicações com uma Interface Gráfica em HTML (uma GUI, ou ‘Graphical User Interface’), o programador podia pensar que uma função toHTML() seria útil. Ao final, a função toString() serve para gerar uma representação de um objeto sob forma de ‘string’ (cadeia de carateres). Porque não acrescentar aos nossos objetos a função toHTML() quando é necessária uma representação dos nossos objetos em formato HTML?

········· ········· ········· ········· ········· ········· ········· ········· ········· ·········

Não obstante, apesar de toHTML() parecer a solução ideal, visto a semelhança em objetivo, integrar uma versão HTML de um objeto dentro do código fonte do próprio objeto, não é uma boa solução.

O motivo é que, em geral, não é boa ideia misturar várias linguagens dentro do mesmo código fonte. Não devemos esquecer que HTML é bastante mais complexo do que um simples “string”. Assim, definir uma representação em forma de ‘string’ no mesmo ficheiro do resto do código fonte ainda é aceitável. Ao contrário, incluir HTML em código fonte JavaScript (ou em código fonte de qualquer outra linguagem de programação), não é boa abordagem, por ser garantia para futuros pesadelos de manutenção.

Mas porque existem as tantas tecnologias ‘template’, que exatamente fazem isso? P.ex. no mundo de JavaScript existem inúmeras tecnologias ‘template’:

https://expressjs.com/en/resources/template-engines.html

Todas essas tecnologias cometem o mesmo pecado, garantindo pesadelos de manutenção, para não falar da probabilidade de desaparecimento da tecnologia em favor de outras mais “promessoras” (como aconteceu com todas as tecnologias ‘template’ no mundo de Java, como JSP e JSF).

········· ········· ········· ········· ········· ········· ········· ········· ········· ·········

Felizmente, existem soluções mais elegantes e duradouras, que definem a representação em HTML onde pertence: no código fonte de HTML puro (e não nos ficheiros fonte de JavaScript). Não há dúvida que a tecnologia melhor de momento é ‘HTML templates’. Quem recorre a ‘HTML templates’, evita a mistura de código fonte da GUI com código fonte JavaScript, respeitando assim uma das regras de ouro no desenvolvimento, nomeadamente a boa separação de responsabilidades (‘Separation of Concerns’).

Aliás, o ‘framework’ Angular (da Google) é baseado nessa abordagem. Mas não é obrigatório recorrer a ‘frameworks’ para poder utilizar a tecnologia! O tecnologia de base é mais acessível do que uma pessoa podia pensar.

É isso que codificator.io irá demonstrar durante este evento: como separar o código fonte da GUI do resto do código fonte, p.ex. JavaScript, garan


This page last updated Wednesday 28 April 2021 at 16:03.

Problems? Report an error or inappropriate listing here.

Information displayed here is provided in good faith but we are not responsible for the content of any listing. Sometimes events can be cancelled or changed at short notice. Please check with the venue or organizer before you travel!