Py学习  »  Django

如何管理django模板中的javascript模块?

Aaron • 6 年前 • 1845 次点击  

假设我们想要一个基于javascript的功能库(我认为是jquery): 例如:

  1. Ajax对话框
  2. 日期选择器
  3. 表单验证器
  4. 滑动菜单栏
  5. 手风琴的东西

每个代码有四部分:一些python、css、js和html。

如何安排所有这些部件,以便:

  • 每个javascript“模块”可以被不同的视图整齐地重用
  • 构成完成功能的四位代码保持在一起。
  • css/js/html部分出现在响应中的正确位置
  • 模块之间的公共依赖关系不会重复(例如:公共的javascript文件)

X---------------

如果模板在从templatetag调用时遵循%block%指令,或者有某种方法可以确保这样做是很好的。因此,可以在一个文件中为CSS、HTML和JS创建一个单独的模板,每个模板都有一个块。通过模板tag调用它,该模板是从任何视图所需的模板调用的。这没什么意义。这能不能已经有办法了?我的templateTag模板似乎忽略了%block%指令。

X---------------

把这样的媒体放在这里是很有意义的。 http://docs.djangoproject.com/en/dev/topics/forms/media/ 这可能适用于表单验证器和日期选择器示例。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30681
 
1845 次点击  
文章 [ 4 ]  |  最新文章 6 年前
thornomad
Reply   •   1 楼
thornomad    15 年前

我认为你将很难把这四个部分放在一起,然后迅速地应用它们——仅仅是因为有些部分出现在你的 <head> 标签和其他 <body> 标签。

所做的是确保为我的 base.html (以及我的基本CSS文件)…然后,我有块标签 {% block css %} {% block js %} . 继承的模板 基.html 文件可以提供自己的javascript和css(并且只提供所需的东西)。

我创建了一些模板标记,用于创建Ajax函数,其输出基于所显示的对象(例如,包括 object_id )--这就减少了重新编码。

有一件事我没试过,但我感兴趣的是 django-compress .

Hendrik M Halkow
Reply   •   2 楼
Hendrik M Halkow    13 年前

看一看 Django Sekizai 就是为了这个目的而创造的。

Peter Rowell
Reply   •   3 楼
Peter Rowell    15 年前

如果一个以上的页面使用一个给定的JS文件,您应该考虑将它们连接在一起并缩小结果。这样可以减少网络连接,从而提高整体页面加载时间。别忘了把你的过期时间延长到至少一两周。

Aaron
Reply   •   4 楼
Aaron    15 年前

我发布这个问题已经有一段时间了。我一直在做的是:

  1. 编写所需的javascript部分作为静态服务的库
  2. 使用服务器端的值从模板调用静态库中的例程

约束需要以这样一种方式编写:它只充当客户端脚本;不要试图在服务JS时从服务器注入值。最后,我发现在HTML模板中严格地应用服务器端变量不那么容易混淆。

这样我就能:

  1. 将HTML标记上的javascript选择器保留在同一个文件(即模板)中。
  2. 完全避免模板
  3. 在不同的地方重复使用每个javascript库,以及
  4. 将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>