2016-09-17 143 views
12

使用最新的angular-cli,我創建了新的項目,一切正常。接下來,我嘗試將它集成到Laravel 5.3中。我有這個項目與systemjs一起工作,但我想切換到webpack並利用angular-cli。Angular 2 + angular-cli + Laravel 5.3

問題是在angular-cli.json中,我無法指定該索引是index.php,它只接受HTML。

基本上,我無法使用此設置啓動Angular應用程序。

我該如何克服這個問題?

+4

我與angula2,角CLI和laravel 5.3工作使用它,但我讓他們分開,我建立與laravel的API,並與angular2消耗它它運作良好,爲什麼你不使用相同的方法? –

+0

@CristianSepulveda謝謝你的輸入(y) –

+0

@CristianSepulveda可以請你提供任何網址演示爲strutured你正在使用,我也希望這個,但與laravel想安裝角4 – sunil

回答

8

最後,我分離了Laravel和Angular 2,正如Cristian Sepulveda在評論中寫道的。無論如何,這是推薦的方法。

我使API與Laravel並與角2

+1

我怎樣才能使API在Laravel使用它? – huykon225

0

我有同樣的問題,我發現這是related issue in their GitHub issues

輸出文件夾將始終被完全取代。您可以使用公共/文件夾來讓您的index.php文件複製到您的輸出文件夾,或將應用程序輸出到單獨的文件夾並自行復制文件。

這是設計,不會改變。這是一個生成輸出文件夾,不是一個部署文件夾。你應該分開這兩個步驟。

所以,你不能真正達到你想要的,但這是我發現的唯一解決方法。

3

在我的情況下,我服務從拉拉維爾角應用程序。我仍然使用webpack來構建我的資產,但有一個吞噬任務,它將角度index.html複製爲laravel應用程序所服務的index.blade.php。 我也使用gulp將構建的文件從/ dist複製到/ public

0

我只爲我找到了一個解決方案。

  1. 創建由ng build --prod
  2. 構建客戶端代碼中使用一飲而盡複製生成的文件到Laravel公共目錄gulp copy(在這裏你可以檢查,如果舊的生成文件時存在刪除)
  3. 使用複製一飲而盡,ingect插件注入文件到版面gulp inject

- 這可以在CI中使用並使用自動化工具完成。結果我們有inline.js和三個*。**。bundle.js文件被注入。在相同的主佈局中,我已經靜態添加<base href="/example">(您可以使用Laravel路徑中的任何根路徑定義)以及從此路徑加載的模板文件(在我的示例中爲'example.blade.php')添加角2根元素<st-example>Loading...</st-example>

- 通過這個設置,你有根Laravel佈局,其內部需要角2根URL href並從構建注入腳本文件。而你當前路由的模板文件裏面有根元素(它通過簡單的刀片('content')包含在主要佈局中)。

P.S.你也必須注意到,如果你在角2中使用了一些http請求,在將它集成到Laravel項目之後,這將爲每個請求添加csrf保護中間件...並且如果在以前工作的請求中有一些新錯誤, 。

0

由於angular-cli不允許指定index.php,因此,只需指定index.html然後在那裏... 並在Laravel路由中添加適當的路由。像這樣的,例如:

Route::any('{path?}', function() { 
    return File::get(public_path() . '/index.html'); 
})->where("path", ".+"); 

順便說一下,它只是對任何未知的路線陷阱...但我認爲你拿個主意。