我正在使用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框架中解决这个问题......
由于
答案 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。好多了。