我发布这个问题已经有一段时间了。我一直在做的是:
-
编写所需的javascript部分作为静态服务的库
-
使用服务器端的值从模板调用静态库中的例程
约束需要以这样一种方式编写:它只充当客户端脚本;不要试图在服务JS时从服务器注入值。最后,我发现在HTML模板中严格地应用服务器端变量不那么容易混淆。
这样我就能:
-
将HTML标记上的javascript选择器保留在同一个文件(即模板)中。
-
完全避免模板
-
在不同的地方重复使用每个javascript库,以及
-
将CSS/JS/HTML片段保存在所有希望找到它们的地方
这并不完美,但它让我过得很快,直到一个更整洁的想法出现。
例如,“media/js/alertlib.js”中的JS库可能包括:
function click_alert(selector, msg){
$(selector).click(function(){ alert(msg) })
}
模板有:
<script type="text/javascript" src="media/js/alertlib.js"></script>
<script type="text/javascript">
click_alert('#clickme', {% message %})
</script>
<div id='clickme'>Click Me</div>