Sono in procinto di progettare un sistema basato su browser che consentirà agli utenti non tecnici di modificare rapidamente e facilmente il contenuto di alcune parti di una pagina Web tramite un editor drag-and-drop basato su template WYSIWYG. Essenzialmente, l'utente può scegliere tra alcuni modelli preparati, rilasciare alcuni file di immagine in aree predefinite all'interno del modello, modificare alcuni testi o collegamenti in aree predefinite e il risultato si rifletterà sul sito web effettivo.
Ho un semplice prototipo dell'interfaccia dell'editor scritto in Polymer, che funziona benissimo finora. Ora sto cercando di capire il modo migliore per salvare i risultati di questo lato server e produrre l'output HTML statico finale basato su di esso. Sono piuttosto desideroso di mantenere Polymer sul lato client, poiché l'interfaccia è piuttosto complessa e dinamica e gli approcci di puro-Javascript più tradizionali possono diventare molto disordinati molto rapidamente.
Tuttavia, anche gli stessi modelli Polymer sul lato client non sono fattibili, penso; Dovrò produrre un output HTML puro, compatto, non Javascript, altamente compatibile.
La soluzione ovvia sarebbe quella di preparare due parti allo stesso modello: una versione Polymer modificabile che si traduce in un certo numero di attributi memorizzati sul server (ad esempio template: 1, placeholder1: imageXYZ, placeholder2: "Foobar", etc.
), insieme ad un processo di rendering lato server che richiede questi dati e produce l'output HTML finale. Il problema è che questo richiede due versioni dello stesso modello HTML da mantenere sincronizzate.
Un'altra soluzione potrebbe essere quella di produrre alcuni meta-modelli dai quali sia una versione modificabile sia il risultato reso possono essere prodotti a livello di programmazione; questo approccio sembra tuttavia molto complesso, forse troppo complesso per lo scopo di questo progetto.
Esistono altri approcci ben noti per affrontare questo problema, o librerie / sistemi / approcci meta-template ben definiti che funzioneranno bene nel mio scenario? O dovrò semplicemente mordere il proiettile e accettare la ridondanza come parte del compito?