Halo, Habr! Saya mempersembahkan untuk Anda terjemahan artikel "HTML yang tidak pernah kami miliki" oleh Sergey Kucherov.
Tahun ini menandai 30 tahun sejak Berners-Lee mulai mengembangkan HTML. Sejak itu, kami telah menempuh jalan yang panjang, dimulai dengan kekaguman terhadap teknologi baru, dan berakhir dengan perlakuan terhadap kecanduan dan sensor internet. Masalah apa yang dibawa Internet kepada kami, kata sandi yang diretas, pencurian identitas, virus komputer, worm, dan sekarang bahkan virus ransomware. Pernahkah Anda bertanya-tanya mengapa Jaringan masih tetap tidak stabil dan rentan? Di suatu tempat di jalan panjang ini kita berbelok ke arah yang salah? Mari kita perbaiki.
HTML 1.0, diterbitkan pada tahun 1993, hanya memasukkan 13 elemen (hanya menghitung yang bertahan sampai hari ini):
a, address, base, dd, dir, dl, dt, h1..h6, li, p, plaintext, title, ul
Yang paling penting dari mereka, tentu saja, adalah "jangkar" (a). Dialah yang mendefinisikan fungsi yang bertanggung jawab untuk dua huruf pertama dalam judul standar - hypertext. Tanpa jangkar (atau tautan), HTML akan menjadi bahasa markup teks lainnya. Ini adalah kemampuan untuk mengirim pengguna ke dokumen apa pun di dunia menggunakan universal resource locator (URL), dan fenomena menakjubkan yang disebut World Wide Web ini dibuat. Dua tahun kemudian, beberapa elemen bermanfaat ditambahkan ke HTML: html
, head
, body
, serta elemen untuk membuat formulir, tabel dan gambar.

Elemen terakhir, mungkin memainkan peran paling penting dalam sejarah Internet. Dengan memberi browser kemampuan untuk menampilkan tidak hanya teks, tetapi juga gambar, kami telah membuat teknologi baru menarik tidak hanya untuk sekelompok kecil ilmuwan dan penggemar, tetapi juga bagi jutaan pengguna biasa. Kita dapat dengan aman mengatakan bahwa inovasi ini bahkan mendorong industri untuk meningkatkan kecepatan Internet dan aksesibilitasnya bagi pengguna massal. Namun, ada fitur lain dari elemen HTML ini yang memiliki signifikansi historis. Lihat di sini:
<img src="http://ibm.com/ibm-logo.gif" />
Karena tidak mungkin untuk menanamkan gambar biner dalam file teks (setidaknya pada saat itu), elemen img
dilengkapi dengan atribut yang menunjukkan tempat di mana browser dapat menemukan file yang diinginkan. Ide sederhana ini adalah kunci dari penemuan hebat.
Kunci yang tidak pernah kami putar.
HTML 2.0 diterbitkan pada November 1995. Semua orang senang dengan fitur-fitur baru, dan mungkin mengapa tidak ada yang punya ide untuk menyarankan: mengapa kita tidak membiarkan semua elemen HTML lainnya juga menggunakan atribut ini? Bayangkan ini:
<h1 src="/website/info/title"> </h1>
Kode ini berarti bahwa konten tajuk harus dimuat dari URL ini. Mungkin tidak masuk akal untuk elemen sekecil itu, tetapi bagaimana dengan div
atau article
?
<article src="/parts/article/blog1298" />
Nah, apakah itu masuk akal sekarang? Saya tahu bahwa pada tahun 1993 kecepatan Internet tidak setinggi sekarang. Fitur-fitur baru telah memenuhi sebagian besar bandwidth yang ada, dan HTTP tidak sesuai dengan standar. Namun, tidak ada alasan untuk mencegah kemungkinan seperti itu dalam standar.
Sekarang Anda mungkin akan berpikir tentang apa pengaruh atribut ini terhadap masa depan WWW? Dengan sendirinya, mungkin tidak begitu besar. Tetapi jika kita menambahkan satu kesempatan lagi, maka hasilnya bisa sangat berbeda dari yang kita miliki sekarang. Ketika browser menampilkan halaman, itu menerjemahkan kode HTML menjadi model objek dokumen (DOM) yang terletak di memori. Model ini tetap tidak berubah hingga browser menerima permintaan untuk menggantinya dengan dokumen HTML lain. Bahkan pada tahun 1993, perangkat lunaknya tidak bekerja secara primitif. Tahun itu, ketika Netscape Navigator menggantikan browser Mosaic, Lotus 123 berusia sepuluh tahun dan VisiCalc bahkan lebih besar. Gagasan menghitung keadaan dokumen sebagai fungsi data yang dimasukkan oleh pengguna sudah terkenal dan cukup sederhana untuk diterapkan. Sayangnya, tidak ada yang berani menerapkannya ke browser. Bayangkan apa yang akan terjadi jika HTML 2.0 memiliki kesempatan ini:
<div id="name">George</div> <h1>Welcome, $name</h1>
Jika dalam spreadsheet Anda bisa merujuk ke konten sel lain, maka dokumen HTML dapat memungkinkan penggunaan variabel yang merujuk pada nilai-nilai elemen lain. Misalnya, kode di atas akan ditampilkan sebagai header Welcome, George . Variabel bisa lebih berguna di URL:
<article src="http://server.com/blog/$name"></article>
Kode di atas akan mengunduh konten artikel dari URL http://server.com/blog/George
. Dan jika nilai perubahan elemen name
, browser akan memperbarui konten hanya elemen yang satu ini. Seperti sekarang, server bertanggung jawab atas logika dan pembuatan kode HTML. Dalam hal ini, tidak perlu menggunakan AJAX dan JavaScipt. Fungsi baru ini, masih belum diusulkan oleh siapa pun, akan membuatnya mudah untuk menerapkan kotak pencarian dengan petunjuk dinamis:
<input list="find" type="text" id="term" /> <datalist id="find" src="http://server.com/search/$term" />
Jelas, mengevaluasi ekspresi jauh lebih aman daripada mengeksekusi kode program tertanam, konsekuensinya sulit diprediksi. Untuk membuat HTML lebih kompatibel dengan spreadsheet, Anda perlu menambahkan kemampuan untuk menggunakan fungsi:
@CONCATENATE(first,", ",last);

