日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
前端開(kāi)發(fā)中的MCRV模式

針對(duì)前端開(kāi)發(fā)中基于ajax的復(fù)雜頁(yè)面開(kāi)發(fā)所面臨的代碼規(guī)模大,難以組織和維護(hù),代碼復(fù)用性、擴(kuò)展性和適應(yīng)性差等問(wèn)題,本文嘗試以MVC思想為基礎(chǔ),結(jié)合Web前端開(kāi)發(fā)中“內(nèi)容-結(jié)構(gòu)-表現(xiàn)-行為”相分離的開(kāi)發(fā)標(biāo)準(zhǔn),提出一種將Web頁(yè)面代碼分為視圖(View,頁(yè)面靜態(tài)部分,包括內(nèi)容、結(jié)構(gòu)、表現(xiàn))、模型(Model,負(fù)責(zé)數(shù)據(jù)緩存、數(shù)據(jù)校驗(yàn)與本地邏輯處理、發(fā)起ajax請(qǐng)求)、控制器(Controller,負(fù)責(zé)用戶(hù)和系統(tǒng)事件響應(yīng)、模型和渲染器調(diào)度)、渲染器(Renderer,對(duì)視圖的渲染,控制器與事件的綁定、數(shù)據(jù)搜集)的頁(yè)面開(kāi)發(fā)新模式,并基于此模式提出了一個(gè)開(kāi)發(fā)框架原型。

創(chuàng)新互聯(lián)自2013年起,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元新城做網(wǎng)站,已為上家服務(wù),為新城各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

關(guān)鍵字

MCRV設(shè)計(jì)模式,Javascript,MVC,Web開(kāi)發(fā)標(biāo)準(zhǔn)

1. Web前端開(kāi)發(fā)面臨的問(wèn)題

早期的Web頁(yè)開(kāi)發(fā)(Web前端開(kāi)發(fā))中,Web頁(yè)面較為簡(jiǎn)單,大多數(shù)Web頁(yè)面的功能僅限于用HTML和簡(jiǎn)單樣式展示靜態(tài)信息,或向服務(wù)器發(fā)送數(shù)據(jù),Web頁(yè)面與用戶(hù)的交互較少。隨著Web的發(fā)展,DHTML、CSS、javascript等技術(shù)出現(xiàn),Web頁(yè)不再僅限于展示靜態(tài)信息,動(dòng)態(tài)、交互成為Web頁(yè)的主流功能之一。與此同時(shí),Web頁(yè)代碼規(guī)模也變的較大,頁(yè)面中的HTML、CSS、Javascript等代碼往往混雜在一起,如何很好的組織這些代碼,使Web客戶(hù)端程序具有很好的結(jié)構(gòu),易于閱讀和維護(hù),成為Web前端開(kāi)發(fā)人員面臨的一個(gè)難題。在實(shí)踐中,業(yè)界提出了“內(nèi)容(Content) - 結(jié)構(gòu)(Structure) - 表現(xiàn)(Presentation) - 行為(Behavior)”相分離的Web頁(yè)開(kāi)發(fā)標(biāo)準(zhǔn)。在這種標(biāo)準(zhǔn)中,一個(gè)Web頁(yè)代碼可以分為如下四個(gè)部分:

內(nèi)容:頁(yè)面實(shí)際要傳達(dá)的真正信息,包含數(shù)據(jù)、文檔或者圖片等。 結(jié)構(gòu):對(duì)內(nèi)容的劃分,使內(nèi)容更加具有邏輯性,易用性;類(lèi)似頁(yè)面的標(biāo)題、作者、章、節(jié)、段落和列表。 表現(xiàn):用來(lái)描述內(nèi)容外觀,稱(chēng)之為“表現(xiàn)”,主要指CSS樣式。 行為:行為就是對(duì)內(nèi)容的交互及操作效果;行為控制主要通過(guò)javascript實(shí)現(xiàn)。

