这个是一个简单的捕获网页渲染完毕的耗时统计
并且写入到了加入了日志 用于测试
'''
#引入我们的template_rendered这变量 待会儿用于监听信号
from flask import Flask,template_rendered,render_template,before_render_template,g
import time
app=Flask(__name__)
@app.route('/') #定义一个首页路由
def index():
return render_template('index.html') #在这个路由里面 我放入了一些视频和图片 地址都是网络地址
@app.route('/home/')
def home():
return render_template('home.html') ##在这个路由里面 我放入了很多图片 地址也都是网络地址
#在页面渲染之前的钩子函数 记录开始的时间
def start_msg(sender,template,context):
start_time = time.time()
print(start_time,111111)
#保存到我们的g变量中
g.stime=start_time
before_render_template.connect(start_msg)
#在页面渲染完毕的钩子函数 记录页面渲染完毕的时间
# 拿到不同高度时间 然后写入日志
def page_loading_log(sender,template,context):
end_time = time.time()
print(end_time,222222)
print(f'{end_time-g.stime}',template,':这是页面渲染的时间')
#当我们进入home的时候 这里打印的:
#0.0010037422180175781<Template 'home.html'> :这是页面渲染的时间
#当我们进入/这里打印的:
#0.001003742218017578 <Template 'index.html'> :这是页面渲染的时间
#由此可以拿到了进入不同页面 返回的不同的渲染时间
# 然后我们就可以写入log日志了
template_rendered.connect(page_loading_log)
if __name__=='__main__':
app.run(debug=True)
总结
#template_rendered 这个是视图渲染之后 发送的信号
#我的理解是相当于 vue中的 mounted生命周期函数 DOM视图渲染完毕之后
#这个在vue中最常用。可以说是最核心的生命周期函数 在学习vue项目的时候
这玩意天天用 几乎达到了离不开它的地步
'''
因为 DOM树 也就是元素标签 必须在视图渲染之后我们才能拿到
所以我们这个函数里面使用的逻辑 通常都是对DOM树的操作
而flask并不能直接操作DOM树 相对比用vue操作dom树 或者js直接操作
更加的便捷
我想了半天 这玩意在flask中可以干嘛?
终于让我想到了:
可以帮我们检测性能?比如网页渲染完毕的耗时?
之后的学习 应该还能找到这个钩子函数更多的用途把