使用 Flask 数据生成 Javascript.坏主意
Using Flask data to generate Javascript. Bad idea?
在自学Flask的过程中,我已经养成了在一些模板中做这样的事情的习惯:
<script type="text/javascript">
{% for r in reviews %}
$('#{{ r.review_id }}-starrating').raty({readOnly: true, score: {{ r.rating/100 * 5 }} });
{% endfor %}
</script>
当我第一次需要完成这样的事情时,我没有三思而后行。但是现在回到这段代码让我担心。这算不算不好的做法?我应该怎么做?
这是一个很好的问题,表明你已经对什么是好的/坏的编程有了一定的直觉。 做你所描述的事情并没有错:我的意思是它会起作用,而且对某些人来说效果很好。
但是,根据我的经验,虽然琐碎的事情很容易,但一旦应用程序变得冗长和繁忙,维护起来就会变得棘手。 我认为违反的编程原则被称为maintaining a separation of concerns
。 问题是您正在编写的代码必须同时遵循两个范围:服务器和客户端;一次专注于一个总是更容易。
快速简化问题的一种方法是编写一个纯 javascript 例程,然后使用服务器生成的数据调用该例程。
这可能是这样的:
// a pure js function
function render_rating(elid, rating){
$elid.raty({readOnly: true, score: rating/100 * 5})
}
并在其他地方整齐地列出所有调用:
<script type="text/javascript">
// server generates a list of function calls which render the ratings client side
{% for review in reviews %}
render_rating('#{{review.id}}-starrating', {{review.rating}});
{% endfor %}
</script>
这个想法是将代码分成两个不同的片段,这样很明显"这是发生在客户端上的事情"和"这是发生在服务器上的事情"。
当javascript例程变得冗长而复杂时(如ajax应用程序),这种想法使得创建静态(可缓存)javascript变得更加容易,这些JavaScript可以由嵌入到html中的服务器端生成的数据调用,并且随着事情变得更加先进,由其他js例程调用调用,这些js例程正在作用于ajax api调用返回的数据。
相关文章:
- 将变量从Flask传递到JavaScript
- 调用Javascript中的Python函数,读取静态文件(Flask)
- 如何在javascript中访问flask配置
- 通过Flask将Javascript变量解析为Python
- Javascript framework for Flask
- flask forms and javascript
- 使用AJAX上传文件、处理并使用Flask将结果返回到Javascript
- 将Flask中的变量显示为javascript代码时出错
- 使用Flask动态更改Javascript
- Javascript将从Flask发送的字符串计算为整数
- 在 Flask 中分离 html 和 JavaScript
- 将 JavaScript 变量传递给 Flask url_for
- 使用 Flask 数据生成 Javascript.坏主意
- 如何在模板中将数据从 Flask 传递到 JavaScript
- 将参数从 Javascript 传递到 flask python 脚本
- Flask wtf.quick_form运行一些 JavaScript 并设置表单变量
- babel flask jinja javascript hell
- Flask- WTF with knockout.js , JavaScript and Ajax
- 如何在 Flask 中构建动态 JavaScript 创建
- Javascript, flask,确保每个“类型”至少有一个复选框被选中