4

我对如何在前端(例如 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 吗?

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

4

3 回答 3

6

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

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

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

于 2013-10-09T23:07:28.620 回答
2

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

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

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

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

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

同时使用 AngularJS 和 Phalcon。

于 2013-10-10T13:12:07.520 回答
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.jsapp/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 方法中,例如验证帖子,则转到数据库,从 db 解析数据,然后在 http 响应中将其发送到视图,这听起来像是对 Web 开发技术的错误使用,因为它会导致严重的依赖性问题,因为如果你这样做了,你就不会很好地观察到“解耦”这个。为了解耦它,你删除执行 db 调用的方法,然后返回它,然后你有另一个方法,这也可能在另一个文件上,在控制器文件夹中,它调用此方法,并通过 http 返回,例如 http 响应,您的视图可以调用此控制器操作,引发响应。这就是 MVC 想要做的方式。

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

于 2015-10-20T00:58:32.777 回答