模板引擎原理

1》模板概念

通常是指嵌入某种动态编程语言代码的文本数据模板通过某种形式的结合可以变化出不同的结果,模板通常用来定义显示的形式,能够使数据展示更加丰富,而且容易维护

2》模板的好处

1)简化了html书写

2)通过编程元素(比如循环和条件分支),对数据的展现更具有控制力

3)分离数据与展现,使得展现的逻辑和效果更易维护

3》模板引擎

通过分析模板,将数据和模板结合在一起输出最后的结果的程序称为模板引擎

从模板引擎的实现上看,需要依赖编译语言的动态编译或者动态解释的特性,以简化实现和提高性能

4》实现原理

先获取html中对应的id下的innerHTML,利用开始标签和关闭标签进行字符串切分,其实是将模板划分成两部分内容,一部分是html部分,一部分是逻辑部分,通过区别一些特殊符号比如each,if等来讲字符串拼接成函数式字符串,将两部分各自经过处理后(正则处理),再次拼接到一起,最后将拼接好的字符串采用new

Function()方式转换成所需要的函数

1.正则抠出要匹配的内容

2.装入数组

3.分辨js逻辑部分

4.引擎函数

5.把data扔进去

5》相关知识

1)模板存放:模板一般放置到textarea/input等表单控件或者script等标签中

<script type="template" id="tempalte">

   <h2>
      <a href="{{href}}">
          {{title}}
      </a>
  </h2>
  <img src="{{imgsrc}}" alt="{{title}}">

</script>

2)模板获取:一般通过ID获取

document.getElementById("id");

3)模板函数:一般都是templateFun("id",data),id是存放模板字符串的元素id,data是需要装载的数据

模板解析编译:模板解析主要是指将模板中js语句和html分离出来,编译的话将模板字符串编译创最终的模板

6》高效的秘密

预编译:编译赋值过程是在渲染之前完成的,arttemplate模板编译器会根据一些简单的规则提取好所有模板变量,声明在渲染函数头部

更快的字符串相加方式:IE6-8浏览器下,push方法拼接字符串会比+=快,现代浏览器+=会比push方法快。

Arttemplate根据js引擎特性采用两种不同的字符串拼接方式

7》调试模式原理

前端模板引擎不像后端模板引擎,它是动态解析,所以调试器无法定位到错误,而arttemplate通过巧妙的方式让模板调试可以精确定位到引发渲染错误的模板语句

1)支持两种类型的错误捕获

(1)渲染错误:一般是因为模板数据错误或者变量错误产生的,渲染的时候只有遇到错误才会进入调试模式重新编译模板,而不会影响正常的模板执行效率,模板引擎根据模板换行符记录行号当执行过程遇到错误,立马抛出异常模板对应的行号,模板调试器再根据行号反查模板对应的语句并打印到控制台

(2)编译错误:一般是模板语法错误,如不合格的嵌套,未知语法等,由于arttemplate没有进行完整的词法分析,故无法确定错误源所在的位置,只能对错误信息与源码进行原文输出,供开发者判断

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要安装Jinja2模板引擎。你可以通过以下命令来安装: ``` pip install jinja2 ``` 然后,你可以按照以下步骤创建一个模板: 1. 创建一个模板文件,比如`template.html`,在其中定义需要呈现的数据和模板语法。例如: ```html <!DOCTYPE html> <html> <head> <title>{{ title }}</title> </head> <body> <h1>{{ heading }}</h1> <p>{{ body }}</p> </body> </html> ``` 在这个模板中,我们使用了Jinja2的模板语法,例如`{{ title }}`,`{{ heading }}`和`{{ body }}`等,它们会在模板被呈现时被替换为实际的值。 2. 在Python代码中,你需要导入Jinja2,并且创建一个模板环境。例如: ```python from jinja2 import Environment, FileSystemLoader # 创建一个模板环境 env = Environment(loader=FileSystemLoader('.')) ``` 这里我们使用了`FileSystemLoader`来加载模板文件,`'.'`表示模板文件在当前目录下。 3. 加载模板文件并呈现数据。例如: ```python # 加载模板文件 template = env.get_template('template.html') # 呈现数据 output = template.render(title='My Title', heading='My Heading', body='My Body') # 输出呈现后的HTML print(output) ``` 在这里,我们首先使用`env.get_template`方法加载模板文件,然后使用`template.render`方法呈现数据,并将呈现后的HTML保存在`output`变量中。最后,我们输出呈现后的HTML。 以上就是使用Jinja2模板引擎创建模板的基本步骤。当然,在实际的应用中,你可能需要更复杂的模板和更多的数据,但是基本的原理都是相同的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值