Javascript持有页面状态 - 最佳做法?

时间:2011-11-02 17:30:43

标签: javascript ruby-on-rails ruby model-view-controller erb

我正在使用ruby on rails对Web应用程序进行原型设计。

我是rails的新手,但这个问题与MVC编程有关。

过去,当我的模型保存了一些需要从我的javascript文件中访问的相关信息时,我会在模板中使用一些内联javascript并将其转储到全局变量中:

<script type="text/javascript"> 
    var nodes=<%= @nodes.to_json.html_safe %>;
</script>

然而,在制作中我的计划是使用uglifier来压缩我的javascript文件,我的猜测是它不会知道将我的erb文件中的节点变量重命名为与缩小的javascript同步。

(我想将它存储在一个命名的隐藏输入中可能会解决缩小问题,但感觉更糟糕......)

所以我的问题是:

除了在全局命名空间中转储json对象之外,您能否建议更多优雅的替代方法来存储页面状态?

最好是在rails中,但我也很想知道人们如何在其他mvc框架中解决这个问题......

由于

1 个答案:

答案 0 :(得分:2)

内联JavaScript非常糟糕。当你将JS值创建为字符串时,这会增加一倍。它会产生可维护性问题,应该永远放弃你的技巧。 JavaScript属于外部JavaScript文件,这些文件应该是静态的。

你想要的是:

(查看文件)

<div id="nodes"><%= @nodes.to_json %></div>

(CSS)

#nodes { display: none; }

(JavaScript的)

var nodes = JSON.parse($('#nodes'))

无论您的服务器端语言如何,都是如此。

Bonus Rails特定提示:使用Haml代替ERb,使用Sass代替CSS。好多了。