如何在laravel中实现角度服务器端渲染?

时间:2018-03-30 20:14:32

标签: angular laravel angular5 serverside-rendering angular-universal

我创建了一个带有角度5的单页面应用程序。我将此应用程序与laravel后端一起使用。在laravel项目中我有一个angular文件夹,这个文件夹存储了所有的角度文件。我在angular laravel的项目文件夹的公用文件夹中构建了angular文件夹之外的angular应用程序。我设置了web.php文件,所以如果我转到homestead.test url,index.html将从公共文件夹加载。在我使用stories universal rendering设置服务器端渲染后,我构建了客户端应用程序和服务器包。在我这样做之后,在浏览器中转到homestead.test,我看到我的应用程序看起来不像以前那样。正常的构建(顺便说一句,我是匈牙利语,所以我使用了匈牙利语): enter image description here 在我完成了Universan渲染构建之后( ng build --prod --extract-css ng build --prod --extract-css --app 1 --output-hashing = false ,我使用了--extract-css,因为我在角度中使用了scss,当我没有使用它时,我收到了很多警告): enter image description here 当我查看页面源时,它看起来像原始角度源,但在快速服务器中,源显示真实内容。 所以我的问题是如何设置laravel像快递服务器一样? ng build --prod --extract-css 创建了很多js文件,assets文件夹和其他一些文件,但是ng build只创建了一些文件,没有assets文件夹。那么如何在laravel中导入所有资产文件夹和js文件?故事通用渲染也从Node server.ts创建了一个server.js文件。我不知道这个文件在laravel中是必要的。

我也有一些上瘾的问题: 这是将laravel连接到角度应用程序的最佳方式吗?如果是,我可以使用真正的网络主机托管它吗? 有没有免费的网络主机来测试我的应用程序? 如果我像在快递服务器上那样成功地在laravel中显示角度应用程序,那么刷新任何网址中的页面都会有效吗?因为现在我收到了一条错误消息。

我创建了这个应用程序作为我的大学的论文应用程序,我已经在网络上使用主机应用程序,我只使用本地主机。

1 个答案:

答案 0 :(得分:0)

Angular Universal的想法是在服务器端运行javascript以在服务器端生成页面。当然,使用Node(Express JS)很容易,因此就已经存在了。

关于PHP上的Angular Universal,您可以按照此Github issue进行操作。我的理解是,至少在今天,没有任何支持。但确实很多人都希望获得支持,未来很可能会有支持。

目前,您有以下选择:

  1. 您可以按照现在的方式继续做事,并且可以在任何托管平台上托管应用程序。虽然,您应该改进您的构建机制,以删除在Laraval中复制角度文件的手动干预。你的构建机制应该做所有这些复制。该方法的缺点是您将无法获得Angular Universal提供的服务器端渲染的好处。但是如果你不关心页面加载速度和搜索引擎优化这些好处,你就是好的。
  2. 另一个选项是在Node(Express JS)中托管Angular部分,并将所有API调用路由到Laraval。因此,您可以获得Angular Universal的好处。这意味着您希望至少运行两个进程 - 一个用于API,另一个用于提供UI。
  3. 根据要求使用这两个选项。对于更大的基于微服务的体系结构,第二种方法是首选方法,因为它使UI部分的生命周期和API部分独立。

    然而,对于用户群较少且你并不真正关心SEO的小型项目,第一种选择是有道理的。