求教如何把模块变量放入js文件内

2013-03-10 16:57:06 +08:00
 chainchan
如果js是嵌在html模板内的情况:
<script type="text/javascript">
var a= {{ obj['a'] }};
<script>

但是如果我要把上面的内容全部放入一个js文件

<script type="text/javascript" src="xxx.js"></script>


那我应该如何在 xxx.js 内使用 {{ obj['a'] }} 这个变量呢?
4829 次点击
所在节点    Tornado
10 条回复
bixuehujin
2013-03-10 17:00:13 +08:00
window.a = {}
coolicer
2013-03-10 17:04:56 +08:00
这样符合语法吗? {{ }}
chainchan
2013-03-10 17:11:59 +08:00
@bixuehujin @coolicer
是 Tornado 渲染模板时的语法
zhangxiao
2013-03-10 17:23:50 +08:00
如果你的js文件里没有封一个闭包,那直接用就可以。如果封了,在闭包里 window.a = {},外面也可以用
binux
2013-03-10 17:37:55 +08:00
.js不要放静态文件夹下,当做模版,xxx.js 内

var a= {{ json_encode(obj['a']) }};

然后该怎么用就怎么用啊
chainchan
2013-03-10 17:42:36 +08:00
@binux
也就是说没有办法把 {{ json_encode(obj['a']) }} 这个变量用在静态js文件里面。
而只能放在html模板的<script>标签里面,是吗?

因为js写着写着很长了,放html不直观,所以想抽成一个文件…
binux
2013-03-10 17:44:23 +08:00
@chainchan 但是,.js本身可是是模版啊,render("xxx.js", obj=obj)
reorx
2013-03-10 20:11:40 +08:00
尽量避免在 Javascript 里,无论是嵌在 html 还是单文件的,引用模版变量。如果一定要用的话,可以把模版变量放在某个 html element 的 attribute 里,比如 <div data-a={{ obj['a'] }}>,再通过 Javascript 取出来。一般来说这种模版变量都跟某个 element 有关系的吧。
chainchan
2013-03-10 20:46:52 +08:00
楼上2位已感谢~

@reorx
一下点通了,貌似么什么需要问了 =。=
enj0y
2013-03-11 01:09:02 +08:00
不建议楼主将变量写进JS。
因为JS在HTTP输出时通常包含了HTTP CACHE缓存控制头,一旦变量发生变化,不易及时在程序中及时更新到最新的变量值。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/62489

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX