gpt4 book ai didi

javascript - 使用 Flask 数据生成 Javascript。馊主意?

转载 作者:行者123 更新时间:2023-11-30 00:33:26 25 4
gpt4 key购买 nike

在自学 Flask 的过程中,我养成了在我的一些模板中做这样的事情的习惯:

<script type="text/javascript">
{% for r in reviews %}
$('#{{ r.review_id }}-starrating').raty({readOnly: true, score: {{ r.rating/100 * 5 }} });
{% endfor %}
</script>

当我第一次需要完成这样的事情时,我没有三思而后行。但是现在回到这段代码让我担心。这被认为是不好的做法吗?我应该怎么做呢?

最佳答案

这是一个很好的问题,表明您已经对什么是好的/坏的编程有了一些直觉。按照您的描述进行操作并没有错:我的意思是它会起作用,并且对某些人来说效果很好。

但是,根据我的经验,虽然琐碎的事情很容易,但一旦应用程序变长且繁忙,维护起来就会很棘手。我认为违反的编程原则称为维护关注点分离。问题是您正在编写的代码必须同时考虑两个范围:服务器和客户端;一次专注于一个总是更容易。

快速简化问题的一种方法是编写一个纯 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 变得更加容易,由其他 js 例程调用,这些例程作用于 ajax api 调用返回的数据。

关于javascript - 使用 Flask 数据生成 Javascript。馊主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28290278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com