內(nèi)容 - 結(jié)構(gòu) - 表現(xiàn) - 行為(CSPB)開(kāi)發(fā)標(biāo)準(zhǔn)對(duì)Web頁(yè)包含的的代碼進(jìn)行了分類(lèi),使代碼各個(gè)部分得到很好的分離,使Web頁(yè)初步具有了良好的結(jié)構(gòu)。

隨后,Web進(jìn)入了嶄新的Web2.0時(shí)代,以Gmail為代表的Web2.0應(yīng)用大量出現(xiàn),并且取得很大的成功。這類(lèi)Web頁(yè)的典型特征是用一個(gè)基于ajax技術(shù)的無(wú)刷新的頁(yè)面完成大量復(fù)雜的功能。此類(lèi)頁(yè)面包括Web IM、Web Map、Gmail等應(yīng)用,統(tǒng)稱(chēng)為one-page Web應(yīng)用。同時(shí),在企業(yè)級(jí)Web開(kāi)發(fā)中,一個(gè)Web頁(yè)同時(shí)完成多個(gè)復(fù)雜功能的情況也越來(lái)越多。在這些復(fù)雜Web頁(yè)應(yīng)用中, Javascript代碼是此類(lèi)富客戶(hù)端應(yīng)用程序的核心,負(fù)責(zé)與用戶(hù)的復(fù)雜交互和頁(yè)面展現(xiàn)。One-page Web頁(yè)面Javascript代碼規(guī)模往往非常龐大,邏輯復(fù)雜,動(dòng)則千行以上,有時(shí)甚至需要一個(gè)團(tuán)隊(duì)來(lái)完成一個(gè)頁(yè)面的開(kāi)發(fā)。如何合理組織大量的Javascript代碼,使之具有良好的擴(kuò)展性,能夠適應(yīng)需求的變化,使代碼易于維護(hù),是廣大Web前端開(kāi)發(fā)人員面臨的一大挑戰(zhàn)。

縱觀Web應(yīng)用程序開(kāi)發(fā)的歷史,Web后端開(kāi)發(fā)(PHP、J2EE、ASP.NET)與Web客戶(hù)端開(kāi)發(fā)的發(fā)展過(guò)程有一定的相似性,曾面臨類(lèi)似的問(wèn)題。最初,Web程序功能簡(jiǎn)單,代碼較少時(shí),所有的控制、邏輯、UI展現(xiàn)代碼混雜在一起;隨著Web發(fā)展,程序規(guī)模變大,按原有方式開(kāi)發(fā)出的程序顯然不具有良好的結(jié)構(gòu),不利于大規(guī)模開(kāi)發(fā)和后期維護(hù),也不利于Web開(kāi)發(fā)人員工作和角色的進(jìn)一步細(xì)分,代碼復(fù)用性差,瓶頸開(kāi)始出現(xiàn)。Web后端程序設(shè)計(jì)者的解決方法是進(jìn)行代碼分類(lèi),將控制代碼與展現(xiàn)代碼開(kāi)始分離, 于是Web后端開(kāi)發(fā)從所謂的Model1發(fā)展到Model2;同時(shí),傳統(tǒng)桌面程序設(shè)計(jì)中的MVC(模型-視圖-控制器)設(shè)計(jì)模式被引入,負(fù)責(zé)程序數(shù)據(jù)與邏輯計(jì)算的部分進(jìn)一步分離出來(lái),形成了Web后端開(kāi)發(fā)中的MVC開(kāi)發(fā)模式。MVC設(shè)計(jì)模式貫穿了軟件工程分而治之的思想,有效解決了Web后端程序設(shè)計(jì)中的代碼組織和復(fù)用問(wèn)題。采用同一設(shè)計(jì)模式(MVC)也使代碼更容易被他人理解,保證代碼可靠性;它使Web開(kāi)發(fā)工作可以細(xì)分為業(yè)務(wù)邏輯開(kāi)發(fā)和UI展現(xiàn)開(kāi)發(fā)。因此,MVC也利于團(tuán)隊(duì)開(kāi)發(fā)。那么,MVC設(shè)計(jì)思想是否也能應(yīng)用在前端開(kāi)發(fā)中解決相關(guān)問(wèn)題呢?既然問(wèn)題具有許多相似性,筆者沿著相同的解決思路來(lái)試圖解決前端開(kāi)發(fā)中的代碼組織問(wèn)題。

2. MVC設(shè)計(jì)模式

在提出本文提出的MCRV設(shè)計(jì)模式之前,有必要對(duì)其所基于的MVC設(shè)計(jì)模式進(jìn)行闡述。

MVC這個(gè)概念很早之前就被人提起[1],它代表一種設(shè)計(jì)思想。MVC是Model-View-Conroller的縮寫(xiě),即模型 - 視圖 - 控制器。這種開(kāi)發(fā)模式將一個(gè)應(yīng)用程序分為三個(gè)部分,模型(model)實(shí)現(xiàn)商業(yè)邏輯,提供數(shù)據(jù);視圖(view)負(fù)責(zé)向用戶(hù)呈現(xiàn)界面和接受用戶(hù)交互;控制器(controller)則負(fù)責(zé)響應(yīng)用戶(hù)交互請(qǐng)求,對(duì)用戶(hù)請(qǐng)求進(jìn)行翻譯,根據(jù)不同的請(qǐng)求調(diào)用模型,執(zhí)行商業(yè)邏輯??刂破鞅举|(zhì)上是一個(gè)調(diào)度器 (dispatcher),通過(guò)其包含的各個(gè)方法(action)來(lái)執(zhí)行具體的商業(yè)邏輯。MVC各個(gè)部件以最小的耦合性協(xié)同工作,從而使程序具有良好的可擴(kuò)展性和可維護(hù)性和復(fù)用性。

MVC設(shè)計(jì)模式最開(kāi)始被用于桌面程序設(shè)計(jì),典型地用于相同的數(shù)據(jù)需要不同的用戶(hù)交互界面的設(shè)計(jì)場(chǎng)景。在經(jīng)典的MVC設(shè)計(jì)思想中,控制器負(fù)責(zé)響應(yīng)用戶(hù)事件,根據(jù)事件類(lèi)型和參數(shù)調(diào)用模型或改變視圖。每個(gè)模型對(duì)應(yīng)一個(gè)或者多個(gè)視圖,當(dāng)模型被控制器調(diào)用而得到改變時(shí),模型向所有向其注冊(cè)過(guò)的視圖發(fā)送通知,視圖根據(jù)從模型的中得到的信息改變外觀。這種設(shè)計(jì)模式可以用圖1表示??梢钥闯鼋?jīng)典MVC設(shè)計(jì)模式中Controller、Model 都可以改變視圖。

圖1 經(jīng)典MVC

基于MVC模式的Web開(kāi)發(fā)(后端)一般可以用圖2表示。在這種模式下,controller負(fù)責(zé)解析用戶(hù)瀏覽器請(qǐng)求的URL,根據(jù)URL自動(dòng)調(diào)用controller中的不同的Action響應(yīng)用戶(hù)請(qǐng)求。Action調(diào)用model,然后將model返回的數(shù)據(jù)填充到view中,view被返回給用戶(hù)瀏覽器。Web服務(wù)端開(kāi)發(fā)中典型的采用MVC模式的框架有CakePHP、Structs、Spring等等。

圖2 Server端Web開(kāi)發(fā)中的MVC

相對(duì)于早期的經(jīng)典MVC模式,Web開(kāi)發(fā)中的MVC模式存在一些變化,因?yàn)閷?duì)于一個(gè)桌面應(yīng)用程序而言,可以很方便地將視圖注冊(cè)給模型,當(dāng)模型數(shù)據(jù)發(fā)生改變時(shí),即時(shí)通知視圖頁(yè)面發(fā)生改變;而對(duì)于Web應(yīng)用而言,即使將多個(gè)頁(yè)面注冊(cè)給一個(gè)模型,當(dāng)模型發(fā)生變化時(shí),模型無(wú)法主動(dòng)發(fā)送消息給Web頁(yè)面(因?yàn)閃eb應(yīng)用都是基于請(qǐng)求/響應(yīng)模式的),只有當(dāng)用戶(hù)請(qǐng)求瀏覽該頁(yè)面時(shí),控制器才負(fù)責(zé)調(diào)用模型數(shù)據(jù)來(lái)更新Web頁(yè)面。同時(shí),Web開(kāi)發(fā)中的MVC也比經(jīng)典MVC具有更小的耦合性,因?yàn)镸odel不再與View發(fā)生交互,因此程序的結(jié)構(gòu)更加良好,使Web前端開(kāi)發(fā)和業(yè)務(wù)邏輯開(kāi)發(fā)相分離變的簡(jiǎn)單。

