语境:
我正在使用 Angular 前端和 Node.js 快速后端构建一个食谱网站。我正在使用 Heroku 作为后端,并尝试使用 Firebase 作为前端。后端尚未准备好使用,并且不稳定。前端几乎为 v1 做好了准备。目前,我所拥有的只是从 GET /api/recipes 端点检索食谱列表并显示它们(并搜索加载的食谱)的能力。最终,我计划添加通过食谱以及其他端点添加/编辑/删除/搜索的功能。目前,它同样适用于静态 .json 文件或动态 GET 端点。
在把这个加到后端的过程中,后端自然会宕机,有时可能会暂时无法使用,所以我当然要部署两次API,两次部署前端。产品和开发,实时和预览。使用 Heroku 应该很容易,但是 Firebase 给我带来了一些问题。
我想为不同的部署提供不同的配置。前端向 Firebase 询问“我应该使用的 API 在哪里”的一种方式。这不应该进入存储库,代码一次部署很多,yada:https ://12factor.net/codebase 。但我还没有弄清楚如何使用 Firebase 做到这一点。
目标:
Firebase 远程配置应使用 App Channel 等条件,根据部署的通道发送不同的 api_url 参数。这不应该存储在存储库中。它不应该放弃其他部署等。
无论我使用什么配置,都应该是 build-once deploy-many。我不希望传递配置参数,例如configs:{"recipes.web.app":{apiUrl:"..."}, "recipes-preview-1239j20.web.app":{apiUrl:"..."}}
. 前端必须不知道其他部署。它甚至不必知道它的托管位置。
现在的进展:
我成功地将不同版本部署到直播频道和预览频道。我使用 GUI ( ) 成功地进行了 RemoteConfig 配置https://console.firebase.google.com/project/<project_name>/config
。我确实看到了如何添加条件。我在 Angular 的自定义服务中成功访问了 RemoteConfig。我确实发现预览和直播频道上的 init.json 是相同的。我确实成功地将其限制为“如果它是食谱应用程序”,但它没有用,因为一切都是食谱应用程序。有一种方法可以创建多个站点,但这也不是很有用,因为我必须重新设置整个应用程序。
我没有设法弄清楚如何从命令行部署 remoteconfig.template.json。我没有设法弄清楚哪些条件是有用的。我没有设法在条件选择器中启用“版本”条件。我没有找到关于“渠道”的任何条件。即使在同一页面上,我也没有找到任何带有“远程配置”和“频道”的东西!我没有设法在 firebase 文档中找到有关“部署”的任何内容。
替代和不相关的旁注:
我对 Firebase 感到非常沮丧,如果我无法弄清楚这一点,我将放弃它,转而支持我刚刚发现的 Heroku。一个“不受支持”的 nginx 构建包(https://elements.heroku.com/buildpacks/heroku/heroku-buildpack-nginx)。“不受支持”,因为它是非官方的。我对 nginx 很熟悉,使用它会使这个个人项目的一切(除了服务器位置和构建/部署过程)与我在工作中所做的相匹配。而且我个人项目的两半(静态 Web 和 api)都将在同一个主机上,这可能会让事情变得更好。