mvc 和 ajax 的问题..

特爱点赞的野蛮人
  • 1.2k

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

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

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

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

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

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

回复
阅读 3.8k
4 个回答
✓ 已被采纳

这两件事其实一点关系都没有,初学者认为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;
    }
}

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

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

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <h1><?php echo 'good good study,day day up!'; ?></h1>
</body>
</html>

这样,我们的目的就实现了,在这儿,需要所谓的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层的一些方法展示到试图模板中的指定位置,然后展示到浏览器!

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

没有时间了,先写这些,将就看看

无论是mvc还是mmvc等等等,这些设计典范最终的目的就是为了减少代码冗余度,方便扩展与维护。

宣传栏