我如何通过角度索引文件中的网站域提供来自不同云服务桶的资产

问题描述 投票:0回答:1

由于政治原因,目标是从两个云服务桶(AWS)和(ALIYUN)提供图像和字体资产。

中国客户不想从AWS的美国服务中查看图像/字体,因此我们需要从ALIYUN服务。

因此,如果域名不在中国,那么有角度的网站将从AWS提供资产,而当域名不在中国时,它将从Aliyun提供资产。

到目前为止,我的策略涉及在全局scss文件中使用域基本变量。该变量将在SCSS文件中的所有资产网址之前所以它看起来像:

domain.scss文件

$$ domain-asset:https://s3-amazon.myBucket/;

此scss文件将在项目构建过程中被覆盖(使用节点的writefile),因此,如果我们改用china,该文件现在将具有构建完成后,以下内容:

domain.scss文件

$$ domain-asset:https://aliyun.oss.myBucket/;

这对于scss文件中的资产效果很好,但是当在index.html中声明像favicon和预渲染的字体之类的资产时,上下文不在的scss文件。无论如何,我还能在其上设置基本域吗?

我查看了angular.json配置,'deploy-url'属性与我想要的最接近,除了url绝对是前缀索引文件中的所有资产(包括css和js文件),但不是将存在于云中的那些文件,只是图标和字体。

angular assets cdn
1个回答
0
投票

到目前为止,我想出的是,基于我们创建的'cloud'命令行参数,使用读/写node.js fs编辑具有正确存储桶基本URL的文件,以设置成角度的aws或阿里巴巴构建命令。-对于索引文件中的资产。我在JSDOM(模拟DOM操作)的帮助下修改了文件,找到了所有带有单词“ assets”的链接(使用JSDOM queryselector),并在URL前面加上了前缀。-对于scss文件中的图像,我读写了一个全局的scss样式表,其中包含保存url域的变量。

这很好,直到两个存储桶都乘以五以适应不同的环境,例如开发,质量,分段等。如果在构建中完成,则在url中设置环境将成为问题,因为现在无论构建该项目的人都必须意识到它的目标环境。如果我们错误地构建开发映像并按质量进行部署,这将是意外的情况。

接下来要尝试的是至少将样式表部署到存储桶,这样所有图像都可以依赖于相对路径,并且无需确定所需的存储桶URL。到目前为止,我不确定如何实现。

© www.soinside.com 2019 - 2024. All rights reserved.