首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php/代码层和html/视图层分离

php/代码层和html/视图层分离
EN

Stack Overflow用户
提问于 2011-06-23 11:32:46
回答 1查看 803关注 0票数 0

更新

我研究了各种php框架(依伊框架看起来特别好/有趣),与简单的模板引擎(包括MVC和其他特性,如数据库集成)相比,它们似乎提供了一些非常好的特性。我确信,一些代码和显示之间的分离是必要的。无论是普通的php (作为模板引擎)、模板引擎(例如智能)还是框架,这在很大程度上取决于应用程序和公司/程序员的选择。(有一个问题我可以在我自己的时间里继续研究,而且可能得不到确切的答案)

我还有一个问题。是否有可能有一个多层设置(如在多个单独的服务器中),其中运行php代码(“应用程序逻辑”),该代码以XML或JSON或任何其他数据交换格式输出,然后发送到web/HTML服务器,后者从php代码中获取输出并将其转换为HTML,这样每秒服务的总平均页面数比使用一层的速度更快。(即使该单层将来自两个单独层的所有服务器合并在一起。另外,我猜XML的解析时间(很可能是JSON)会减少它,但是可以使用两个层之间的新协议,并为此目的进行优化。)

我在考虑HTML和代码分离(这两种方法都是为了实现MVC,并允许web设计人员(如在外观/视图中)和web开发人员(如代码/控制器)独立工作),我认为应该有能够运行PHP ( application /Business Logic/Controller)的应用服务器和从应用程序服务器获取输出并将其插入HTML标记(查找/视图)的web服务器。

理论上,它的工作方式有点像应用程序服务器和数据库服务器的分离,而对于单个请求,由于网络开销的原因,对于一个用户来说,处理同步请求的速度可能比一个大服务器要慢得多。例如,应用服务器可以将处理过的(视图独立)的信息发送到web服务器,然后将其插入HTML (取决于客户机,例如移动浏览器)。可以在ram中缓存HTML,但不能缓存动态内容,这样即使页面看起来与每个用户(如Facebook)相当不同,与单个HTML/PHP组合相比,仍然可以获得一些速度上的好处。当然,它也将HTML与应用程序代码(PHP)分开。

我对此进行了研究,并遇到了许多PHP模板引擎,这些引擎将促进HTML与代码的分离,但是其中一些引擎比仅使用PHP和“编译”模板要慢得多(并且防止使用单独的web/HTML和代码/PHP服务器)。虽然使用PHP本身作为模板引擎,对于我来说,作为一个单独的开发人员,它可以正常工作,但它不会在一个有单独网页设计器的环境中工作。

总之,我在寻找/创建一个MVC框架和模板引擎/系统的组合,这将促进HTML和代码的分离以及视图和模型/控制器的分离,这实际上要比使用单一层更快。或者,更准确地说,它比单一层具有更好的可伸缩性(尽管我并不期望单个页面的速度会有很大的下降)。

EN

回答 1

Stack Overflow用户

发布于 2011-06-23 11:43:37

您看过其中一个非常多的PHP框架吗?他们中的大多数人都以这样或那样的方式进行所有这些运动。见鬼,我自己写了几篇文章,尽管使用了严格的XML模板引擎来摆脱贪婪的PHP开发人员。)(如果您想查看代码,请使用xSiteable)

MVC是不错的,但是有很多方法可以剥去这只猫的皮,坦率地说,MVC (或者它的许多化身、变异和变体中的任何一种)都是以复杂性为代价的分离,所以你肯定不会让它本身变得更快。我唯一能想到的就是你的模板引擎突然吐出来了。(以缓存的方式写入磁盘)基于后端业务逻辑的纯PHP文件,然后您可以使用各种加速器,并且使用得很好。不过,您仍然需要决定模板环境应该是什么。HTML中有符号或PHP、XML或其他东西吗?

编译器很容易制作,但我有点谨慎。我怀疑在高速缓存的模板引擎上,你会得到很多速度上的改进(至少与增加的复杂性相比),但这当然是可行的。

但是为什么不直接使用PHP本身,以及简单的Apache重写规则(使用'uri‘作为参数)?

代码语言:javascript
复制
$theme = 'default' ;
$dbase = 'mysql; '
$logic = $_REQUEST['uri'] ;  // or some other method, like __this__ with starting folder snipped

include 'themes/top.html' ;
include 'logic/'.$logic.'/header.php' ;
include 'themes/mid.html' ;
include 'logic/'.$logic.'/menu.php' ;
include 'themes/section1.html' ;
include 'logic/'.$logic.'/section1.php' ;
include 'themes/section2.html' ;
include 'logic/'.$logic.'/section2.php' ;
include 'themes/section3.html' ;
include 'logic/'.$logic.'/section3.php' ;
include 'themes/bottom.html' ;
include 'logic/'.$logic.'/footer.php' ;
include 'themes/end.html' ;

它是野蛮的,快速的,并提供你想要的,虽然它不优雅,也不漂亮,也不推荐。:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6453342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档