加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何将Angular 4(前端)部署到CDN?

发布时间:2020-12-17 08:33:05 所属栏目:安全 来源:网络整理
导读:我想将我的Angular应用程序(使用AOT)部署到CDN,同时使用我自己的REST服务器. 我想第一个请求总是转到我的REST服务器(比方说https://example.com).然后第一个响应将指示浏览器从CDN加载Angular的第一个模块. 所有资源请求(API请求)当然都会转到我的REST服务器
我想将我的Angular应用程序(使用AOT)部署到CDN,同时使用我自己的REST服务器.

我想第一个请求总是转到我的REST服务器(比方说https://example.com).然后第一个响应将指示浏览器从CDN加载Angular的第一个模块.

所有资源请求(API请求)当然都会转到我的REST服务器(假设是https://example.com/api/XXXX).

现在我的问题是:

代码如何知道从哪里加载下一个Angular模块?

有人可以解释一下这背后的机制吗?

简答:在执行“ng build”时使用选项“–deploy-url”.

“–deploy-url”的作用是强制< script>使用您指定的域使用绝对URL的标记.这样浏览器将始终知道加载静态资产文件的位置(JavaScript,图像等)

=========================

使用案例:

REST服务器正在我们的数据中心运行.它不仅提供REST API,还提供初始index.html(意味着来自浏览器的非常第一个请求始终转到此REST服务器).

我们所有的Angular静态文件(它们只是JavaScript文件)都部署到CDN(例如AWS,AZURE,GOOGLE ……)

=========================

如果没有“–deploy-url”,“ng build”将产生一个index.html,如下所示:

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>MyApp</title>
  <base href="/">

  <meta name="viewport" content="width=device-width,initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
  <app-root>Loading...</app-root>
  <script type="text/javascript" src="/inline.bundle.js"></script>
  <script type="text/javascript" src="/polyfills.bundle.js"></script>
  <script type="text/javascript" src="/styles.bundle.js"></script>
  <script type="text/javascript" src="/vendor.bundle.js"></script>
  <script type="text/javascript" src="/main.bundle.js"></script>
 </body>
</html>

使用“–deploy-url”,initial-scale=1"> <link rel="icon" type="image/x-icon" href="favicon.ico"> </head> <body> <app-root>Loading...</app-root> <script type="text/javascript" src="https://any.cdn.com/inline.bundle.js"></script> <script type="text/javascript" src="https://any.cdn.com/polyfills.bundle.js"></script> <script type="text/javascript" src="https://any.cdn.com/styles.bundle.js"></script> <script type="text/javascript" src="https://any.cdn.com/vendor.bundle.js"></script> <script type="text/javascript" src="https://any.cdn.com/main.bundle.js"> </script> </body> </html>

=========================

部署是什么样的:

例如,

ng build --deploy-url YOUR-CDN-SERVER-DOMAIN --prod --aot

这应该生成一个/ dist文件夹,其中包含所有内容(包括index.html).接下来只需将index.html移动到REST服务器,然后将剩余的文件部署到CDN.

现在,您可以让用户首先访问您自己的域名www.example.com.您可以将所有Angular生成的JS文件放到您想要的任何CDN中,而无需担心CORS.

=======================

笔记:

该解决方案可以从高层次的角度解释事物.它确实在我的情况下完美运行.如果您有任何疑问,请随时发表评论.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读