Outot mutta toimivat: API-valinnat, jotka muokkasivat koko webin
Historia.API ja webin outo perintö
Heitetäänpä haaste: mikä on omituisin selain-API jonka tiedät?
Jos työskentelet frontend-puolella, vastaus on todennäköisesti canPlayType(). Se palauttaa vain kolme vaihtoehtoa: tyhjän merkkijonon, "probably" tai "maybe". Epämääräistä kuin valistusaikojen oraakkeli.
Mutta on olemassa toinenkin API, joka todistaa webin omistautumisen taaksepäin yhteensopivuudelle: History.pushState().
Kun kutsut pushState()-metodia, sen pitäisi ottaa vastaan kolme parametria: state, title ja url. State-objekti on järkevä – se mahdollistaa datan palauttamisen, kun käyttäjä klikkaa takaisin-painiketta. Url-parametri on kätevä osoiterivin päivitykseen ilman sivun uudelleenlatausta.
Mutta se title-parametri? Se on täysin unohdettu. Kaikki selaimet ignooravat sen kokonaan.
Miksi se sitten on olemassa?
Vuonna 2008, kun History API ensimmäisen kerran hahmoteltiin, joku ajatteli että selaimien pitäisi antaa sovellusten asettaa mukautettu otsikko jokaiselle historia-enträlle. Ideana oli, että SPA voisi näyttää "Kojelauta" sovelluksessa samalla kun selain tallentaisi "Analyysiraportti".
Kuulosti järkevältä silloin. Mutta selaimet tajusivat nopeasti, että tämä loisi sekavia tilanteita – mitä tapahtuu kun käyttäjä lisää kirjanmerkkinsä historia-enträlle jonka otsikko ei匹配的 hänen välilehden otsikon kanssa?
Sen sijaan että olisi käsitelty tuota ongelmaa, selaimet yksinkertaisesti ohittivat parametrin. Silloin kuitenkin lukuisat sivustot olivat jo rakentaneet sovelluksensa odottamaan kolmea parametria. Sen poistaminen rikkoisi tuotannossa olevia sivustoja. Valinnaiseksi tekeminen aiheuttaisi sekaannusta olemassa olevissa pushState(state, url) -kutsuissa.
Joten spesifikaatio teki jotain eleganttia: se nimesi parametrin uudelleen muotoon unused ja dokumentoi, ettei sillä ole vaikutusta.
Tämä on webin likainen salaisuus – taaksepäin yhteensopivuus menee kaiken muun edelle. Web taipuu lähes mihin tahansa varmistaakseen, että vuoden 2008 koodi toimii yhä tämän päivän selaimissa.
Tämä filosofia on täsmälleen sama syy, miksi suosimme staattisia sivustoja ja testattuja web-teknologioita täällä NameOceanilla. Kun rakennat jotain pysyvää – media-arkistoja, dokumentaatiota, landing pageja – vanhan teknologian vakaus ei ole rajoite; se on ominaisuus.
Sama periaate pätee domain-rekisteröijää tai hosting-palveluntarjoajaa valittaessa. Haluat yrityksiä jotka ymmärtävät pitkän pelin. Web ei ole minnekään menossa, ja teknologiat jotka valitset tänään pitäisi toimia vielä kymmenen vuoden päästä.
Tässä on opetus sekä kehittäjille että startup-yrityksille: joskus "väärä" päätös muuttuu pysyväksi ei siksi, että se olisi oikea, vaan koska liian moni asia riippuu siitä. Tämä ei ole webin bugi – se on ominaisuus joka pitää miljoonat sivustot toiminnassa.
Kun seuraavan kerran törmäät omituiseen API:iin tai vanhentuneeseen parametriin, muista: joku teki päätöksen vuosia sitten, ja nyt se on hakattu webin perustaan. Kunnioita outoutta. Se pitää homman pyörimässä.