我已经看到有模板解析器将模板转换为不那么易读的形式,所以我想到了如何从已经解析过的PHP发送模板。
有些模板很大,有很多表达式。这会改善性能吗?即使它是一个可以忽略不计的因素,它是否会使浏览器不再重新解析模板?
如果是这样,我已经查找了该函数,并尝试重载它,以便我能理解这些变量的含义,如下所示:
Ractive.parse = function (a) {
var b = arguments[1]; console.log('b', b);
void 0 === b && (b = {});
var c, d, e, f, g, h; console.log('c,d,e,f,g,h', c, d, e, f, g, h);
if (c = { v: 1 }, m.test(a)) {
console.log('m', m);
for (d = a, a = ""; g = m.exec(d);) {
if (f = g[1], a += d.substr(0, g.index), d = d.substring(g.index + g[0].length), h = n.exec(d), !h || h[1] !== f)
throw new Error("Inline partials must have a closing delimiter, and cannot be nested");
(e || (e = {}))[f] = new j(d.substr(0, h.index), b).result, d = d.substring(h.index + h[0].length)
}
c.p = e
}
console.log('j',j)
return c.t = new j(a, b).result, c
}
但我没有超载它。要么我愚蠢还是不这样做。
我想" port"将parse
函数导入PHP,这样我就可以将预解析后的模板发送给应用程序。 (并且在防盗方面有一个很大的优点,因为当他们看到这种模板时,其他人可以真正改变那么多)
我想知道是否有可能获得standalone
解析功能,因此我可以将其移植到PHP。
答案 0 :(得分:1)
解析代码在github上here
话虽这么说,如果您要预先填写模板,它通常只会在构建过程中发生,而不是每次都提供模板。现有多种方法可以预先准备Ractive模板。结帐:http://docs.ractivejs.org/latest/tips。
其中大多数使用node,但您甚至可以使用构建页面在浏览器中解析它们并将它们发布到服务器。
将任何这些选项集成到您的构建过程中似乎比将解析器移植到PHP更容易,但这取决于您。