Rails 架構學習筆記

2021-08-25 18:46:09 字數 1724 閱讀 3024

rails給web應用的結構上強加了很多約束,而正是這些約束使得應用的開發變得很容易。也許是因為無規矩不成方圓,也許是因為規定好了道路是的開發者不用在選擇面前糾結和徘徊,也許是從框架上植入了最佳實踐,是的新手不那麼容易犯前人的錯誤。。。

[size=medium][color=blue]models, views, and controllers[/color][/size]

mvc是乙個web開發中經典的甚至是事實上的標準模式。從struts的使用範圍就可見一斑。

models, 模型,負責維護應用的狀態state。這個狀態有時候是瞬間的,經過幾個使用者互動之後就消失了,有時候是持久的,需要存在應用以外的某個地方,比如db。模型不只是data,它還包含加在data只是的業務規則rule。可以把模型看做是倉庫和看守人的綜合體。

views, 檢視,負責生成使用者介面,通常是基於模型裡的data來完成的。同樣乙個模型可以根據需求有不同的展示方式,這就是有檢視來完成的。

controllers,控制器,負責編織(orchestrate)整個應用,控制和指揮。控制器接收外部事件,通常是使用者的輸入,然後和模型互動,最後向使用者展示合適的檢視。

有了mvc,你就知道把自己的**根據職責分成3個不同的方面,分別放到不同的地方。不用糾結,也不會出錯。rails利用腳手架(scaffolding)來幫助我們生成這三個地方,供你放置mvc**。

根據「約定大於配置的原則」,rails會根據mvc的約定到根據約定的規則到約定的地方找相應的mvc組建,所以無需配置。

[size=medium][color=blue]rails model support[/color][/size]

orm,就是將關係表和物件對映起來:一張表對應乙個類,表裡面的一條記錄,就是類的乙個例項物件,表的屬性就是物件的乙個屬性。相應的,類的方法來操作表,物件的方法來操作它表達的那一條記錄。

active record,rails提供的乙個orm層。還是基於約定,他負責對映工作,並且不用配置檔案。active record的功能不僅如此,他還能與mvc中的其他元件很好的互動,比如將使用者的輸入對映到模型。他是rails的模型的乙個強大的基礎工具。

[size=medium][color=blue]action pack: the view and controller[/color][/size]

rails提供了乙個元件來支援檢視和控制,這是應為他們聯絡很緊密。控制為檢視準備資料,控制還從檢視生成的頁面中獲取使用者輸入。這種緊密的集合並不意味著我們可以把這兩部分**混雜在一起。相反,rails讓我們將他們清楚的分開。

view support,作為view,可以是靜態的內容也可以是動態的內容。我們的應用中當然需要大量的動態資訊。怎麼生成動態的資訊呢?rails基於模板來生成動態資訊。它提供3中模板技術,embedded ruby (erb), xml builder 和rjs。erb就是在html裡面潛入ruby**,這個是最常用的,很靈活,但也有點違反mvc原則,很容易讓你在view裡面引入了很多邏輯,而這些邏輯本來應該在控制或模型裡面的。所以要謹慎使用,畢竟分離關注也是程式設計師的一部分職責所在。

controller support,rails 的controller是應用的邏輯中心,它協調著使用者,檢視和模型的互動。它提供了一些重要的輔助服務:

- 路由, 它負責根據url將使用者的request路由到具體的action

- 快取, 它管理快取,幫助支援高負荷的效能

- 幫助模組, 它管理helper模組,以減少view的**膨脹

- 會話, 它管理會話,給使用者以持續性的互動體驗

Rails學習筆記(二)

1 在啟動web伺服器時,可以通過加上 e選項,指定啟動時選用哪個環境 ruby script server e development test production 2 rails裡強調 慣例重用配置 從資料庫中的表,到控制器,到模型,再到檢視,命名是有關聯的!檔案的存放路徑也是有關聯的。我們在...

Rails學習筆記(四)

1 rails內建了很多驗證,在提交表單時,可以直接使用rails提供的驗證。rails中關於程度和資料庫的連線環節是在model裡的,在model裡使用validates x of可以完成常用的驗證。常用的有 1 validates presence of 用於驗證非空 輸入空格也算空 2 val...

Rails學習筆記 新增Font awesome

參考網上寫法新增font awesome 首先在gemfile中新增 gem font awesome rails require font awesome和 import font awesome 發現還是會有報錯 我的解決辦法 在gemfile中將font awesome rails改為font...