【问题标题】:Serving an Angular2 App on aws s3在 aws s3 上提供 Angular2 应用程序
【发布时间】:2017-02-17 09:24:29
【问题描述】:

我创建了一个 Angular 2 表单,它使用 Rest API 将表单数据发布到 postgres 数据库。现在,我想在 AWS S3 上提供我的 Angular 2 应用程序。我对此进行了谷歌搜索,发现创建 webpack 是一种解决方案,但无法创建。我想知道从哪里开始,捆绑我的代码并在 s3 上提供它。

表单的 GitHub 链接:https://github.com/aanirudhraj/Angular2form_signaturepad_API

感谢您的帮助!!

【问题讨论】:

标签: amazon-web-services angular amazon-s3 webpack


【解决方案1】:

最快的方法是使用 angular-cli 构建应用程序,然后将“dist”目录的内容部署为 S3 中的静态站点(可以将 S3 存储桶配置为托管静态站点;确保您已阅读允许“任何人”避免 http 4xx 返回码)。

【讨论】:

    【解决方案2】:

    您只需将其作为静态站点托管在 S3 上。 检查这个:http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html

    【讨论】:

      【解决方案3】:

      我从您的代码中推断出您正在使用angular-cli

      • 创建一个开发/生产版本

        ng build --dev / ng build --prod

      • dist 文件夹的内容将包含用于部署的捆绑文件。您的主要参考文件将是“index.html”,因为这将加载您的角度应用程序。
      • 您需要决定使用哪种服务器来为您的 webapp 提供服务。
        当我们做 ng serve 时,出于开发目的,webpack-dev-server 用作静态文件服务器(local development)。我建议您在部署到实际服务器时使用最舒适/最具成本效益的解决方案。

      静态文件服务器

      (*)如果您将来需要,以下方法还可以让您拥有一些服务器端代码。

      【讨论】:

        【解决方案4】:

        当你部署你的 ng2-app 时,你应该使用 AOT(ahead of time) 编译。 我猜你正在使用 JIT(及时)编译。

        在angular2指南页面中,

        使用 AOT,浏览器会下载应用程序的预编译版本。浏览器加载可执行代码,因此它可以立即呈现应用程序,而无需等待先编译应用程序。

        当您使用 JIT 编译时,您的浏览器会下载由 angular2 编译器定义的 vendor.js,它会及时编译您的应用程序。它太慢了,您的客户必须下载供应商文件。使用 AOT 时,不必使用 vendor 文件,因此资源更小。

        我建议在部署应用时使用 AOT 编译,并使用延迟加载来调整资源大小。

        如果您对 ng2 AOT 编译感兴趣,请阅读本指南。

        angualar2-cookbook-AOT

        这里是带有 webpack2 和延迟加载的示例 angular2 应用程序。

        在这里使用文件结构和配置文件。

        当我使用示例应用进行测试时,与 aot 捆绑的文件小于 500KB。

        angular2-webpack2-aot

        当你使用 @ngtools/webpack 或其他方式使用 aot 编译时,

        只需将所有文件放在 dist 目录中,其中包含在您的 S3 存储桶中使用 aot 编译的文件,我建议您将 aws cloudfront 缓存用于您的 s3 存储桶资源。

        【讨论】:

          猜你喜欢
          • 2020-09-11
          • 2021-05-02
          • 2018-05-22
          • 1970-01-01
          • 2012-11-02
          • 1970-01-01
          • 1970-01-01
          • 2017-04-14
          • 2017-02-12
          相关资源
          最近更新 更多