2015-04-01 87 views
5

我目前正在研究一個有多個鬆散耦合模塊(20+)的項目,並且我決定使用Laravel 5和AngularJs。 我使用的是AngularJS的yeoman angularify生成器。 我無法決定應用程序結構,我最好希望每個子模塊都是不同的應用程序,因爲開發人員可以輕鬆地在獨立的應用程序上工作。多個Laravel 5和AngularJS應用程序

mylab/ 
    app/ 
     Http/ 
      Controllers/ 
       SomeController.php # API's that will be used across all apps 
     ... 
    public/ 
     bower_components/ 
      angular/ 
      bootstrap/ 
     scripts/ 
      angular.Modules.js #custom modules to be used across all apps 
      .. 
    resources/ 
     views/ 
      .. #landing page view 

    Sub-App1/ 
     app/ 
      Http/ 
       Controllers/ 
        SubApp1Controller #sub-app1 specific API's 
      .. 
     public/ 
      bower_components/ 
       repo1/ #specific to sub-app1 
      ... 
     resources/ 
      AngularApp1 #SPA for sub-app1 
      views/ 

    Sub-App2/ 
     app/ 
      ... 

而對於路由,我想是這樣的:

http://mylabs         //login OR landing Page 
http://mylabs/subapp/route1/123someid 

什麼是Laravel實現這一目標的最佳方式是什麼?

這個結構是否足夠好,可擴展,易於管理?

如果不是有更好的方法來實現這一目標嗎?

回答

0

我將模塊理解爲應用程序的獨立部分。並且應用程序由不同模塊構成。每個模塊都可以讓配置和路由在應用的配置上覆蓋。這可以通過提供商來實現。 作爲文件系統結構,我建議閱讀這兩個有關以模塊化方式組織您的應用程序的鏈接herehere。 還有一件事是使用controllerAs並避免在控制器中使用範圍,因爲範圍將在未來版本的angular上消失。 另一個資源是styleguide

6

對於Laravel路由你可以使用這樣的事情:

Route::group(['prefix' => 'subapp1'], function() 
{ 
    Route::get('route1/{id}', '[email protected]'); 
}); 

您的解決方案可能是管理的道路有疼痛感。它在創造複雜性和重複功能的同時不會在功能上給你帶來太多的收益。除了讓開發人員獨立工作之外,我會確保你有一個很好的理由去做,因爲你仍然可以通過以下方法來實現。

我建議使用單個Laravel應用程序來處理每個子應用程序的單獨控制器(或控制器)的所有路線。維護起來會更容易,並且仍然可以讓開發人員保留在他們自己的文件中,這樣他們就不會相互衝突。例外情況是routes.php,但您可以預先定義路由,以便開發人員不會全部編輯它。

我更喜歡將Angular的代碼放在公共文件夾中,以保持Angular與Laravel分離,但這取決於您計劃對刀片與Angular做多少計劃。如果不瞭解更多有關應用的信息,很難說,但是您可以將大部分工作留在Angular中,而Laravel只會發送最初的頁面。

這可以避免刀片與角度表達式衝突,並使角度應用與Laravel分離。但如果您選擇在Laravel視圖中保留Angular,請確保以某種方式處理。一些常見的解決方案是從{{ }}更改分隔符,或者使用@符號將Angular表達式前綴更改爲:@{{ user.email }}以防止Blade解析它們。

這裏是你如何能佈局的目錄結構:

app/ 
    Http/ 
     Controllers/ 
      AppBaseController.php # API's that will be used across all apps 
      SubApp1Controller.php # sub-app1 specific API's 
      SubApp2Controller.php # sub-app2 specific API's 
    ... 
public/ 
    bower_components/ 
     angular/ 
     bootstrap/ 
    scripts/ 
     angular.Modules.js # custom modules to be used across all apps 
     AngularApp1/ # SPA for sub-app1 
     AngularApp2/ # SPA for sub-app2 
     ... 
resources/ 
    views/ 
     ... # landing page view 
     sub-app1/ 
      ... # sub-app1 views 
     sub-app2/ 
      ... # sub-app2 views 
+0

我與你的複雜程度並不一致,意識到很快..找到[這裏](http://ziyahanalbeniz.blogspot.com! tr/2015/03/modular-structure-in-laravel-5.html),實施它。它現在工作。 – 2015-04-08 11:24:23

+0

我可以在http://sky.pingpong-labs.com/docs/2.0/modules上了解您的觀點嗎?這看起來似乎解決了OP的問題 – Tamil 2015-04-08 12:24:15

+0

@Tamil我以前沒有使用該解決方案,但我同意,它解決了OP的問題。它確實增加了一個額外的依賴關係,但只要維護它,這不是問題。 – 2015-04-08 13:11:27

相關問題