對(duì)于具有復(fù)雜交互邏輯和豐富界面的程序來(lái)說(shuō),MVC已被實(shí)踐證明是一種行之有效的設(shè)計(jì)和開(kāi)發(fā)思想。采用MVC設(shè)計(jì)模式的系統(tǒng)具有較好的結(jié)構(gòu),較低的耦合性,代碼具有很好的維護(hù)性,能夠適應(yīng)復(fù)雜的業(yè)務(wù)邏輯和視圖展現(xiàn)變化。它也非常適合團(tuán)隊(duì)開(kāi)發(fā),使開(kāi)發(fā)人員分為不同的角色,專(zhuān)注于自己負(fù)責(zé)部分的開(kāi)發(fā)。

3. MCRV設(shè)計(jì)模式

綜上所述,MVC是解決具有復(fù)雜交互界面、代碼規(guī)模大的應(yīng)用程序面臨代碼組織、復(fù)用問(wèn)題的有效設(shè)計(jì)模式。基于此,本文嘗試基于MVC設(shè)計(jì)思想解決前端開(kāi)發(fā)中的類(lèi)似問(wèn)題。

然而,在前端頁(yè)面開(kāi)發(fā)中不能直接套用MVC設(shè)計(jì)模式。因?yàn)?,前端開(kāi)發(fā)中的Web頁(yè)面包含了HTML、CSS、Javascript等多個(gè)種類(lèi)的代碼,相對(duì)Web后端來(lái)說(shuō),Web頁(yè)面整體就是一個(gè)負(fù)責(zé)UI展現(xiàn)、用戶(hù)本地交互、發(fā)送服務(wù)請(qǐng)求的大View,與經(jīng)典MVC及Web后端開(kāi)發(fā)MVC模式中的View皆有不同。因此,需要具體問(wèn)題具體分析。

首先對(duì)Web頁(yè)面中的HTML、CSS、Javascript等代碼進(jìn)一步分析,明確它們的具體功能分類(lèi)。根據(jù)業(yè)界提出的Web開(kāi)發(fā)標(biāo)準(zhǔn),Web頁(yè)首先被分為了"內(nèi)容-結(jié)構(gòu)-表現(xiàn)-行為"幾個(gè)部分。內(nèi)容、結(jié)構(gòu)、表現(xiàn)是頁(yè)面的靜態(tài)部分,主要負(fù)責(zé)UI的展現(xiàn),用戶(hù)操作指令(鍵盤(pán)、鼠標(biāo))的接受,因此,內(nèi)容、結(jié)構(gòu)、表現(xiàn)屬于視圖 (View)的范疇。行為主要就是Javascript代碼,負(fù)責(zé)對(duì)用戶(hù)操作指令的響應(yīng)。在復(fù)雜ajax應(yīng)用中, Javascript代碼的功能一般包括:響應(yīng)用戶(hù)指令,執(zhí)行數(shù)據(jù)驗(yàn)證/處理、執(zhí)行客戶(hù)端交互邏輯,向服務(wù)器發(fā)送ajax請(qǐng)求,接受并處理服務(wù)器返回的數(shù)據(jù),根據(jù)數(shù)據(jù)改變UI(向頁(yè)面結(jié)構(gòu)填充內(nèi)容數(shù)據(jù)、變換樣式等)。基于模型-視圖-控制器分離的思想,Javascript代碼中的數(shù)據(jù)驗(yàn)證/處理、本地業(yè)務(wù)邏輯計(jì)算、向服務(wù)器發(fā)請(qǐng)求獲取數(shù)據(jù)的功能,對(duì)應(yīng)模型(Model)的功能;響應(yīng)(翻譯)用戶(hù)操作指令,根據(jù)指令執(zhí)行業(yè)務(wù)邏輯處理的功能,屬于控制器(Controller)的功能;而接受處理過(guò)的數(shù)據(jù),根據(jù)數(shù)據(jù)修改頁(yè)面的內(nèi)容/結(jié)構(gòu)/樣式的功能既不屬于控制器的功范疇,也不屬于模型的功能范疇,這部分代碼因?yàn)楦鶕?jù)數(shù)據(jù)對(duì)View進(jìn)行呈現(xiàn)(render),可以命名為Renderer(渲染器或呈現(xiàn)器)。

