Prima di tutto, c'è un nome per questo come un modello di design in buona fede? Al momento mi riferisco solo a questo come "non invadente javascript". Ecco un breve esempio di ciò di cui sto parlando:
1.) Utilizza gli attributi HTML5 data- * per definire i valori che verranno utilizzati negli script UX. Qualcosa del genere:
<input type="date" data-app-calendar="datepicker" />
2.) Utilizzare lo script per inizializzare i comportamenti di javscript utilizzando questi attributi di dati
(function($) {
$.app = $.app || {};
$.app.obtruders = $.app.obtruders || {};
$.app.obtrude = function(selector) {
var obtruder, obtruders = $.app.obtruders;
for (obtruder in obtruders) {
if (!obtruders.hasOwnProperty(obtruder)) continue;
if (typeof obtruders[obtruder] === 'function')
obtruders[obtruder].apply(this,
Array.prototype.slice.call(arguments, 0, 1) || document);
}
};
$.extend($.app.obtruders, {
calendar: function (selector) {
$(selector).find('[data-app-calendar=datepicker]').datepicker();
}
});
$(function () {
$.app.obtrude(document);
});
})(jQuery);
Ciò che si finisce con, imo, è il markup di presentazione che è separato molto chiaramente dagli script comportamentali. L'esempio sopra è semplice, ma puoi estenderlo a UX scriptable più complesso come google maps (sto lavorando su questo al momento). Puoi addirittura aggiungere nuovi "elementi di disturbo" in file javascript separati estendendo il letterale dell'oggetto $ .app.obtruders.
Prima di iniziare a utilizzare questo modello più ampiamente nella nostra app, volevo scegliere cervelli per opinioni e cercare di ottenere idee su alcuni potenziali svantaggi di un approccio come questo. Cosa ti piace di questo modello? Cosa non ti piace? Perché sceglieresti di non usarlo?