问题描述
我有一个正在使用香草JS / HTML的网站,我计划最终使用docker通过Nginx为该网站提供服务,并将其托管在云中的某些VM上。
在测试网站时,我希望我的JavaScript使用在计算机上运行的测试终结点,例如http://localhost/myapi/
在生产环境中运行时,我希望我的JavaScript使用生产环境端点,例如http://example.com/myapi/
以前,我已经通过创建两个不同的文件test_endpoint.js
和prod_endpoint.js
并根据传递给我的Dockerfile的参数将其复制为endpoint.js
的方式解决了这个问题。
根据我的设置,是否有更好的方法来管理测试和生产端点?
解决方法
如何根据所使用的URL在变量中设置基本URL?像这样:
const api = window.location.host === 'localhost' ? 'http://localhost/myapi/' : 'http://example.com/myapi/';
然后在要调用api的任何地方使用该变量:
fetch(api + 'my/endpoint')