在前端工程化的趋势下,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 交通频道 作文范文 详解英文简历的结构 人的一辈子都是在与“贪念”抗争 爱上你的眼泪 季节边缘的爱恋 同志先进事迹 悼念逝去的十年 无贼经典台词 表达忧郁伤感的句子 该低头时要低头作文800字 讲文明懂礼貌作文 情人节语句,我没有多的言语,只有一句话要告诉你 欢呼 雨天落红 我去桂林过新年!作文300字 课间小睡 《柳的心事》 夜雨中的南昌 可爱的“毛毛球”作文500字 新起点,新征程作文300字 守候亲情作文800字 对照检查剖析材料 英语演讲稿-How to say future? 七夕礼物:12星座男生最爱的七夕礼物 感恩主题班会“常怀感恩的心”主题班会 关爱他人的作文400字 描写仙人掌的好词好句好段落 童年的时光作文700字 陕西省中考作文优秀范文--《每个生命都有自己的形状》 低碳生活从我做起作文800字 小学六年级作文1000字:吸毒是一场可怕的悲剧 环保工作总结:2011年医院环保工作总结 2015实习调查报告范文 为什么它们平行教学反思 我之问佛 2014年圣诞节晚会策划书 盲见 初二作文:我是“斯巴达” 社区上半年创建工作总结 高三这一年怎么处人 智能书包 2014-2014学年下期美术教研计划-教学工作计划_教学工作计划 妈妈老了 电影《看上去很美》观后感 地质开发局庆祝祖国60华诞诗歌征文--祖国的丰碑 大学生在校实习报告怎么写 煤炭计划科科学发展观演讲稿 一个人莫名的无助(一树风声) 有关欢度国庆作文:十月一日国庆节 紫水晶 种子作文500字

Copyright © 2016 phpStudy |