Ruby on Rails 學(xué)習(xí)(一)——淺談MVC框架

對于一名 rails 服務(wù)器開發(fā)的初學(xué)者车伞,首先需要理解的就是MVC框架以及rails程序中數(shù)據(jù)在MVC之間的傳遞過程。

一.MVC框架簡介

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯盹牧、數(shù)據(jù)、界面顯示分離的方法組織代碼励幼,將業(yè)務(wù)邏輯聚集到一個部件里面汰寓,在改進(jìn)和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務(wù)邏輯苹粟。MVC被獨(dú)特的發(fā)展起來用于映射傳統(tǒng)的輸入有滑、處理和輸出功能在一個邏輯的圖形化用戶界面的結(jié)構(gòu)中。

上述描述是百度百科對MVC框架的簡要定義嵌削。MVC是一個框架模式毛好,其中:

  • Model(模型):處理數(shù)據(jù)及業(yè)務(wù)邏輯,通常負(fù)責(zé)對數(shù)據(jù)庫進(jìn)行存取操作苛秕。
  • View(視圖):顯示用戶界面肌访,處理數(shù)據(jù)顯示,通常依據(jù)模型數(shù)據(jù)來創(chuàng)建艇劫。
  • Controller(控制器):處理用戶請求及應(yīng)用邏輯场靴,通常控制器負(fù)責(zé)從視圖讀取數(shù)據(jù)港准,控制用戶輸入,并向模型發(fā)送數(shù)據(jù)咧欣。

使用MVC框架的程序被分成三個核心部件:模型浅缸,視圖,控制器魄咕。同時衩椒,它也強(qiáng)制性的使應(yīng)用程序的輸入,處理和輸出分開。

MVC 分層有助于管理復(fù)雜的應(yīng)用程序毛萌,同時也簡化了分組開發(fā)苟弛。不同的開發(fā)人員可同時開發(fā)視圖、控制器邏輯和業(yè)務(wù)邏輯阁将。

二.Rails中的MVC框架

Rails是一個全棧式的MVC框架膏秫,換句話說,通過Rails可以實(shí)現(xiàn)MVC模式中的各個層次做盅,并使它們無縫地協(xié)同運(yùn)轉(zhuǎn)起來缤削。

  • ActiveRecord(Model層):是 Rails 的 ORM 組件,負(fù)責(zé)與數(shù)據(jù)庫溝通吹榴,讓我們可以用面向?qū)ο蟮恼Z法操作數(shù)據(jù)庫亭敢。
  • ActionView(View層):在Rails中使處理View的部件,負(fù)責(zé)顯示用戶的界面以及controller傳來的數(shù)據(jù)图筹。
  • ActionController(Controller層):主要負(fù)責(zé)處理 Web 請求帅刀,檢索模型數(shù)據(jù)并按要求將數(shù)據(jù)傳遞給視圖≡妒#控制器是模型和視圖的聯(lián)系橋梁扣溺。

三.Rails中數(shù)據(jù)在MVC框架中的傳遞

image

數(shù)據(jù)在MVC框架中的傳遞如上圖所示。上圖的執(zhí)行步驟為:

  1. 瀏覽器發(fā)送HTTP request請求給rails服務(wù)器民宿;
  2. 路由(Routing)根據(jù)規(guī)則決定送往哪一個Controller的Action中進(jìn)行處理娇妓;
  3. 負(fù)責(zé)處理請求的controller通過action操作model;
  4. model訪問數(shù)據(jù)庫并對數(shù)據(jù)進(jìn)行操作活鹰;
  5. controller將讀取到的數(shù)據(jù)資料渲染給view模板哈恰;
  6. 回傳最終的HTML頁面給瀏覽器

其中,路由主要根據(jù)HTTP Method方法(GET志群,POST或是PUT着绷,DELETE等)以及網(wǎng)址來決定發(fā)往哪一個controller的action。

四.MVC在Rails中的體現(xiàn)——Scaffold(腳手架)

通過rails的scaffold功能我們可以創(chuàng)建一個模板锌云,這個模板上集成了model荠医,view,controller等功能桑涎,在此基礎(chǔ)上我們還可以進(jìn)行增加彬向、刪除、修改攻冷、查詢(CRUD)的操作娃胆。

首先我們需要在執(zhí)行命令:

rails g scaffold myblog

終端中會打印以下內(nèi)容:

image

使用此命令,rails會直接創(chuàng)建很多文件等曼,其中就包括與model里烦,controller凿蒜,view相關(guān)的文件。

  • model層: 在 app/models/中會有一個文件 myblog.rb,他就是 Model層的 Class
  • View 層面: 在 app/views/myblogs/中會有四 個文件胁黑,用于不同的方法顯示文章废封,修改文章等等
  • Controller 層:處理用戶的各種請求,在 app/controllers/中有一個myblogs_controller.rb 文件丧蘸,這就是控制層漂洋,會處理各種 http請求,如增刪改查文章触趴。里面有很多的函數(shù)和邏輯處理代碼氮发。

這就是在rails的scaffold中MVC架構(gòu)。

五.總結(jié)

Rails是以款非常優(yōu)秀的開源框架冗懦,它將 MVC 架構(gòu)完美的體現(xiàn)出來爽冕,而且十分的輕量級。學(xué)習(xí)rails服務(wù)器開發(fā)披蕉,我們需要很好的理解MVC架構(gòu)颈畸,這樣對以后的開發(fā)會很有幫助。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末没讲,一起剝皮案震驚了整個濱河市眯娱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌爬凑,老刑警劉巖徙缴,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嘁信,居然都是意外死亡于样,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門潘靖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來穿剖,“玉大人,你說我怎么就攤上這事卦溢『啵” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵单寂,是天一觀的道長贬芥。 經(jīng)常有香客問我,道長宣决,這世上最難降的妖魔是什么誓军? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮疲扎,結(jié)果婚禮上昵时,老公的妹妹穿的比我還像新娘。我一直安慰自己椒丧,他們只是感情好壹甥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著壶熏,像睡著了一般句柠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棒假,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天溯职,我揣著相機(jī)與錄音,去河邊找鬼帽哑。 笑死谜酒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的妻枕。 我是一名探鬼主播僻族,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屡谐!你這毒婦竟也來了述么?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤愕掏,失蹤者是張志新(化名)和其女友劉穎度秘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體饵撑,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡剑梳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了肄梨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阻荒。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖众羡,靈堂內(nèi)的尸體忽然破棺而出侨赡,到底是詐尸還是另有隱情,我是刑警寧澤粱侣,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布羊壹,位于F島的核電站,受9級特大地震影響齐婴,放射性物質(zhì)發(fā)生泄漏油猫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一柠偶、第九天 我趴在偏房一處隱蔽的房頂上張望情妖。 院中可真熱鬧睬关,春花似錦、人聲如沸毡证。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽料睛。三九已至丐箩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恤煞,已是汗流浹背屎勘。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留居扒,地道東北人概漱。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像苔货,于是被迫代替她去往敵國和親犀概。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容