根據(jù)前述分析,本文提出了MCRV設(shè)計(jì)模式,如圖3所示。闡述如下:

圖3: MCRV開(kāi)發(fā)模式

M(Model):模型,完成數(shù)據(jù)驗(yàn)證、數(shù)據(jù)處理,執(zhí)行客戶(hù)端業(yè)務(wù)邏輯計(jì)算,或向服務(wù)器發(fā)起ajax請(qǐng)求調(diào)用服務(wù)端邏輯、接受返回的數(shù)據(jù),將處理后的數(shù)據(jù)返回控制器。 C(Controller):控制器,控制器響應(yīng)View上的事件,根據(jù)事件調(diào)度執(zhí)行模型的業(yè)務(wù)邏輯,從業(yè)務(wù)邏輯獲取返回?cái)?shù)據(jù),調(diào)度相應(yīng)的渲染器(Render)來(lái)完成界面展現(xiàn)。在這個(gè)過(guò)程中控制器會(huì)有數(shù)據(jù)的傳遞:控制器調(diào)用模型中的邏輯時(shí)會(huì)傳送Renderer搜集的數(shù)據(jù)(form表單各域的name/value、其他控制參數(shù)),模型執(zhí)行邏輯后返回作為執(zhí)行結(jié)果的數(shù)據(jù)給控制器,控制器根據(jù)數(shù)據(jù)來(lái)調(diào)用渲染器(renderer)來(lái)完成界面呈現(xiàn)(rendering),呈現(xiàn)(rendering)就是修改頁(yè)面結(jié)構(gòu)、內(nèi)容和樣式的過(guò)程。數(shù)據(jù)傳遞過(guò)程可以用圖4表示。 R(Renderer):渲染器(呈現(xiàn)器),渲染器被控制器調(diào)用,接受從控制器傳遞的數(shù)據(jù),完成對(duì)界面的具體渲染。渲染器也負(fù)責(zé)控件(widget)的初始化,及建立Controller與具體事件的對(duì)應(yīng)關(guān)系,事件發(fā)生時(shí)負(fù)責(zé)搜集View上的數(shù)據(jù)傳送到Controller。 V(View):視圖,視圖是用戶(hù)最終看到的整個(gè)Web界面,由結(jié)構(gòu)、內(nèi)容、樣式(表現(xiàn))等靜態(tài)內(nèi)容共同構(gòu)成;View由Renderer進(jìn)行初始化渲染和修改。

圖4:數(shù)據(jù)傳遞過(guò)程

可以看到在MCRV開(kāi)發(fā)模式中,Controller處于控制中心的位置,Model完成具體的商業(yè)邏輯計(jì)算以及向后端發(fā)起ajax請(qǐng)求返回?cái)?shù)據(jù)的功能。Controller與Model、Renderer之間的交互本質(zhì)上是數(shù)據(jù)交互的過(guò)程,它們之間存在著一個(gè)數(shù)據(jù)流,如圖4所示。因此,制定Controller、Model、Renderer之間的交互接口時(shí),數(shù)據(jù)格式定義很重要。

#p#

4. 基于MCRV設(shè)計(jì)模式的Demo

