2016-09-17 147 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", ".+"); 

顺便说一下,它只是对任何未知的路线陷阱...但我认为你拿个主意。