V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Tornado Documentation
http://www.v2ex.com/tornado/
Tornado on GitHub
https://github.com/facebook/tornado/
Tornado Gists
http://tornadogists.org/
chainchan
V2EX  ›  Tornado

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

  •  
  •   chainchan · 2013-03-10 16:57:06 +08:00 · 4915 次点击
    这是一个创建于 4253 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果js是嵌在html模板内的情况:
    <script type="text/javascript">
    var a= {{ obj['a'] }};
    <script>

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

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


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

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

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

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

    @reorx
    一下点通了,貌似么什么需要问了 =。=
    enj0y
        10
    enj0y  
       2013-03-11 01:09:02 +08:00   ❤️ 1
    不建议楼主将变量写进JS。
    因为JS在HTTP输出时通常包含了HTTP CACHE缓存控制头,一旦变量发生变化,不易及时在程序中及时更新到最新的变量值。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1273 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:20 · PVG 07:20 · LAX 16:20 · JFK 19:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.