下面是一個(gè)用MCRV模式來(lái)開(kāi)發(fā)的Demo頁(yè)面,頁(yè)面的功能是用表格展示和修改用戶(hù)信息。Javascript使用了jQuery庫(kù)。頁(yè)面界面如圖5所示。頁(yè)面代碼在程序清單1中

圖5:基于MCRV設(shè)計(jì)模式的用戶(hù)管理Demo

程序清單1

 
 
 
 
  1.  
  2.  
  3.  
  4.  
  5.  
  6. MCRV 設(shè)計(jì)模式 Demo 
  7.  
  8. /********表現(xiàn)*********/  
  9. table{width:100%;border-collapse: collapse;}  
  10. td{border: 1px solid black;padding: 2px;}  
  11. #container {width:800px;margin:0px auto;}  
  12. #tbUsers{margin:20px auto;}  
  13. #tbUsers th{background-color: navy;color:white;text-align: center;vertical-align: middle;border:1px solid navy}  
  14. #tbUsers td{text-align: center;}  
  15. .editCaption{width:100px;text-align: right;}  
  16. .buttonMargin{margin:0px 20px;}  
  17. .buttonContainer{text-align: center;vertical-align: middle;height:50px}  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25. id姓名年齡修改 
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  id:  
  33.  
  34.  
  35.  
  36.  姓名:  
  37.  
  38.  
  39.  
  40.  年齡:  
  41.  
  42.  
  43.  
  44.  
  45. 提交 
  46. 取消 
  47.  
  48.  
  49.  
  50.    
  51.  
 
  •  
  •  
  •  
  •  
  • 5. 基于MCRV模式的開(kāi)發(fā)框架原型

    5.1 基本設(shè)計(jì)思想

    框架是在一個(gè)特定的問(wèn)題領(lǐng)域內(nèi),應(yīng)用程序的部分設(shè)計(jì)與實(shí)現(xiàn)[2]??蚣芘c設(shè)計(jì)模式通常是精密結(jié)合的??蚣芤?guī)定了應(yīng)用的體系結(jié)構(gòu),使基于特定設(shè)計(jì)模式的開(kāi)發(fā)能夠復(fù)用公共代碼;反之,框架強(qiáng)調(diào)設(shè)計(jì)復(fù)用,框架設(shè)計(jì)也基本上使用了設(shè)計(jì)模式,掌握了框架的設(shè)計(jì)模式可以快速掌握基于框架的應(yīng)用程序開(kāi)發(fā)。因此,使用MCRV設(shè)計(jì)模式進(jìn)行前端開(kāi)發(fā)時(shí)最好有一個(gè)與之配合的Javascript框架。

    基本設(shè)計(jì)考慮:

    Model、Controller、Renderer組成一個(gè)三元組MCR,一個(gè)MCR三元組中Controller對(duì)象、Model對(duì)象和Renderer對(duì)象是唯一的。

    Model、Controller、Renderer可以初始化和銷(xiāo)毀。

    Controller、Model、View在需要時(shí)可以透明地引用其他對(duì)象。

    數(shù)據(jù)與邏輯分離,支持?jǐn)?shù)據(jù)本地存儲(chǔ)。

    一個(gè)Web頁(yè)面可以有多個(gè)MCR組,即可以有多個(gè)Controller、Model、Renderer三元組分別完成不同的控制、邏輯、展現(xiàn)。這為一個(gè)頁(yè)面邏輯和交互非常復(fù)雜時(shí),拆分為多個(gè)模塊,由多人開(kāi)發(fā)提供了支持。

    5.2 基本對(duì)象及其關(guān)系

    下面是一個(gè)基于上述考慮的基于MCRV設(shè)計(jì)模式的Javascript框架原型(以下簡(jiǎn)稱(chēng)MCRV框架)。

    框架的基本對(duì)象:MCR、Model、Controller、Renderer、Cache。如圖6所示。

    圖6 基于MCRV模式的框架原型

    MCR:控制器(Controller)對(duì)象、模型對(duì)象(Model)和渲染器對(duì)象(Renderer)的復(fù)合對(duì)象。

    - Dispose()方法:執(zhí)行MCR銷(xiāo)毀操作,避免Javascript內(nèi)存泄露;在頁(yè)面unload時(shí)自動(dòng)調(diào)用;這個(gè)方法自動(dòng)調(diào)用Model、Controller和Renderer的dispose()方法。

    - model屬性:包含的模型。

    - controller屬性:包含的控制器。

    - renderer屬性:包含的渲染器。

    Model:模型對(duì)象。

    - init()方法:執(zhí)行模型初始化。

    - dispose()方法:執(zhí)行對(duì)象銷(xiāo)毀,釋放資源。

    - cahce屬性:數(shù)據(jù)的緩存。

    Controller:控制器對(duì)象

    - init()方法:執(zhí)行控制器初始化。

    - dispose()方法:執(zhí)行對(duì)象銷(xiāo)毀,釋放資源。

    - model屬性:調(diào)度的模型。

    - renderer屬性:控制的渲染器。

    Renderer:渲染器對(duì)象

    - init()方法:執(zhí)行渲染器初始化。

    - dispose()方法:執(zhí)行對(duì)象銷(xiāo)毀,釋放資源。

    - controller屬性:對(duì)controller的引用。

    Cache:基于key-value的緩存對(duì)象

    - get()方法:基于鍵值獲取緩存數(shù)據(jù)。

    - set()方法:設(shè)置緩存數(shù)據(jù)。

    - remove()方法:刪除對(duì)應(yīng)某個(gè)鍵值的緩存。

    - size():緩存數(shù)量。

    5.3 MCRV框架與其他web其他部分的關(guān)系

    基于MCRV模式的開(kāi)發(fā)框架與Web頁(yè)面開(kāi)發(fā)其他組成部分的關(guān)系可以用圖7表示。MCRV框架搭建起了js應(yīng)用程序整體的結(jié)構(gòu),提供了應(yīng)用程序上下文環(huán)境。MCRV框架可以與js組件庫(kù)、css基礎(chǔ)樣式庫(kù)和js業(yè)務(wù)邏輯組件一起作為應(yīng)用程序構(gòu)建的基礎(chǔ),并且它們之間沒(méi)有依賴(lài)關(guān)系。盡管應(yīng)用程序可以在js基礎(chǔ)庫(kù)(如jQuery)上開(kāi)發(fā),但是MCRV框架不依賴(lài)這些庫(kù)。

    圖7 基于MCRV模式的開(kāi)發(fā)框架與其他Web頁(yè)其他部分的關(guān)系

    6. 結(jié)論

    實(shí)踐表明,MCRV設(shè)計(jì)模式能夠有效解決復(fù)雜ajax開(kāi)發(fā)中面臨的問(wèn)題,可以使Web頁(yè)面代碼結(jié)構(gòu)良好,降低Javascript代碼的耦合性,提高復(fù)用性、適應(yīng)性和靈活性,使Web頁(yè)更加易于維護(hù)和重構(gòu)。

    參考文獻(xiàn)

    [1]. Trygve Reenskaug Taskon.Working with objects in the user interfaces.

    [2]. J. Van Gurp, J. Bosch.Design, Implementation and Evolution of Object Oriented Frameworks Concepts and Guidelines.pdf.

    原文:http://www.baiduux.com/blog/2011/07/08/frontend-mcrv-design-pattern/

    【編輯推薦】

    1. 老外支招:讓您的Web應(yīng)用程序飛起來(lái)
    2. 高效的Web開(kāi)發(fā)者是怎么練成的
    3. 9月Web技術(shù)最前沿:jQuery成版本帝
    4. 2011下半年Web編程語(yǔ)言和腳本語(yǔ)言的就業(yè)趨勢(shì)
    5. Web設(shè)計(jì)師能從游戲中學(xué)到些什么

    網(wǎng)頁(yè)題目:前端開(kāi)發(fā)中的MCRV模式
    分享網(wǎng)址:http://m.5511xx.com/article/djhojgj.html