suchen

Heim  >  Fragen und Antworten  >  Hauptteil

mvc 和 ajax 的问题..

前一段时间,我学完php,html,mysql,JavaScript 一些基本的东西后,我在这里问 网页 和 php 实现互交,也就是前台和后台分开写怎么弄.

有人告诉我用 MVC 有人 跟我说用 ajax,

然后就我自学了ajax,然后一般简单的也会弄了..

我昨天看 mvc 的 thinkphp 教程,看了三集教程后,发现其实很多东西,貌似用 ajax 更简单..,而且ajax 可以提交到多个 *.php 文件, 根据客户端的不同动作事件实时反馈结果..

我问问 mvc 还有必须学习吗?他真正的用途在哪里?

希望跟我说说呗,举个实例什么的,我也不在it行业,我在一个屠宰场上班,要是说的太专业术语化,我也看不懂,希望大家言简意骇的,举个例子说说呗..谢谢了!


高洛峰高洛峰2924 Tage vor1047

Antworte allen(3)Ich werde antworten

  • 三叔

    三叔2016-11-12 11:27:41

    我初学时也曾对MVC这个概念相当模糊,但找实习一般都会问:MVC是什么呀?你怎么理解MVC呀?
    无奈,只能背下来:M是模型model,用于数据处理,V是试图view,用于展示页面,C是控制器controller,用于进行逻辑处理。。。
    后来工作一段时间之后,才对MVC的应用有一点简单的认知。
    我们写一个页面,目的是输出一句话:'good good study,day day up!',那么,我们可以新建一个index.php文件,里面写下:

    
    
    
        
        Document
    
    
        

    这样,我们的目的就实现了,在这儿,需要所谓的MVC么?不需要!
    但是,如果我们需要做一个有很多功能的网站,我们怎么办呢,也像这样一个php文件对应着实现一个网站页面的所有功能?
    这个时候,我们就需要对此进行一个技术上的分离(MVC):
    假如有一个页面:localhost/article/5,这个页面的作用是展示id为5的文章相关内容,那么,在C(控制层Controller)中,我们需要实现这个请求的逻辑处理,那么请求的逻辑是什么呢:

    /*
    第一步:获取到文章的id,$id = $_GET['article'];
    第二步:获取文章内容,M->get('article',$id);
    第三步:展示文章内容,show($data)
    */

    M(模型model)层的作用是数据处理,那么,我们可以在M层连接数据库进行一些数据查询处理,然后在C层调用M层的方法获取到我们需要的数据,然后展示出来!V(试图view)层的作用是展示页面,我们在C层接收到M层处理好的数据,然后这些数据通过V层的一些方法展示到试图模板中的指定位置,然后展示到浏览器!

    这么看起来,真是麻烦诶!可是仔细想一想,如果在一个大项目中,没有合理的结构约束,全是混乱无序的代码,那么以后我们怎么维护?而且一个项目通常是多人合作开发,如果是混乱的代码结构,那么怎么合作?



    Antwort
    0
  • 欧阳克

    欧阳克2016-11-12 11:26:58

    M 模型,V 视图,C 控制器 
    ajax 是在V视图中请求C控制器 对前后端进行数据交互
    都要好好学习。
    顺便问一下,现在屠宰场也要互联网信息化了吗?

    Antwort
    0
  • 三叔

    三叔2016-11-12 11:26:47

    这两件事其实一点关系都没有,初学者认为MVC是一种架构方式,但实际上我个人认为这是一种思想。我的理解是这样的:
    对于任意交互,都可以简化为一个三步走的过程,即
    1- 访问者对服务器发起请求,服务器识别该请求是否有效(就像你到传达室说找xxx,传达室可能告诉你没这个人)
    2- 对于有效的请求进行处理
    3- 将处理结果反馈给访问者
    其中 识别请求有效性,如果有效则处理 属于控制器部分,而具体的处理过程 属于模型,最终反馈的结果通常需要更友好的效果,就是V了(所以一种说法是直接返回json就不需要v了,另一种说法是将数据格式化为json也是一种v的应用)
    这个思想是符合迭代的,比如对于一个函数来说,函数的命名就是C,处理过程是M,return是V。

    理解该思想的好处是什么?
    例如SEO优化,是对C的调整,其余不受影响
    例如业务逻辑变更,是对M的调整,其余不受影响
    例如UI改善,是对V的调整,其余不受影响
    结合前面说到的迭代思想,基于广义MVC编写的代码具有更好的可维护性,如:

    class User {
        public function save(array $data) {
            $this->_valid($data);
            $id = $this->_save($data);
            return $this->find($id);
        }
        protected function _valid(array $data) {
            //...
        }
        protected function _save(array $data) {
            //...
        }
        public function find(int $id) {
            $data = ...;
            return $this->_formatData($data);
        }
        protected function _formatData(array $data) {
            //...
            return $data;
        }
    }


    Antwort
    0
  • StornierenAntwort