关于模板引擎的工作方式和性能?
时间:2023-12-10 09:36:01 | 来源:网站运营
时间:2023-12-10 09:36:01 来源:网站运营
关于模板引擎的工作方式和性能?:泻药
1、工作原理 —— 拼字符串成为代码。
那最简单的 JSP 举例(因为这货第一次运行会被编译,比较好说事儿)
如图。
<%%>内的是模板内容
<div></div> 是页面内容
当JSP运行被,编译为Servlet Class后,其实做了黄字标注的操作
<%%> 被去掉,内部即为正常的JAVA代码
<div></div> 被加引号成为字符串(回车换行也被变为转义字符)
输出字符串内容。
2、流程 —— 访问时,转换模板代码为目标源码执行,或者第一次运行时转为目标源码(缓存),后续直接调用源码运行。
所以,不管怎么样模板转换与目标代码执行肯定要消耗资源(只是消耗多点少点问题),肯定会比不用模板直接输出 HTML 来的有压力。
3、依赖性
从1原理可知,哪方实现的模板引擎,就依赖哪方。
在server端实现模板引擎时,依赖server端。
在客户端实现依赖客户端。
所以,只要在客户端实现一种模板解析方式(引擎),用来读取模板内容,分析并转为客户端可执行的程序源码,并运行,就可以脱离服务端,在浏览器端渲染页面,而不依赖服务端。
4、浏览器端模板 —— 依据原理,JS 可作:
剩下的无非是怎么用正则或者其他字符串处理手段将模板字符串拼接为js源码字符串。
并用 eval 或者 new Funciton 等手段,执行拼接后源码。
此代码可实时执行,或者如同jsp一般,第一次运行时执行模板->源码拼接,然后将拼接后源码缓存,之后执行模板不再进行重复拼接工作。
当然,此类优化手段很多,可以自己慢慢玩。
5、前端模板是否好
这是仁者见仁智者见智的事情,就不细说了,需要根据具体项目情况综合考虑。
无非就是全前置,前后各半和全后置模板这几种。
一般来说,前端模板会分担一部分服务器压力,毕竟把一(小)部分计算分摊到了客户端上。
但是可能会给(半前置)模板统一管理和更新上带来点问题。
也会给客户端增加(些许)压力。
或者会造成SEO、不支持JS浏览器如何显示等体验性问题需要解决。
6、前端模板类型
这里只根据你说的服务端模板,给出对应前端模板实现思路。
此类模板开源的有的是,GitHub 搜去吧。
实际上前端模板实现不只这(字符串拼接)一种方式,可自行拓展知识面,这里就懒得说了 = =|||