La piattaforma web è alla moda in questi giorni. Ma la piattaforma web è composta da molte parti che sono concettualmente separabili, sviluppate in tempi e ritmi diversi e (cosa più importante per me) potrebbe essere utile da soli. Fondamentalmente la piattaforma web è "un browser", ma il browser raggruppa diverse cose:
- Renderer HTML / CSS
- DOM
- scripting sul renderer e DOM (JavaScript)
- sandboxing (comprese le restrizioni di cross-site scripting, accesso limitato ai file locali, ecc.)
- il browser stesso, che è un'app GUI con un proprio aspetto e atmosfera
La mia domanda è, sono davvero l'unico a pensare che sarebbe utile avere ognuno di questi come componenti separati che sono utilizzabili da soli, mescolabili e abbinabili a versioni diverse l'uno dell'altro e con altri strumenti di programmazione? I renderer / DOM sono quelli che mi piacerebbe davvero vedere astratti, perché HTML / CSS è un modo molto carino per descrivere le interfacce, ma è fastidioso che possa essere usato solo per descrivere le interfacce su una pagina web.
In particolare, il collegamento tra il motore di rendering, JavaScript e la GUI del browser sembra quasi impenetrabile. Questo rende davvero noioso usare HTML / CSS per la progettazione dell'interfaccia, perché la tua interfaccia sarà sempre in esecuzione in un browser che non controlli, e devi usare JavaScript. Confrontalo con altri toolkit di interfaccia (come Tk, Qt, Wx), che spesso hanno legami con più linguaggi di programmazione e possono essere sfruttati in app standalone su cui hai il controllo totale. (Ciò significa, ad esempio, che le preferenze degli utenti di tutto il browser per cose come i caratteri possono interferire con la presentazione e significa che tutti i menu, le scorciatoie da tastiera o altri strumenti di interfaccia utente devono competere con quelli del browser che li include.) p>
In modo simile, è molto difficile scrivere qualcosa che abbia un'interfaccia HTML / CSS, ma memorizza i dati sul tuo computer locale, perché i browser pensano che sia un'app web non sicura, anche se quello che vuoi sia solo un " app normale ".
So che ci sono storici ragioni per cui la gente ha fatto tutto questo insieme, ma trovo sconcertante che in nessun momento la gente abbia pensato che sarebbe valsa la pena creare un motore di rendering separato e collegabile che potesse essere utilizzato con più linguaggi di programmazione o un "browserapp maker" che eseguirà una singola app Web nella propria finestra o qualcosa di simile.
Oppure, queste cose esistono già? Sono a conoscenza di cose come i widget Web nei toolkit della GUI e XULRunner, ma per quanto posso vedere questi sembrano ancora incorporare un amalgama simile a un browser di diversi componenti. (In particolare, non sembra esserci un motore di rendering stabile e maturo con collegamenti di accesso DOM per lingue diverse da JavaScript.) Ciò li rende più pesanti e meno integrabili in un'applicazione di quanto sarebbe se si potesse semplicemente prendere un HTML rendering libreria allo stesso modo in cui acquisisci Qt o una libreria PNG o qualsiasi altra cosa.