【问题标题】:Using MVC frameworks for front-end and back-end在前端和后端使用 MVC 框架
【发布时间】:2013-10-17 12:11:35
【问题描述】:

对于如何使用前端(例如 Angular)和后端(例如 Phalcon)的框架来开发 Web 应用程序,我有点困惑。 Phalcon 的文档有如下内容:

<?php

echo "<h1>Hello!</h1>";

echo Phalcon\Tag::linkTo("signup", "Sign Up Here!");

但是我不会使用 Angular 的 {{ }} 模板符号来打印东西吗?那么如果我使用 Angular,我真的需要使用 Phalcon、Laravel 或任何其他 PHP MVC 吗?

我想我想问一个非常基本的问题:如果我使用 Angular,我不能只在后端使用单个 PHP 文件而不使用 PHP MVC 吗?

(对不起,这个问题我不知道怎么表达;我可能会重新编辑)

【问题讨论】:

  • 很好的问题,尤其是那些好奇的问是 MVC 前端还是后端?

标签: angularjs model-view-controller phalcon


【解决方案1】:

完整答案:

您可以同时拥有 MVC 前端和 MVC 后端。你也可以有一个 MVC 前端,而没有框架的后端,反之亦然。你并不总是需要一个框架,但它通常是一个好主意。诀窍是找到您正在寻找的框架。

如果你想拥有一个很酷的 ALL JS(没有 PHP)应用程序,你可以使用 Deployd 之类的东西作为你的后端 api / mongodb,并以 MVC 的风格集成 Angular。如果你想 MVC'itize 这种类型的 JS 应用程序的后端框架,你可以这样做https://hackhands.com/mongodb-crud-mvc-way-with-passport-authentication/(请看 Express.js app/views 部分)。

我会推荐 Express.js 作为你的后端框架,并使用像 http://briantford.com/blog/angular-express 这样的 tut 来实现 MVC 风格。然后将所有脚本绑定到前端的 MVC 文件夹中,前端使用这个 express.js 服务器。您对views 文件夹的视图、对controller 文件夹的控制器(路由)以及构成CRUD 或后端API 的所有脚本,它们与您的mongodb 通信以将数据拉入model 文件夹。这很容易扩大规模。如果您在此设置中需要 Angular,则需要遵循有关如何将 Angular 实现为 express 的教程。

如果你想使用模板化 php 前端或 Angular MVC 前端来使用 PHP 后端,你可以使用 Symfony2 框架之类的东西,它是全能的,超级强大的,有据可查的,而且很容易.然后,当您使用 Twig(symfonys 默认模板引擎)制作模板(视图)时,您可以在那里编码您的 html,并在该页面上调用您的 php 变量,或者您可以像我提到的那样使用 angular 进行更改,然后调用在你看来就这样称呼它

{% verbatim %}
    { { variabileAngularjs } }
{% endverbatim %}   

而且,如果您最初问的是,在后端使用单个 PHP 文件,这听起来像您所说的“过程”编码,您也可以面向对象进行,但如果您去的话,不确定您的想法面向对象,然后很容易将模型放在模型文件夹中,将控制器放在控制器文件夹中,然后将其称为 mvc,但是如果您将所有功能放在相同的 PHP 方法中,例如验证帖子,goign到 db,从 db 解析数据,然后在 http 响应中将其发送到视图,这听起来像是对 Web 开发技术的错误使用,因为它会导致严重的依赖问题,因为您不会很好地观察到“解耦”如果你这样做了。为了解耦它,你删除执行 db 调用的方法,然后返回它,然后你有另一个方法,它可能在另一个文件上,在一个控制器文件夹中,它调用这个方法,并通过 http 返回,例如一个 http 响应,你的视图可以调用这个控制器动作,引发响应。这就是 MVC 想要做的方式。

我知道这是一个较老的问题,但它给了我需要的答案,但我觉得有义务对此做一个很好的记录,因为它没有太多信息来帮助支持这个问题。

【讨论】:

    【解决方案2】:

    您可以在前端 (AngularJS) 和后端使用 MVC。正如@bentaldon 所写,您可以拥有一个将数据返回给 AngularJS 的 API。

    API(后端)应用程序可以轻松拥有一个非常精简的 MVC 框架,其中 View 组件以您在 AngularJS 应用程序中需要的格式(比如 JSON)呈现数据

    如果您决定使用不是 API 形式的后端,那么您可以轻松更改 AngularJS 的 {{}} 模板符号以避免冲突。

    我可以在这里找到一个例子:

    https://github.com/niden/phalcon-angular-harryhogfootball

    同时使用 AngularJS 和 Phalcon。

    【讨论】:

    • 您的帖子中缺少网址?
    • 奇数。我首先添加了它,但它没有出现。现已更正。谢谢指点
    • @nikolaos 你触及了一个被bendaltons 回答部分遗漏的概念(他只回答了半个mvc 回答,用户要求mvc/mvc),但没有得到任何荣誉,我想投票你。您没有说是,而是说得很清楚,例如是的,您可以使用......更简洁。但是由于您没有获得任何选票,可能是因为您可能想更正您对“后退”一词的使用,也许将其更改为“前进”或“到”?因为我认为您指的是该观点,并且读者可能会将英文单词“back”的不当使用解释为实际的“后端”。
    【解决方案3】:

    对您的问题的简短回答是:是的,您可以为您的 Angular 应用程序使用简单的非 mvc 后端。事实上,这是一件好事。

    如果您愿意,您仍然可以使用 MVC 框架,但要避免在服务器端将数据动态呈现为 HTML(尽管有一些例外)。

    我倾向于建议使用服务器端语言来公开仅响应 JSON 数据的 RESTful API,然后使用静态 html/css/js (Angular) 来处理用户交互、导航、视图状态、数据检索等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-06
      • 1970-01-01
      • 2015-07-12
      • 2013-05-19
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多