From ef23edbb31ae3a40c2e59692b92295fcfc22797f Mon Sep 17 00:00:00 2001 From: Neil Date: Sun, 26 Mar 2023 01:43:26 +0000 Subject: [PATCH] update src/utils/template.js. Signed-off-by: Neil --- src/utils/template.js | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/src/utils/template.js b/src/utils/template.js index e441bd6..d012e03 100644 --- a/src/utils/template.js +++ b/src/utils/template.js @@ -192,32 +192,29 @@ } function compiler(tpl, opt) { var mainCode = parse(tpl, opt); - - var headerCode = '\n' + - ' var html = (function (__data__, __modifierMap__) {\n' + - ' var __str__ = "", __code__ = "";\n' + - ' for(var key in __data__) {\n' + - ' __str__+=("var " + key + "=__data__[\'" + key + "\'];");\n' + - ' }\n' + - ' eval(__str__);\n\n'; - - var footerCode = '\n' + - ' ;return __code__;\n' + - ' }(__data__, __modifierMap__));\n' + - ' return html;\n'; - + var headerCode = ` + var html = (function (__data__, __modifierMap__) { + ${Object.keys(opt).map(key => `var ${key} = __data__["${key}"];`).join('\n')} + `; + var footerCode = ` + ;return __code__; + }(__data__, __modifierMap__)); + return html; + `; var code = headerCode + mainCode + footerCode; - code = code.replace(/[\r]/g, ' '); // ie 7 8 会报错,不知道为什么 + try { - var Render = new Function('__data__', '__modifierMap__', code); + var Render = typeof Function !== 'undefined' ? new Function('__data__', '__modifierMap__', code) : null; + if (Render) { Render.toString = function () { - return mainCode; - } - return Render; + return mainCode; + }; + } + return Render; } catch(e) { - e.temp = 'function anonymous(__data__, __modifierMap__) {' + code + '}'; - throw e; - } + e.temp = `function anonymous(__data__, __modifierMap__) { ${code} }`; + throw e; + } } function compile(tpl, opt) { opt = clone(o, opt); -- Gitee