Angularjs 在前端和后端使用MVC框架

Angularjs 在前端和后端使用MVC框架,angularjs,model-view-controller,phalcon,Angularjs,Model View Controller,Phalcon,对于如何使用前端(例如Angular)和后端(例如Phalcon)上的框架开发web应用程序,我有点困惑。Phalcon的文档有如下内容: <?php echo "<h1>Hello!</h1>"; echo Phalcon\Tag::linkTo("signup", "Sign Up Here!"); 对您的问题的简短回答是:是的,您可以为您的angular应用程序使用一个简单的非mvc后端。事实上,这是一件好事 如果愿意,您仍然可以使用MVC框架,但是在服

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

<?php

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

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

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

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


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

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

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

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

我可以给大家举一个例子:

同时使用AngularJS和Phalcon。

完整答案:

您可以同时拥有MVC前端和MVC后端。您还可以有一个MVC前端,并且没有框架向后工作,反之亦然。你并不总是需要一个框架,但它通常是一个好主意。诀窍是找到您想要的框架

如果你想拥有一个很酷的ALL-JS(无PHP)应用程序,你可以使用类似Deployd的东西作为你的后端api/mongodb,并以MVC的风格集成angular。如果你想MVC’itize这种类型的JS应用的后端框架,你可以这样做(看看Express.JS
app/views
part)

我推荐Express.js作为您的后端框架,并使用像这样的tut实现MVC风格。然后将所有脚本绑定到前端的MVC文件夹中,前端使用这个express.js服务器。查看
视图
文件夹、控制器(路由)到
控制器
文件夹,以及组成CRUD或后端API的所有脚本,这些脚本与mongodb通信以提取
模型
文件夹中的数据。这很容易放大。如果在此设置中需要Angular,则需要按照教程介绍如何在express中实现Angular

如果您想使用模板化的PHP前端或角度MVC前端作为PHP后端,您可以使用像Symfony2框架这样的东西,它是万能的、超级强大的、有很好的文档记录的,而且不需要动脑筋。然后,当您使用Twig(symfonys默认模板引擎)创建模板(视图)时,您可以在那里编写html代码,并在该页面上调用php变量,或者您可以像我提到的那样使用angular对其进行更改,然后像在视图上这样调用它

{% verbatim %}
    { { variabileAngularjs } }
{% endverbatim %}   
而且,如果您最初要求,在后端使用单个PHP文件,听起来像是“过程”编码,您也可以面向对象,但不确定您的想法,如果您采用面向对象的方式,那么很容易将模型放在模型文件夹中,将控制器放在控制器文件夹中,然后它被称为mvc,但是如果你把所有的功能都放在同一个PHP方法中,比如验证一个post,连接到db,解析db中的数据,然后在http响应中将其发送到视图,听起来像是对web开发技术的糟糕使用,因为这会导致严重的依赖性问题,因为如果你这样做,你就不会很好地观察到“脱钩”。要将其解耦,请删除执行db调用的方法并返回它,然后在控制器文件夹中有另一个方法,该方法可能位于另一个文件上,它调用此方法,并通过http返回,例如http响应,您的视图可以调用此控制器操作,引发响应。这是MVC想要的方式


我知道这是一个老问题,但它给了我我需要的答案,但我觉得有义务写一篇好文章,因为它没有太多的信息来支持这个问题

你的帖子中缺少URL?奇怪。我首先添加了它,但它没有出现。现在更正。谢谢你的邀请pointer@nikolaos你提到了一个bendaltons答案部分遗漏的概念(他只给出了一个半mvc的答案,用户要求mvc/mvc),但没有得到任何评价,我不想投你一票。你没有说“是”,而是说得很清楚,例如“是”,你可以用。。。。。。更简洁。但是由于你没有得到任何选票,这可能是因为你想纠正你对“back”这个词的用法,或者把它改成“forward”或“to”?因为我认为你提到的观点,读者可能会把英语单词“back”的不当使用解释为实际的“back end”。这是一个很好的问题,特别是那些好奇问MVC是前端还是后端的人?