2013-10-09 128 views
3

對於如何在前端(例如Angular)和後端(例如Phalcon)上使用框架開發Web應用程序,我有點困惑。爾康的文檔有一個像位:對前端和後端使用MVC框架

<?php 

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

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

但是我豈不被採用了棱角分明的{{ }}模板標記打印的東西呢?所以如果我使用的是Angular,我真的需要使用Phalcon,Laravel還是其他任何PHP MVC?

我想我想問一個非常基本的層面:如果我使用Angular,我不能只在後端使用單個PHP文件而不使用PHP MVC?

(對不起,我不知道怎樣來寫這個問題,我可以重新編輯)

+0

很好的問題,特別是那些好奇的問是MVC前端還是後端? – blamb

回答

5

簡短的回答你的問題是:是的,你可以只使用一個簡單的,非MVC後端的你的角度應用。事實上,這是一件好事。

如果你願意的話,你仍然可以使用MVC框架,但是在服務器端動態地將數據轉換成HTML是避免的(雖然有一些例外)。

我傾向於推薦使用服務器端語言來公開RESTful API,它們只是響應JSON數據,然後使用靜態html/css/js(Angular)來處理用戶交互,導航,視圖狀態,數據檢索等

2

你可以在前端(AngularJS)和後端都使用MVC。正如@bentaldon所寫的,你可以有一個API將數據提供給AngularJS。

的API(後端)的應用程序可以很容易地與View組件的格式呈現數據非常精簡的MVC框架,你在你的AngularJS應用需求(比如JSON)

,你應該決定使用後端不以API的形式,您可以輕鬆更改AngularJS的{{}}模板表示法以避免衝突。

,我可以給你可以在這裏找到一個例子:

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

使用AngularJS和爾康在同一時間。

+0

你的帖子中遺漏了URL? – CaptSaltyJack

+1

奇數。我首先添加了它,但沒有出現。現在更正。謝謝你的指針 –

+1

@nikolaos你碰到一個由bendaltons答案部分遺漏的概念(誰只接受了一半mvc答案,用戶要求mvc/mvc),並沒有得分,我不願意讚賞你。而不是說是,你說得很清楚,例如是的,你可以使用......更簡潔。但是由於您沒有得到任何選票,這可能是因爲您可能需要更正您對「back」這個詞的使用,也許可以將其改爲「前進」或「到」?因爲我認爲你提到了這個觀點,而讀者很可能會將英文單詞「back」的不當使用解釋爲實際的「後端」。 – blamb

1

完整的答案:

你可以同時擁有MVC前端和MVC後端。你也可以擁有一個MVC的前端,並且沒有框架回來,反之亦然。你並不總是需要一個框架,但它通常是一個好主意。訣竅是找到你要找的框架。

如果你想有一個很酷的所有JS(沒有PHP)的應用程序,你可以使用諸如Deployd的東西作爲你的後端api/mongodb,並將角度整合到MVC風格中。如果你想MVC'這種類型的JS應用程序的後端框架,你可以做這樣的https://hackhands.com/mongodb-crud-mvc-way-with-passport-authentication/(看看Express.js app/views部分)。

我會推薦Express.js作爲您的後端框架,並使用像這樣的內容來實現MVC風格http://briantford.com/blog/angular-express。然後,所有的腳本綁定到前端的MVC文件夾中,該前端使用這個express.js服務器。您對views文件夾,控制器(路由)到controller文件夾的視圖以及組成CRUD或後端API的所有腳本,這些腳本與您的mongodb通信以便將數據提取到model文件夾中。這很容易擴大。如果你在這個設置中需要Angular,你會想要關注如何將angular實現爲express。

如果你想要PHP後端,無論是模板化的PHP前端,或角度MVC前端,你可以使用Symfony2框架,這是ALMIGHTY和超級強大非常有據可查,聞風而動。然後,當你使用Twig(symfonys默認模板引擎)製作你的模板(視圖)時,你可以在那裏編碼你的html,並在那個頁面上調用你的php變量,或者你可以改變它,就像我提到的使用angular然後調用調用它,就像這對你的看法

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

而且,如果你最初問,用在後端單一的PHP文件,這聽起來像你所說的「程序」的編碼,就可以做到這一點的面向對象也一樣,但不確定你的想法,如果你是面向對象的,那麼只需將模型放在模型文件夾中,然後將控制器放在控制器文件夾中,然後調用它的mvc,但如果將所有功能在相同的PHP方法中,像驗證帖子,轉到數據庫,從數據庫解析數據,然後發送在向視圖轉發的http響應中聽起來像是對網頁開發技術的不良使用,因爲它引起了嚴重的依賴性問題,因爲如果你這樣做,你不會很好地觀察「解耦」。爲了解耦它,你刪除了調用db的方法並返回它,然後在控制器文件夾中有另一個方法,它可能位於另一個文件中,該文件夾調用此方法,並通過http返回。一個http響應,你的視圖可以調用這個控制器動作,引發響應。這是MVC想要這樣做的方式。

我知道這是一個較老的問題,但它給了我需要的答案,但我覺得有義務對此做一個很好的寫作,因爲它沒有太多的信息來幫助支持這個問題。