/**
* 模板引擎
* @param {*} option
*/
function JRazor(option) {
this.settings = {
razor: '`', //标记js代码的字符
razorEncodeChar: '´', //标记js代码的字符的转义字符
openLog:true //是否在控制台输出预编译日志
}
if (option) {
if (option.razor !== undefined) {
this.settings.razor = option.razor;
}
if (option.razorEncodeChar !== undefined) {
this.settings.razorEncodeChar = option.razorEncodeChar;
}
if(option.openLog!==undefined){
this.settings.openLog=option.openLog;
}
}
/**
* 执行模板引擎
* @param {HTMLBaseElement} template 模板元素
* @param {*} model 数据模型
*/
this.execute = function (template, model) {
let templateText = template.innerHTML; //模板中的文本
let codeArray = templateText.split("\n"); //用换行符分割的代码数组
let compiledCode = "let _html='';\n"; //预编译的代码
for (let i = 0; i < codeArray.length; i++) {
let item = codeArray[i];
let itemTrim = item.trim();
if (itemTrim.startsWith(this.settings.razor)) {
compiledCode += itemTrim.substr(1) + "\n";
} else {