PHP模板系统vs javascript AJAX模板

时间:2016-06-21 02:35:29

标签: javascript php jquery ajax

我的PHP模板如下所示:

$html=file_get_contents("/path/to/file.html");
$replace=array(
"{title}"=>"Title of my webpage",
"{other}"=>"Other information",
...
);
foreach(replace AS $search=>$replace){
    $html=str_replace($search,$replace,$html);
}
echo $html;

我正在考虑切换到javascript / ajax模板系统。 AJAX将以JSON格式获取$replace数组,然后我将使用javascript替换HTML。

该页面将是一个普通的.html文件,并且在ajax完成之前将显示加载屏幕。

这有什么真正的优势,还是过渡浪费时间?

我认为这有利的几个原因是:

  • 即使Mysql或PHP服务已关闭,页面仍会加载。如果ajax失败,我可以使用错误消息处理它。
  • Bot流量(以及其他任何不运行JS的流量)都会对我的服务器造成很小的负担,因为永远不会发送ajax。

请让我知道你的想法。

3 个答案:

答案 0 :(得分:0)

我认为你忘记的最重要的方面是:

  • 搜索引擎优化:搜索引擎机器人怎么样?如果仅通过javascript设置,它们将无法索引您的内容。
  • 执行和网络延迟:当您的服务正常工作时,浏览器将等待页面加载(假设为800毫秒),然后再进行额外的Ajax调用以获取您的值。这可能会额外增加500毫秒(取决于网络速度和地理位置......)。如果您已经通过服务器发送了所有生成的数据,那么您只需花费大约1ms的时间来准备完整的响应。你会在空白页面上等待很多。
  • 缓存:您可以在Web应用上缓存生成的页面。这样你的负载也会被最小化。而且,如果您仍希望在后端服务(MySQL / PHP ..)关闭时提供内容,您甚至可以使用Apache或Nginx缓存。

但我想这实际上取决于你想做什么。

对于快速简单的页面,这似乎是你的情况,坚持后端增强功能。

对于能够承受加载时间且不关心SEO的动态/交互式应用程序,您可以将大部分内容委托给前端。但是然后使用像Angular这样的高级框架来处理模板,缓存等......

答案 1 :(得分:0)

我在其他项目中使用过类似的设计模式。有几种方法可以做到这一点,任务涉及管理多个项目或应用程序模块。我假设您正在与开发人员团队合作,而不是使用PHP或JavaScript MVC框架。

PHP模板

出于多种原因,我反对使用“搜索和替换”方法,特别是使用服务器端脚本语言来解析HTML文档作为模板工具包。

为什么呢?

  1. 当您维护业务规则和项目变得更大时,您将会 发现自己正在阅读一长串正则表达式, 将HTML解析为DOM,和/或用于搜索的复杂算法 要用正确的文本替换的节点。
  2. 如果您有占位符,例如{title},那将有助于 脚本,以减少搜索和替换表达式,但设计 模式可能导致与多个开发人员的混乱共享。
  3. 可以解析一个或两个HTML文件来管理输出,但不能 整个模板。网络响应速度可能会慢一些 多次和重复的服务器之旅,这只是为了 模板。可能还有其他脚本正在前往 服务器出于与模板无关的不同原因。
  4. AJAX / JavaScript的

    最初,使用JavaScript的AJAX可能听起来像一个简洁的想法,但我仍然不相信。

    为什么?

    1. 您不能假设每个移动设备都启用了JavaScript浏览器 或桌面。您可能需要在很少的情况下构建HTML模板 管理非JavaScript浏览器输出的方法。你可能会 需要在每个页面上包含<noscript>和/或<iframe>标记。和, 管理非JavaScript浏览器的替代模板即可 乏味的。
    2. 每个网络浏览器都以不同方式解释JavaScript。大多数开发者 应该知道IE,FireFox,Chrome,Safari和之间的差异很小 仅举几例。您可能需要创建多个JavaScript文件 然后检测然后为该特定Web浏览器加载JavaScript。您 更新一个功能,您必须更新所有Web浏览器的脚本。
    3. JavaScript在页面源中可见。我不想显示 保密的JavaScript函数,可能包含凭据, 泄漏有关Web服务和/或SQL查询的敏感数据。这个想法 是为了尽可能保护您的页面。
    4. 我不是说两者都不可能。您仍然可以使用PHP或JavaScript进行模板化。

      但是,我的“理想”Web结构应该包含可靠的MVC,如Zend,Spring或Magnolia。这些MVC框架包括许多有用的功能,如Web服务,数据映射和模板工具包。当然,具有配置要求的初学者很难将MVC集成到您的项目中。但最后,您可以将配置,MVC概念,自定义SQL查询和测试用例中的任务委派给开发人员。那是我的两分钱。

答案 2 :(得分:0)

我的2cents是在模板端(javascript)做逻辑更好。如果您有高流量站点,则可以将一些处理卸载到调用该站点的每台计算机。也许更少的服务器。

使用像AngularJs这样的Javascript框架,模板的内容非常简单有效。框架将为您进行缓存。

是的,SEO可能是某些网站的问题。您可以使用代理工具来呈现站点并将静态html返回到bot。另外我认为现在有些机器人会渲染javascript。

最后,我喜欢在前端模板,因为我喜欢后端是通用数据提供程序(RESTful API)。通过这种方式,我可以构建一个通用后端,以通用方式驱动Web /移动和其他平台。 UI逻辑可以是javascript中的独立内容。

但它归结为您的应用程序的设计需求。我构建了许多软件作为服务应用程序,因此单页应用程序对我来说很有效。