在前端工程化的趋势下,php还有必要去渲染视图层吗?


在练习做cms管理系统有感而发.
请看下面两种新闻列表页的实现方式:

  • 方式一

<?php foreach ($newsArr as $v) {?>
      <tr>
        <td>#<?php echo $v['id']?></td>
        <td><?php echo $v['title']?></td>
        <td>
          <a href="javascript:void(0);" class="alterBtn" id="alterBtn<?php echo $v['id']?>">修改</a> |
          <a href="javascript:void(0);" class="delBtn" id="delBtn<?php echo $v['id']?>">删除</a>
        </td>
        <td><?php echo $v['addtime']?></td>
      </tr>
<?php }>
  • 方式二

<!--HTML代码-->
    <tr v-for="item in list">
          <td>#{{ item.id }}</td>
          <td>{{ item.title }}</td>
          <td>
            <a href="javascript:void(0);" v-on:click="alt(item)" class="alterBtn">修改</a> |
          <a href="javascript:void(0);" v-on:click="del(item)" class="delBtn">删除</a>
        </td>
          <td>{{ item.addtime }}</td>
      </tr>
//js代码

//渲染列表项
    $.get("news/listC.php","",function(response){
            var obj = JSON.parse(response);
            //绑定
            var newsTable = new Vue({
            el: '#newsTable',
            data: {
                list: obj,
            },
            methods: {
                alt:function(item){
                    layer.confirm(item.id);
                    console.log(item.id);
                },
                del:function(item){
                    var msg = "确认删除"+item.title+"吗?"
                    layer.confirm(msg,function(){
                        $.get("news/delC.php","id="+item.id,function(response){
                            if(response == "1"){
                                layer.msg("删除成功",{icon:1});
                                //重新渲染
                                console.log(newsTable.list[1].title);
                                $.get("news/listC.php","",function(response){
                                    newsTable.list = JSON.parse(response);
                                });
                                
                                //前端渲染
                                /* newsTable.list = newsTable.list.filter(function(node){
                                    if(node.id != item.id){
                                        return node;
                                    }
                                }); */
                            }else{
                                layer.msg("删除失败",{icon:2});
                            }
                        })
                    },function(){
                         layer.msg("用户取消",{icon:5});
                    });
                    console.log(item.id);
                }
            }
        })
    });


上述两种方式都可以展示新闻列表页:

  • 第一种方式需要服务器去解析,会增加服务器端运算开销

  • 第二种方式只需要从服务器获得JSON串就可以在前端完成渲染

显然第二种实现方式优势很大,那么还有必要在后台完成视图层渲染吗?
或者说MVC框架里的V层能不能完全交给前端来处理呢?


前后端分离当然是目前的主流,但是用php渲染或者缓存页面模板有时候也是可以的,性能会比较好一些。不过建议还是前后端分离


当然是可以的,现在很多公司或者项目就是走前后端完全分离的套路,服务端只做api来提供数据,页面渲染完全由前端负责。现在很火的一些前端MVVM框架,诸如angular,vue等也是走这样的套路。

当然这样通过js渲染也是有些问题的,如不利于seo。所以这些像react,vue这些框架又有了一些服务端渲染的功能,在必须考虑seo的情况下,还是需要服务端渲染的。

鉴于如何选择,个人觉得前端后完全分离会是趋势。主要还是需要评估当前项目有没有必要或者当前公司有没有需要走这样的技术选型。


以前的时候,是传统的前端写了模板,然后后端再去套。

现在可以让前后端进行分离了,服务器端可以重点去研究怎么去优化系统了。正好也省了模板解析这一块的优化。

像是Laravel里面有vue.js框架,就是前端模板解析。

这种对于前端的要求,也是变得高了,现在前端的js框架变化很快,对于前端的要求也很高。

前端也不用坐到后台的电脑旁进行调试前端页面了。

所以,我个人是非常提倡这种的,我看到了,比如我朋友的公司,和信贷,好像就有做这一部分的优化。另外我观察起点中文网也有将模板放到前台来解析。

所以,这是未来的趋势!!!


之前也想过这个问题,php渲染还是有必要的,但是用第二种方式貌似就不能 SEO 了,


分离后工作起来会方便一些、不然项目中沟通成本会变高



相关阅读:
奇异的代码 之 PHP中的错误和异常
用ajax调取的图片url,图片是存在webroot/images/目录下,为什么图片不能及时加载?
kill命令如何一次杀死多个进程
求react 中使用fetch的demo
大类点击之后得到的列表用pagination 插件进行了ajax分页问题
关于正确理解javascript的同步,异步的执行,Event Loop事件循环,异步执行完如何通知主线程的demo
webpack 怎么引入semantic-ui?
Cordova做的APP里,希望点击按钮时的颜色变化更明显一些,以便更清楚地给用户提示,该怎么弄?
ipad调用UIActivityViewController时系统分享不能完全显示。
GitLab配置CAS认证,前端WEB正常. 但是做git clone等操作时报错如下
django 如何实现文章按时间归档啊
angularjs ng-bind的用法
为什么start = parseInt(spans[this.index].style.top);是undefined?
vue单页面能调到新的页面吗?
HTML 5输入框只能输入汉字、字母、数字、标点符号?正则如何写?
koa+mysql ,插入数据库数据成功,但是无法将数据返回给前台
laravel自带的users表不能被修改吗?
一般在公司开发的话,框架用的多还是原生的PHP+MYSQL用的多呢??
webpack配置react.js问题npm ERR!
如何形象地解释 “结构化数据” 与 “半结构化数据” 的区别



快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 雨荷,雨荷。。。。。。 我爱的那个她 中国人民银行县支行2013年度工作总结 致我们已逝去的青春 爱情没全写在脸上 设问句的作用 小学六年级作文350字:牙齿下岗记 爱是大海心是水 《失落的天堂》之《隧道探险》下作文500字 漫画作文审题立意指导课件6 “垃圾”满天飞 机关服务中心党支部2013年度工作总结 三年级感恩父亲节作文200字 幼师实习报告范文3000字 读《西游记》有感作文1500字 初中初一作文650字:相片里的故事 四年级音乐教师工作总结 做事应该未雨绸缪 平淡的你作文1000字 名教师发言稿 七律·步韵奉和万年青先生 花绽花残作文250字 小学六年级作文550字:鸡窝里的趣事 从《兰亭集序》中几处涂改,看“文”中谴词之妙 白洋淀之旅作文800字 2016年法学院学生田径比赛策划书 中考动员大会学生演讲 自做多情,一种比失恋还要痛苦的感觉 夫妻新婚指南 游戏作文 云霞作文250字 儿童诗歌《不老的神话》 学习人民警察纪律条令心得体会 如果一切只是一场闹剧作文900字 文明生态村创建工作汇报 鸽恋 一根曲别针的思考 还好遇见你 《致青春》之所以有感触,只因为太麻木 广播电视覆盖情况汇报 美丽的武夷山250字 鸡年说鸡 中国20年经典流行广告语 一滴泪,一份伤,一份回忆,一份伤痛 办公室文员2013年工作总结 初中作文成长的痕迹 寥寥数语1 赠君一钵无情泪,恨不相逢未剃时 端午节晚会主持语

Copyright © 2016 phpStudy |