MVC

最初

  • JavaScript 是一種強(qiáng)大的疙教、動態(tài)的面向?qū)ο缶幊陶Z言
  • 這門語言被誤解的原因:早期的JavaScript 比較糟糕改橘,有許多bug 剂府; 其名字帶有java前綴佳励,讓人以為與java有關(guān)系跨新,但它們是兩種語言富腊。

增加結(jié)構(gòu)

  • 應(yīng)該將應(yīng)用解耦成一系列相互平等且獨(dú)立的部分。
  • MVC是一種久經(jīng)考驗(yàn)的搭建應(yīng)用的方式域帐,可以確保應(yīng)用的可維護(hù)性和可擴(kuò)展性赘被。MVC模式完全適用于JavaScript應(yīng)用

MVC

  • MVC是一種設(shè)計模式,將應(yīng)用劃為三部分:數(shù)據(jù)(模型)肖揣、展現(xiàn)層(視圖)和用戶交互層(控制器)民假。
  • 事件的發(fā)生過程:
    1.用戶和應(yīng)用發(fā)生交互
    2.控制器的事件處理器被觸發(fā)
    3.控制器從模型中請求數(shù)據(jù),并將其交給視圖
    4.視圖將數(shù)據(jù)呈現(xiàn)給用戶

例:在Holla中發(fā)送一個新的聊天信息的過程:
1.用戶提交一個新的聊天信息
2.控制器的事件處理器被觸發(fā)
3.控制器創(chuàng)建了一個新的聊天模型(Chat Model)記錄
4.控制器更新視圖
5.用戶在聊天窗口看到新的消息

MVC各部分具體詳解如下:

模型

  • 模型用來存放應(yīng)用所有的數(shù)據(jù)對象许饿。模型只需包含數(shù)據(jù)及直接和這些數(shù)據(jù)相關(guān)的邏輯阳欲。
  • 任何事件處理器代碼、視圖末班陋率,以及那些和模型無關(guān)的邏輯都應(yīng)該隔離在模型外
  • 數(shù)據(jù)是面向?qū)ο蟮那蚧魏味x在這個數(shù)據(jù)模型上的函數(shù)或邏輯都可以直接被調(diào)用
    例:
var user = User.find("foo");
user.destory();
destory()函數(shù)是存放在命名空間User的實(shí)例中,User存放了所有的記錄(這只是理想情況)瓦糟,因?yàn)槲覀兛刂屏巳肿兞康膫€數(shù)筒愚,更好的避免了潛在的沖突。這種代碼更加清晰菩浙,而且非常容易做繼承巢掺。

視圖

  • 視圖層是呈現(xiàn)給用戶的,用戶與之產(chǎn)生交互劲蜻。在JavaScript應(yīng)用中陆淀,視圖大都由HTML、CSS和JavaScript模板組成先嬉。
  • 除了模板中簡單的條件語句之外轧苫,視圖不應(yīng)當(dāng)包含任何邏輯
  • 包含視覺呈現(xiàn)相關(guān)的邏輯部分沒有定義在視圖之內(nèi)即可。我們將視圖呈現(xiàn)邏輯歸類為“視圖助手(helper)”:和視圖有關(guān)的獨(dú)立的小型工具函數(shù)疫蔓。
    例:
//helper.js
var helper = {};
helper.formatData = function(){/*...*/};

//template.html
<div>
  ${helper.foematDate(this.date)}
</div>
helper是一個命名空間含懊,可以防止沖突并保持代碼清晰身冬、可擴(kuò)展

控制器

  • 控制器是模型和視圖之間的紐帶〔砬牵控制器從視圖獲得時間和輸入酥筝,對它們(很可能包含模型)進(jìn)行處理,并進(jìn)行相應(yīng)的更新視圖雏门。
  • 當(dāng)頁面加載時嘿歌,控制器會給視圖添加事件監(jiān)聽,然后當(dāng)用戶和你的應(yīng)用產(chǎn)生交互時茁影,控制器中的時間觸發(fā)器就開始工作搅幅。
  • 不用類庫和框架也能實(shí)現(xiàn)控制器,下面代碼就是使用簡單的jQuery代碼來實(shí)現(xiàn)的:
var Controller = {};
//使用匿名函數(shù)來封裝一個作用域
(Controller.users = function($){

 var nameClick = function(){
/*...*/
};

//在頁面加載時綁定事件監(jiān)聽
$(function(){
 $("#view.name").click(nameClick)
});

})(jQuery);
創(chuàng)建了一個user控制器呼胚,這個控制器是放在Controller變量下的命名空間。我們使用一個匿名函數(shù)封裝了一個作用域息裸,以避免對全局作用域造成污染蝇更。當(dāng)頁面加載時,程序給視圖元素綁定了click事件的監(jiān)聽呼盆。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末年扩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子访圃,更是在濱河造成了極大的恐慌厨幻,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腿时,死亡現(xiàn)場離奇詭異况脆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)批糟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門格了,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人徽鼎,你說我怎么就攤上這事盛末。” “怎么了否淤?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵悄但,是天一觀的道長。 經(jīng)常有香客問我石抡,道長檐嚣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任汁雷,我火速辦了婚禮净嘀,結(jié)果婚禮上报咳,老公的妹妹穿的比我還像新娘。我一直安慰自己挖藏,他們只是感情好暑刃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著膜眠,像睡著了一般岩臣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宵膨,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天架谎,我揣著相機(jī)與錄音,去河邊找鬼辟躏。 笑死谷扣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的捎琐。 我是一名探鬼主播会涎,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瑞凑!你這毒婦竟也來了末秃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤籽御,失蹤者是張志新(化名)和其女友劉穎练慕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體技掏,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铃将,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哑梳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片麸塞。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖涧衙,靈堂內(nèi)的尸體忽然破棺而出哪工,到底是詐尸還是另有隱情,我是刑警寧澤弧哎,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布雁比,位于F島的核電站,受9級特大地震影響撤嫩,放射性物質(zhì)發(fā)生泄漏偎捎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望茴她。 院中可真熱鬧寻拂,春花似錦、人聲如沸丈牢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽己沛。三九已至慌核,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間申尼,已是汗流浹背垮卓。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留师幕,地道東北人粟按。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像霹粥,于是被迫代替她去往敵國和親钾怔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

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

  • 談?wù)?MVX 中的 Model 談?wù)?MVX 中的 View 談?wù)?MVX 中的 Controller 淺談 MV...
    Draveness閱讀 14,856評論 0 60
  • 在我的iOS的MVC框架之控制層的構(gòu)建(上)一文中介紹了一些控制層的構(gòu)建方法愚臀,而這篇文章則繼續(xù)對一些方法進(jìn)行展開討...
    歐陽大哥2013閱讀 6,425評論 52 99
  • 前言 看了下上篇博客的發(fā)表時間到這篇博客欣鳖,竟然過了11個月,罪過茴厉,罪過泽台。這一年時間也是夠折騰的,年初離職跳槽到鵝廠...
    西木柚子閱讀 21,238評論 12 184
  • ASP.NET MVC 是一個全新的Web應(yīng)用框架 ASP.NET 代表支撐應(yīng)用框架的技術(shù)平臺矾缓,表明ASP.NET...
    JunChow520閱讀 1,245評論 0 1
  • 雨怀酷,跟從前一樣的下 有急有緩 只是不再有停留的油紙傘 行色匆匆 傘下的人兒 摟著肩的甜蜜 早已忘了一個傘柄的距離 ...
    鮑濱閱讀 110評論 0 0