Tidak diperlukan JavaScript, DOM bayangan, atau fungsi mahal dan sangat tidak aman lainnya. Browser secara otomatis menghitung perubahan DOM berdasarkan input pengguna. Hari ini kami menyebutnya pemrograman reaktif. Sayang sekali kami butuh 26 tahun untuk membuat ini. Apakah sudah terlambat untuk mencoba mengimplementasikannya sekarang?
Anda dapat mengasumsikan bahwa versi terbaru HTML5 + CSS3 + JS sudah cukup untuk kebutuhan modern. Saya kira tidak. Kami masih berjuang dengan membuat bahkan antarmuka pengguna yang sederhana, dan dipaksa untuk menggunakan perpustakaan JS yang membingungkan seperti Angular. Bagaimana dengan komponen web? Apakah mereka dapat membuat pemrograman web lebih cepat, lebih mudah dan lebih aman? Mungkin Atau mungkin juga tidak. Yang saya tahu adalah komponen sangat mudah diimplementasikan di atas standar HTML yang tidak pernah kita miliki. Biarkan saya memperkenalkan Anda ke elemen 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>
Itu saja. Sumber daya yang dimuat di alamat yang ditentukan dalam URL komponen adalah file HTML biasa. Ini mungkin berisi variabel, fungsi, serta tautan ke komponen lain. Komponen web semacam itu dapat dengan mudah digunakan tidak hanya pada satu situs web, tetapi juga sebagai perpustakaan standar di Internet. Protokol HTTP / 2 memperkenalkan banyak fitur berguna yang akan memungkinkan HTML baru bekerja secara maksimal. JavaScript dapat dibiarkan, tetapi dalam banyak kasus itu tidak diperlukan. Kapan terakhir kali Anda perlu menggunakan makro dalam spreadsheet?