【问题标题】:Converting a Smarty PhP App to AngularJS将 Smarty PhP 应用程序转换为 AngularJS
【发布时间】:2015-09-29 10:24:21
【问题描述】:

我有一个使用 Smarty 的 PHP 应用程序。它没有使用任何标准的 MVC 框架,但达到了相同的目的:

  • 导致页面转换的每次点击都会调用结构化 URL(类似于 REST 调用),该 URL 由 Apache 重写规则(在 .htaccess 中)解释为附加到 index.php 文件的特定查询参数。

  • index.php 然后确定要加载哪个页面或子页面,执行任何控制器逻辑,然后组装显示信息,加载 smarty vars 然后显示

我在某处读到不建议混合使用前端和后端 MVC 框架。但是,我需要在尽可能短的时间内转换应用程序。

典型的组合是使用 Angular 调用 PHP REST 后端。但是,我宁愿将所有深层业务逻辑保留在后端(不仅仅是 CRUD 操作),而是让 PHP 将要显示的数据发送回我的角度。

我对 Angular 还是很陌生:有什么东西会导致这在技术上是不可能的或次优的吗?

【问题讨论】:

    标签: php angularjs .htaccess model-view-controller


    【解决方案1】:

    典型的组合是使用 Angular 调用 PHP REST 后端。

    典型的,是的。但不是绝对必要的。您的网络服务可以按照您想要的方式构建。

    但是,我宁愿将所有深层业务逻辑保留在后端(不仅仅是 CRUD 操作),而是让 PHP 将要显示的数据发送回我的角度。

    我可能会误解您,但是,将您的业务逻辑保留在后端是应该的。 Rest is not CRUD.


    index.php 然后确定要加载哪个页面或子页面,执行任何控制器逻辑,然后组装显示信息,加载 smarty vars 然后显示

    这里的问题是“控制器逻辑”。据我所知,您正在尝试用客户端模板引擎替换服务器端模板引擎。没关系。但是 AngularJS 不是一个模板引擎,在你的情况下,有一些关键点可能使它成为一个糟糕的选择:

    1. Angular 旨在用作单页网站/应用程序。这意味着它期望页面流和视图逻辑,例如,由客户端控制。通过将“控制器”逻辑保留在后端,您可以将 Angular 变成一个效率极低且繁重的模板引擎。

    2. 它希望后端提供(结构化)数据,而不是“完整”视图。当然,没有什么能阻止您请求 PHP 文档。但这有点违背了使用角度的目的。

    3. 由于它的无状态特性,它可以很好地与 REST 配合使用。这 可能有点挑战,因为它偏离了通常的 PHP 设置。最大的例子是登录和 PHP 会话。

      通常,在大多数 PHP 设置中,用户通过登录表单进行身份验证,然后服务器使用 cookie 进行响应,通常包含 PHPSESSID。当 cookie 被传递时,用户保持登录状态并显示相应的 UI/视图/数据。要使这个逻辑适应 AngularJS 单页应用程序需要做一些工作。 This article might help you


    我对 Angular 还是很陌生:有什么东西可以让这在技术上不可能或不理想?

    简而言之……不可能不,远非如此。可能不是最理想的......


    【讨论】:

    • 您的第 2 点是支点。我正在查看每个最终调用 Smarty 的 PHP,而不是将所有组装数据发送到 AngularJS 以通过范围访问(即已执行业务逻辑。)所以从你的解释来看,这绝对是有序的。 Thx,只是想在努力之前确定一下。
    • @user1729972 没有问题。 =)
    • 话虽如此...我可能会在纯 AngularJS 中有一些页面(应用程序的一部分),在纯 PHP/Smarty 和 Angular 之间来回切换(与同一个后端交谈)。除了检查后端是否存在有效的 PHP 会话之外,还有其他主要问题需要解决吗?
    • 好吧,可能是任何在服务器中存储状态的东西。您必须确保 angularserver 中的状态更改在两者之间正确传播。
    猜你喜欢
    • 1970-01-01
    • 2015-12-29
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    • 2011-03-13
    • 2017-06-06
    • 2011-12-07
    相关资源
    最近更新 更多