如何在Django应用中共享JavaScript、Python和CSS的配置数据?
我有一些东西,比如Javascript、Django模板、Python代码和CSS,它们都需要用到同样的配置数据。请问,最好的配置位置在哪里呢?
具体来说,我在浏览器里有一个Javascript的小工具,它控制着一个嵌入的Java应用。当用户完成操作后,Javascript会向这个Java小程序请求结果的图片,这张图片会嵌入到HTML里。用户可以选择图片的大小,是小、中还是大。然后,这张图片和用户的选择会通过AJAX请求发送到我的Django应用,Django会进行一些输入验证。当HTML被显示出来时,它会包含我的CSS,而我的CSS里有一些特殊的标记,用来以不同的方式展示这些图片。
虽然有人问过一个类似的问题,但得到的答案要么是“用DSL”,要么是“用XML或JSON这样的格式”。但这些都不适合用在CSS里。
我想到的两个解决方案是:
- 把数据放在Python里,通过Django的表单/模板生成HTML。同时让Django动态生成Javascript配置和CSS。
我不喜欢这个方案,因为我更希望我的Javascript和CSS是静态提供的。
- 引入一个构建步骤,把配置数据应用到模板上,生成相应的Javascript、HTML、CSS和Python文件。
但这样会让事情变得更复杂,因为我会有一些特殊的“*.in”文件来生成实际的文件,大家都得注意知道哪些文件是需要编辑的。
你们是怎么做的呢?
2 个回答
0
我觉得一个很好的方法是通过一些编码规则,用JSON数据结构间接地表达一个领域特定语言(DSL)。然后再加一个单独的构建步骤,利用这些数据来生成所需的配置文件。如果这个构建步骤的工具是用Python写的,那么创建、维护和改进这些工具应该会比较简单。
4
使用JSON格式。动态生成CSS样式,并利用缓存来减少加载时间。