MVC思想

作者: 深沉的简单 | 来源:发表于2017-05-24 22:46 被阅读64次

理解javascript中的MVC

MVC模式是软件工程中一种软件架构模式,一般把软件模式分为三部分,模型(Model)+视图(View)+控制器(Controller);

模型:模型用于封装与应用程序的业务逻辑相关的数据以及对数据处理的方法。模型有对数据直接访问的权利。模型不依赖 "视图" 和 "控制器", 也就是说 模型它不关心页面如何显示及如何被操作.

视图:视图层最主要的是监听模型层上的数据改变,并且实时的更新html页面。当然也包括一些事件的注册或者ajax请求操作(发布事件),都是放在视图层来完成。

控制器:控制器接收用户的操作,最主要是订阅视图层的事件,然后调用模型或视图去完成用户的操作;比如:当页面上触发一个事件,控制器不输出任何东西及对页面做任何处理; 它只是接收请求并决定调用模型中的那个方法去处理请求, 然后再确定调用那个视图中的方法来显示返回的数据。

没有使用mvc模式的例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
 <html xmlns="http://www.w3.org/1999/xhtml">   
<head>   
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   
    <title>javascript demo no mvc</title>  
</head>   
<body>   
    <h3>JavaScript no MVC</h3>  
    <div>  
        <select name="" id="setAnimal">  
            <option value="cat">cat</option>  
            <option value="fish">fish</option>  
            <option value="bird">bird</option>  
        </select>  
        <p id="whatDoesThisAnimalDo"></p>  
    </div>  
      
    <script type="text/javascript">   
        document.getElementById('setAnimal').onchange = function(){  
            var thisAnimalDoes;  
            switch(this.value){  
                case 'cat':   
                    thisAnimalDoes = 'cat meows';  
                    break;  
                case 'fish':  
                    thisAnimalDoes = 'fish swims';  
                    break;  
                case 'bird':  
                    thisAnimalDoes = 'bird fies';  
                    break;  
                default:   
                    thisAnimalDoes = 'wuff?';  
            }  
              
            document.getElementById('whatDoesThisAnimalDo').innerHTML = thisAnimalDoes;  
        };  
    </script>   
      
</body>   
</html>

采用mvc模式例子

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>javascript demo mvc</title>
</head>
<body>
<h3>JavaScript simple MVC</h3>
<div>
    <select name="" id="setAnimal">
        <option value="cat">cat</option>
        <option value="fish">fish</option>
        <option value="bird">bird</option>
    </select>
    <p id="whatDoesThisAnimalDo"></p>
</div>



<script type="text/javascript">
// controller
Animal = {
    start: function() {
        this.view.start();
    },
    set: function(animalName) {
        this.model.setAnimal(animalName);
    }
};

// model
Animal.model = {
    animalDictionary: {
        cat: 'meows',
        fish: 'swims',
        bird: 'flies'
    },

    currentAnimal: null,

    setAnimal: function(animalName) {
        this.currentAnimal = this.animalDictionary[animalName] ? animalName : null;
        this.onchange();
    },

    onchange: function() {
        Animal.view.update();
    },

    getAnimalAction: function() {
        return this.currentAnimal ? this.currentAnimal + " " + this.animalDictionary[this.currentAnimal] : 'wuff?';
    }
};


// view
Animal.view = {
    start: function() {
        document.getElementById('setAnimal').onchange = this.onchange;
    },

    onchange: function() {
        Animal.set(document.getElementById('setAnimal').value);
    },

    update: function() {
        document.getElementById('whatDoesThisAnimalDo').innerHTML = Animal.model.getAnimalAction();
    }
};

Animal.start();

</script>

</body>
</html>

效果

image.png

第二个例子中,进行了简单的mvc分层,看似代码量比第一种多了许多,但是对于后期模块的维护还是有很大的好处

相关文章

  • MVC思想

    理解javascript中的MVC MVC模式是软件工程中一种软件架构模式,一般把软件模式分为三部分,模型(Mod...

  • MVC思想

    MVC是一种设计思想,贯穿于整个iOS开发中,需要积累一定的项目经验,才能深刻体会其中的含义和好处 ==MVC...

  • MVC思想

    2020.3.3后续更新在后续操作中,我们建立了一个store来管理所有的要用到的操作,包括对于Tag的操作和数据...

  • 从MVC到MVVM

    MVC思想写代码 MVVM思想改写代码

  • DAY07-Sping04

    一、Spring Web框架 MVC思想 Spring MVC Servlet:Web 服务的模块,包含对 MVC...

  • PHP常用的显示与逻辑分离思想

    显示与逻辑相分离思想 mvc思想原理 PDO

  • MVC 设计思想

    是一种软件架构的思想,将一个软件按照模型、视图、控制器进行划分。 (1)模型:业务逻辑,包含了业务数据的加工与处理...

  • 关于架构思想的看法

    目前开发中用到的主流思想主要是MVC 、 MVP、 MVVM这三种思想。前端用的MVVM,后端用的MVC,安卓用...

  • 11 - 使用mvc处理对应的路由

    使用分层思想的优点:提高扩展性 最基本的分层思想是:MVC设计模式 使用mvc处理对应的路由将.ejs文件放在vi...

  • Servlet开发基础

    2019-05-18 MVC开发思想 MVC(Model-View-Controller) 把一个应用的输入、处理...

网友评论

      本文标题:MVC思想

      本文链接:https://www.haomeiwen.com/subject/mahoxxtx.html