2011-11-02 54 views
0

我正在使用ruby在rails上構建web應用程序的原型。Javascript持有頁面狀態 - 最佳實踐?

我是一個完整的新手入門,但這個問題與MVC編程有關。

在過去,當我的模型認爲是從我的JavaScript文件訪問是需要一些相關的信息,我想有一些內嵌的JavaScript在我的模板,並將其轉儲到一個全局變量正是如此:

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

然而,在生產中,我的計劃是使用uglifier來壓縮我的javascript文件,我的猜測是,它不知道重命名我的erb文件中的節點變量與縮小的javascript同步。

(我想將其存儲在一個名爲隱藏的輸入可能會得到周圍的微小問題,但即使hackier感覺......)

所以我的問題是:

你可以提出任何更優雅存儲頁面狀態的替代方法,而不是在全局命名空間中轉儲json對象?

最好在軌,但我也有興趣,看看人們如何在其他的MVC框架解決這個問題...

感謝

回答

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。更好。

+0

看起來像一個很好的妥協。謝謝 – Chris