Olá Habr! Apresento a você a tradução do artigo "O HTML que nunca tivemos", de Sergey Kucherov.
Este ano marca 30 anos desde que Berners-Lee começou a desenvolver HTML. Desde então, percorremos um longo caminho, começando com a admiração por novas tecnologias e terminando com o tratamento do vício e da censura na Internet. Que problemas a Internet nos trouxe, senhas hackeadas, roubo de identidade, vírus de computador, worms e agora até vírus de ransomware. Você já se perguntou por que a Rede ainda permanece tão instável e vulnerável? Em algum lugar nesse longo caminho, viramos para o lado errado? Vamos acertar.
O HTML 1.0, publicado em 1993, incluiu apenas 13 elementos (contando apenas os que sobreviveram até hoje):
a, address, base, dd, dir, dl, dt, h1..h6, li, p, plaintext, title, ul
O mais importante deles, é claro, é a "âncora" (a). É ele quem define a funcionalidade que é responsável pelas duas primeiras letras no título padrão - hipertexto. Sem âncoras (ou links), o HTML seria apenas outra linguagem de marcação de texto. É essa capacidade de enviar o usuário para qualquer documento no mundo usando o localizador universal de recursos (URL), e esse fenômeno incrível chamado World Wide Web foi criado. Dois anos depois, vários elementos úteis foram adicionados ao HTML: html
, head
, body
, além de elementos para a criação de formulários, tabelas e imagens.

O último elemento, provavelmente teve o papel mais significativo na história da Internet. Ao dar ao navegador a capacidade de exibir não apenas texto, mas também imagens, tornamos a nova tecnologia atraente não apenas para um pequeno grupo de cientistas e entusiastas, mas também para milhões de usuários comuns. Podemos dizer com segurança que essa inovação levou a indústria a aumentar a velocidade da Internet e sua acessibilidade para o usuário em massa. No entanto, há outro recurso desse elemento HTML que tem significado histórico. Veja aqui:
<img src="http://ibm.com/ibm-logo.gif" />
Como é impossível incorporar uma imagem binária em um arquivo de texto (pelo menos naquele momento), o elemento img
é equipado com um atributo que indica o local em que o navegador pode encontrar o arquivo desejado. Essa idéia simples foi a chave para uma grande invenção.
A chave que nunca viramos.
O HTML 2.0 foi publicado em novembro de 1995. Todos ficaram encantados com os novos recursos, e provavelmente por que ninguém teve a ideia de sugerir: por que não deixamos que todos os outros elementos HTML também usem esse atributo? Imagine o seguinte:
<h1 src="/website/info/title"> </h1>
Este código significa que o conteúdo do cabeçalho deve ser carregado a partir deste URL. Pode não fazer sentido para um elemento tão pequeno, mas e uma div
ou article
?
<article src="/parts/article/blog1298" />
Bem, isso faz sentido agora? Eu sei que em 1993 a velocidade da Internet não era tão alta quanto é agora. Novos recursos já ocuparam a maior parte da largura de banda existente e o HTTP não estava à altura. No entanto, não havia razão para impedir tal possibilidade no padrão.
Agora você provavelmente pensará em que efeito esse atributo poderia ter no futuro da WWW? Por si só, talvez não seja tão grande. Mas se adicionarmos mais uma oportunidade a ela, o resultado poderá ser muito diferente do que temos agora. Quando o navegador exibe a página, ele converte o código HTML em um modelo de objeto de documento (DOM) localizado na memória. Este modelo permanece inalterado até que o navegador receba uma solicitação para substituí-lo por outro documento HTML. Mesmo em 1993, o software não funcionou tão primitivamente. Naquele ano, quando o Netscape Navigator substituiu o navegador Mosaic, o Lotus 123 tinha dez anos e o VisiCalc era ainda maior. A idéia de calcular o estado de um documento como uma função dos dados inseridos pelo usuário já era bem conhecida e bastante simples de implementar. Infelizmente, ninguém se atreveu a aplicá-lo nos navegadores. Imagine o que aconteceria se o HTML 2.0 tivesse essa oportunidade:
<div id="name">George</div> <h1>Welcome, $name</h1>
Se na planilha você puder se referir ao conteúdo de outras células, o documento HTML poderá permitir o uso de variáveis que se referem aos valores de outros elementos. Por exemplo, o código acima será exibido como um cabeçalho Bem - vindo, George . As variáveis podem ser ainda mais úteis nos URLs:
<article src="http://server.com/blog/$name"></article>
O código acima fará o download do conteúdo do artigo a partir do URL http://server.com/blog/George
. E se o valor do elemento name
alterado, o navegador atualizará o conteúdo apenas desse elemento. Como agora, o servidor é responsável pela lógica e geração de código HTML. Nesse caso, não há necessidade de usar AJAX e JavaScipt. Essa nova função, ainda não proposta por ninguém, facilitaria a implementação de uma caixa de pesquisa com dicas dinâmicas:
<input list="find" type="text" id="term" /> <datalist id="find" src="http://server.com/search/$term" />
Obviamente, avaliar expressões é muito mais seguro do que executar código de programa incorporado, cujas consequências são difíceis de prever. Para tornar o HTML ainda mais compatível com planilhas, você precisa adicionar a capacidade de usar funções:
@CONCATENATE(first,", ",last);

Não é necessário JavaScript, DOM sombra ou outras funções caras e extremamente inseguras. O navegador calcula automaticamente as alterações no DOM com base na entrada do usuário. Hoje chamamos isso de programação reativa. É uma pena que levamos 26 anos para chegar a isso. É tarde demais para tentar implementá-lo agora?
Você pode assumir que as versões mais recentes do HTML5 + CSS3 + JS são suficientes para as necessidades modernas. Eu acho que não. Ainda estamos lutando para criar uma interface de usuário simples e somos forçados a usar bibliotecas JS confusas como Angular. E os componentes da web? Eles serão capazes de tornar a programação da Web mais rápida, fácil e segura? Possivelmente. Ou talvez não. Tudo o que sei é que os componentes são extremamente fáceis de implementar, além do padrão HTML que nunca tivemos. Deixe-me apresentar-lhe o elemento define
:
<head> <define tag=“login” src=“http://server.com/components/login”> <define tag=“footer” src=“http://server.com/components/footer”> </head> <body> <login toremember="yes" /> ... <footer /> </body>
Isso é tudo. O recurso carregado no endereço especificado na URL do componente é um arquivo HTML comum. Pode conter variáveis, funções e links para outros componentes. Esses componentes da Web podem ser facilmente usados não apenas em um site, mas também como uma biblioteca padrão na Internet. O protocolo HTTP / 2 apresenta muitos recursos úteis que permitirão que o novo HTML funcione em todo o seu potencial. O JavaScript pode ser deixado, mas na maioria dos casos simplesmente não será necessário. Quando foi a última vez que você precisou usar uma macro em uma planilha?