【问题标题】:Is there a way to tell which environment (development/prodution) an Ember.js app is running in?有没有办法判断哪个环境(开发/生产)和 Ember.js 应用程序正在运行?
【发布时间】:2014-10-13 16:05:46
【问题描述】:

Ember.js 是否有环境概念,例如 Rails 有(开发/测试/生产)?例如,我可能想在开发中将一堆数据记录到控制台中,而不是在生产中。有什么办法吗?

为了避免 XY 问题,我将解释我的实际用例(与上面提到的相反):我想在应用程序处于生产状态时显示某个警告,而不是在开发中显示它。如果应用程序未通过 HTTPS 运行,则应显示警告。但是,由于开发通常发生在禁用 HTTPS 的本地计算机上,因此开发人员一直将其显示给他/她会很烦人。所以我想禁用开发中的警告。

【问题讨论】:

    标签: javascript ember.js development-environment production-environment


    【解决方案1】:

    Ember 上没有环境的概念,但是您可以将该责任委托给您的服务器环境(express、rails,无论您使用什么),您可以设置一个 JS 变量、一个 cookie、localStorage 值,无论您想要什么。

    编辑:另外,由于您可能正在本地环境中进行测试,您可以检查 URL 中的域,例如 localhost、0.0.0.0 等,

    为此,您可以使用window.location.host

    【讨论】:

    • 另外,如果你想要客户端只有 yiu 可以检查 URL,因为它可能不同,或者检查开发人员可以设置为请求开发模式的 cookie。
    【解决方案2】:

    或者,您可以导入环境,例如从'../config/environment'导入ENV; 然后检查您所处的环境并做出相应的决定。

    【讨论】:

      【解决方案3】:

      只需在页面中向下传递一个属性

      var isProduction = false; // dynamically populate
      
      App = Ember.Application.create({
        LOG_TRANSITIONS: !isProduction, 
        LOG_TRANSITIONS_INTERNAL: !isProduction,
        log: function(){
          if(isProduction) return;
          console.log.apply(console, arguments);
        }
      });
      

      并在任何地方使用App.log

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多