Rails 中的 RJS 模板

Rails 自從 1.1版開始引入了 rjs 模板,目的是爲了解決渲染一個模板執行多個 JavaScript 代碼塊的問題。rjs 模板基於 prototype 的 ajax 類,渲染一個 rjs 模板的同時,會將 response 的 content-type 設置爲 text/javascript,如果該 request 是有 Ajax.Request 或者 Ajax.Updater 發出的,並且 evalScripts 設置爲 true,那麼如果返回的報文頭將會使返回的 JavaScript 自動被執行。

利用這個特性,可以做到一個調用更新多個 html 元素的目的(Update Multiple Elements by One Request)。比如以下 rjs 模板:

page.update_html 'container', :partial => 'partial_page'
page.visual_effect :highlight, 'container'
page.alert 'Updated Successfully'

將會更新 container 元素的內容,然後有一個 highlight 的效果,最後彈出一個 Updated Successfully 的對話框。

再聯繫到 inu.cc 的現有框架,過渡依賴於局部渲染。全局傳參的架構確實很保險,但是過於臃腫,現在回想起來甚至有點違背了 rails 本身倡導的 agile 的思想。既然有現成的、符合使用慣例的實現方式,爲何要自己另外建立一套框架?這點確實是設計初期沒有考慮到的。結果導致了當前架構的不易維護。

吃一塹長一智,在此記錄下以前忽略的幾種模式:慣例優先、默然渲染、rjs、rxml,以及提供各種常用服務的開發包。希望這些記錄能夠使 inu.cc 的下一個版本更加快速、敏捷、易維護,同時能帶來更好的用戶體驗。

RJS API:RJS Api on http://api.rubyonrails.org
發佈了0 篇原創文章 · 獲贊 0 · 訪問量 919
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章