React boilerplate

This commit is contained in:
Borys_Levytskyi
2016-11-20 18:59:05 +02:00
parent 6f5f547361
commit de0dfba04f
40 changed files with 391 additions and 197 deletions

View File

@@ -0,0 +1,51 @@
(function(app) {
"use strict";
function Template(html, isCompiled) {
this.html = html;
this.isCompiled = isCompiled === true;
}
Template.prototype.render = function (model) {
if(this.isCompiled) {
return app.get('html').element(this.process(model));
}
return app.get('html').element(this.html, model);
};
app.templates = [];
app.template = function (key) {
var tpl = this.templates[key];
if(tpl == null) {
throw new Error(key + ' template is not found');
}
return tpl;
};
app.run(function() {
readTemplates(app.get('rootView'));
});
function readTemplates(containerEl) {
var els = containerEl.querySelectorAll('[data-template]');
var store = app.templates;
Array.prototype.forEach.call(els, function (element) {
var key = element.getAttribute('data-template');
if (store[key] instanceof Template) {
console.warn(key + ' templates already registered');
return;
}
var template = new Template(element.innerHTML);
store[key] = template;
if (element.hasAttribute('data-compiled')) {
template.process = app.get('html').compileTemplate(template.html);
template.isCompiled = true;
}
});
}
})(window.app);