使用Firebase设置Polymer以进行生产

时间:2017-03-19 09:18:03

标签: firebase polymer production-environment polymerfire

我在项目中使用Polymerfire库和本机javascript API,我需要设置生产环境。我搜索了多个帖子(例如this one),我得出结论,我需要创建一个单独的项目。但是,由于我使用的是Polymerfire库,因此我在整个项目中都指定了我的应用程序名称。

<firebase-auth id="auth" user="{{user}}" app-name="project-name" provider="password"
               signed-in="{{signedIn}}"></firebase-auth>

要在生产中部署,需要在任何地方更改此名称。我在想我可以创建一个computeAppName函数,它会根据环境返回应用程序名称,但我希望有更好的解决方案。

当我使用原生javascript API时,不会发生同样的问题,因为我只是选择数组中的第一个应用程序(我永远不会在我的项目中使用多个应用程序)。

实施例

            var actionCode = this.route.__queryParams["oobCode"],
                auth = firebase.apps[0].auth();

在我看来理想的情况下,如果Polymerfire库自动选择firebase.apps数组中唯一的现有应用程序,则会出现这种情况。如果是这种情况,我可以在index.html中使用app name初始化一个firebase-app元素,并在DOM树中更深入地保留应用程序名称。

如果我完全停止使用Polymerfire库,但不会遵循“聚合方式”做事,那么这个问题就会被消除。

另一个选择是在构建系统中创建一个任务(如gulp)来替换生产的应用程序名称,但这可能过于复杂。

您怎么看?

编辑: 目前我正在使用解决方法:

index.html中的

firebase-app元素:

<firebase-app id="main_app"
              name="project-id"
              api-key="key"
              auth-domain="project-id.firebaseapp.com"
              database-url="https://project-id.firebaseio.com"
              storage-bucket="project-id.appspot.com">
</firebase-app>

在使用Polymerfire的每个元素中,我创建了一个appName属性,该属性使用文档选择器从索引中的元素获取应用程序名称:

        appName: {
            type: String,
            value: function () {
                return document.getElementById("main_app").name;
            }
        }

<firebase-auth id="auth" user="{{user}}" app-name="[[appName]]" provider="password"
               signed-in="{{signedIn}}"></firebase-auth>

谢谢Jan

1 个答案:

答案 0 :(得分:0)

firebase-app元素的name属性仅用作firebase app对象的名称,可以是任意的,切换到生产项目时无需更改它。