使用MVC框架进行前端和后端

时间:2013-10-09 22:18:53

标签: angularjs model-view-controller phalcon

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

(抱歉,我不确定如何说出这个问题;我可能会重新编辑)

3 个答案:

答案 0 :(得分:5)

您的问题的简短答案是:是的,您可以使用简单的非mvc后端来处理角度应用程序。事实上,这是一件好事。

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

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

答案 1 :(得分:2)

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

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

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

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

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

同时使用AngularJS和Phalcon。

答案 2 :(得分:1)

完整答案:

您既可以拥有MVC前端,也可以拥有MVC后端。你也可以有一个MVC前端,没有框架后退,反之亦然。你不总是需要一个框架,但它通常是一个好主意。诀窍是找到你想要的框架。

如果你想要一个很酷的ALL JS(没有PHP)应用程序,你可以使用像Deployd这样的东西作为你的后端api / mongodb,并在MVC的风格中集成角度。如果你想MVC&#39; 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通信以在{{{ 1}}文件夹。这很容易扩大规模。如果您在此设置中需要Angular,则需要遵循有关如何将角度转换为快速的教程。

如果你想使用模板化的php前端或角度MVC前端进行PHP后端,你可以使用类似Symfony2框架的东西,它是ALMIGHTY,并且非常强大,文档很好,而且很简单。然后当你使用Twig(symfonys默认模板引擎)制作你的模板(视图)时,你可以在那里编码你的html,并在那个页面上调用你的php变量,或者你可以改变它,就像我提到的使用angular然后只是调用和在您的视图中将其命名为

model

而且,如果您最初询问的是,在后端使用单个PHP文件,这听起来就像您所说的那样#34;程序&#34;编码,你可以做面向对象,但不确定你的思维方式,如果你去面向对象,那么只需将模型放在模型文件夹中,控制器放在控制器文件夹中,然后它就可以了称为mvc,但是如果你把所有的功能放在同一个PHP方法中,比如验证一个帖子,那么就转到数据库,从数据库中解析数据,然后在http响应中向前发送到视图听起来像是对网络的错误使用开发技术,因为它引起严重的依赖性问题,因为你不会观察到“解耦”问题。如果你这样做很好。要解耦它,你删除执行db调用的方法,并返回它,然后你有另一个方法,也可能在另一个文件,在控制器文件夹中,调用此方法,并通过http返回,例如,一个http响应,您的视图可以调用此控制器操作,从而激发响应。这是MVC想要的方式。

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