Sto cercando di sviluppare un modo semplice per creare modelli in JavaScript. L'idea di base è che ho HTML in una pagina che rappresenta l'interfaccia utente di un oggetto in JavaScript e le variabili in quell'HTML che vengono sostituite con le proprietà dell'oggetto JavaScript. Pensala come una tecnica per il binding degli oggetti JavaScript alle presentazioni HTML.Migliorare una semplice tecnica di template JavaScript
Eventuali critiche? Dovrei usare in qualche modo frammenti di documenti? Sto essenzialmente cercando una recensione del codice su questo. Apprezzerei qualsiasi feedback. (Nota che questo dovrebbe essere indipendente dal framework.) Ecco un exmaple funzionante.
<html>
<body>
<!-- where templates will be injected into -->
<div id="thumbContainer"></div>
<!-- template used for thumbnails -->
<div id="thumbTemplate" style="display:none">
<div class="thumb">
<div>${caption}</div>
<div>${image}</div>
</div>
</div>
</body>
<script type="text/javascript">
(function() {
// Cache the templates' markup in case that template is used again
var cache = [];
// Magic
document.templatized = function(templateId, properties) {
// Get the template from cache or get template and add to cache
var template = cache[templateId] || (function() {
cache[templateId] = document.getElementById(templateId).innerHTML;
return cache[templateId];
})();
// Create the DOM elements that represent the markup
var shell = document.createElement('div');
shell.innerHTML = template.replace(/\$\{(\w+)\}/g, function(match, key){
return properties[key] || match;
});
// Return those DOM elements
return shell.children[0].cloneNode(true);
};
})();
// Create DOM elements with values bound to thumbnail object
var thumb = document.templatized('thumbTemplate', {
caption: 'Summer',
image: (function() {
// More complicated logic that requires conditions here...
return '<img src="test.png" />';
})()
});
// Display on page by inserting into DOM
document.getElementById('thumbContainer').appendChild(thumb);
</script>
+1 per // magic – cherouvim
Haha, grazie! :) La caratteristica di codifica – JamesBrownIsDead