JavaScript中的MVC設(shè)計(jì)模式


title: JavaScript中的MVC設(shè)計(jì)模式
date: 2018-10-10 10:46:58
tags: [JavaScript]
categories: JavaScript


JavaScript中的MVC

MVC模式(Model–view–controller)是一種設(shè)計(jì)模式(或者軟件架構(gòu)),把系統(tǒng)分為三個(gè)基本部分:模型(Model)、視圖(View)和控制器(Controller)。

  1. Model 數(shù)據(jù)管理,主要負(fù)責(zé)和服務(wù)器進(jìn)行交互。將請(qǐng)求到的數(shù)據(jù)傳給Controller。
  2. View 負(fù)責(zé)用戶界面,HTML 渲染。
  3. Controller 負(fù)責(zé)監(jiān)聽(tīng)并處理View 的事件,更新和調(diào)用 Model;也負(fù)責(zé)監(jiān)聽(tīng) Model的變化(Model從服務(wù)器獲得數(shù)據(jù)),并更新 View。Controller 控制其他所有流程。

畫(huà)圖來(lái)理解:

MVC.png

Model 和服務(wù)器交互,Model 將得到的數(shù)據(jù)交給 Controller,Controller 把數(shù)據(jù)填入 View,并監(jiān)聽(tīng) View
用戶操作 View,如點(diǎn)擊按鈕,Controller 就會(huì)接受到點(diǎn)擊事件,Controller 這時(shí)會(huì)去調(diào)用 Model,Model 會(huì)與服務(wù)器交互,得到數(shù)據(jù)后返回給 Controller,Controller 得到數(shù)據(jù)就去更新 View


MVC模式的優(yōu)點(diǎn)

就我的理解來(lái)說(shuō),MVC模式有這些好處:

  1. 低耦合性。
    每層各司其職,比如只需要改變視圖層而不需要重新編譯模型和控制器代碼,改代碼不用在各個(gè)部分改,只需要改變某部分的代碼。
  2. 方便維護(hù)和修改。
    視圖層、數(shù)據(jù)層和業(yè)務(wù)邏輯層分開(kāi),結(jié)構(gòu)清晰好理解。
  3. 大大提高代碼的可重用性。
    比如用不同的視圖層訪問(wèn)模型的數(shù)據(jù),只要在控制器層對(duì)數(shù)據(jù)格式做處理,而不需要修改模型層的代碼。

重要屬性和方法

舉例說(shuō)明 MVC 三個(gè)對(duì)象分別有哪些重要屬性和方法:

var model = {
    data: null,
    init(){}
    fetch(){}
    save(){}
    update(){}
    delete(){}
}
view = {
    init() {}
    template: '<h1>hi</h1'>
}
controller = {
    view: null,
    model: null,
    init(view, model){
        this.view = view
        this.model = model
        this.bindEvents()
    }
    render(){
        this.view.querySelector('name').innerText = this.model.data.name
    },
    bindEvents(){}
}

具體例子

代碼鏈接:https://github.com/yuyuye958/resume/blob/master/js/message.js

這段代碼實(shí)現(xiàn)使用leanCloud的庫(kù)來(lái)做留言板的功能。

  • 另外這段代碼使用了立即執(zhí)行函數(shù)和閉包,可見(jiàn)我的另一篇博客(立即執(zhí)行函數(shù)和閉包的使用)詳解。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容