Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度应用的参数化_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 角度应用的参数化

Javascript 角度应用的参数化,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个由一个角度前端、一个应用层和一个数据库层组成的。您可以在中看到架构 我正在使用一个nginx实例为客户端提供JS前端数据,并将客户端的请求代理到应用层。假设我将这个nginx部署在一个IP为18.1.1.1(假的)的云虚拟机上,我可以将我的浏览器指向该IP,客户端将下载JS代码,JS代码配置为,请参阅,将app server IP/fqdn设置为我指向浏览器下载ui的相同IP/fqdn。 此时,nginx代理将配置并将JS代码发出的所有/api请求转发到特定的fqdn。现在这是一个特定的

我有一个由一个角度前端、一个应用层和一个数据库层组成的。您可以在中看到架构

我正在使用一个nginx实例为客户端提供JS前端数据,并将客户端的请求代理到应用层。假设我将这个nginx部署在一个IP为18.1.1.1(假的)的云虚拟机上,我可以将我的浏览器指向该IP,客户端将下载JS代码,JS代码配置为,请参阅,将app server IP/fqdn设置为我指向浏览器下载ui的相同IP/fqdn。 此时,nginx代理将配置并将JS代码发出的所有/api请求转发到特定的fqdn。现在这是一个特定的FQDN,因为我将这些组件部署为容器,nginx容器总是知道如何访问
http://yelb-appserver:4567/api

现在我想创建更多的部署方法,特别是我想在S3 bucket(或任何其他web服务器)上托管角度位,并让JS直接指向API GW、单独的EC2实例、云负载均衡器等,或者表示与服务JS文件的web服务器的IP/FQDN不同的IP/FQDN端点的任何内容。 在这种情况下,我不能再使用我使用过的
appserver_env:'http://'+window.location.host

由于我想创建一个动态且可重复的部署工作流(使用cloudformation或类似工具),我想知道是否有一种方法可以使用单个JS编译工件,将角度代码参数化,以指向部署时创建的/api端点,或者如果我唯一的选择是,在每次部署时,要1)在部署时创建/读取/api端点,2)使用端点以编程方式自定义Angular代码,3)动态重新构建Angular应用程序(现在包括特定的/api端点)4)最后使用为部署的特定应用程序实例使用定制/api端点创建的临时JS代码部署web站点


谢谢

使用环境变量并将它们保存在配置中(如您的案例中的“environment.prod.ts”),该配置将提供给运行构建的节点进程。javascript代码可以使用这些变量,就像api端点一样,在需要api端点的任何地方,代码中都可以包含
process.env.api\u endpoint
。现在,对于提供这些变量,您可以使用一些简单的方法,例如,
API_ENDPOINT='/API'npm run build
,或者对于更高级的方法,您可以使用Docker。

谢谢@shishir。事实上,这将是我的计划B(使用变量与我提到的“调整”)。我仍然希望有另一种解决方案,它不允许为每次部署重新编译代码,但看起来选项B是我必须使用的。谢谢