對于一名 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框架中的傳遞
數(shù)據(jù)在MVC框架中的傳遞如上圖所示。上圖的執(zhí)行步驟為:
- 瀏覽器發(fā)送HTTP request請求給rails服務(wù)器民宿;
- 路由(Routing)根據(jù)規(guī)則決定送往哪一個Controller的Action中進(jìn)行處理娇妓;
- 負(fù)責(zé)處理請求的controller通過action操作model;
- model訪問數(shù)據(jù)庫并對數(shù)據(jù)進(jìn)行操作活鹰;
- controller將讀取到的數(shù)據(jù)資料渲染給view模板哈恰;
- 回傳最終的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)容:
使用此命令,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ā)會很有幫助。