項目中增加統計代碼

在項目裏增加 百度統計代碼

在項目裏 增加 百度統計代碼,但是我只想在生產環境上加,測試上不加,預發佈也不加,如何實現呢?

要在你的項目中僅在生產環境中添加百度統計代碼,你可以採用以下方法來實現:

  1. 使用環境變量

    • 在你的項目中設置一個環境變量,例如 NODE_ENVENVIRONMENT,在生產環境中將其值設爲 "production",在測試和預發佈環境中設置爲其他值,如 "development""staging"
  2. 條件引入統計代碼

    • 在你需要插入百度統計代碼的地方(通常在HTML的 <head> 標籤內),使用編程語言(如JavaScript、Python、PHP等)檢查環境變量的值。

以下是一個使用JavaScript的示例:

if (process.env.NODE_ENV === 'production') {
  // 在這裏插入百度統計代碼
  var _hmt = _hmt || [];
  (function() {
    var hm = document.createElement("script");
    hm.src = "https://hm.baidu.com/hm.js?YOUR_BAIDU_ANALYTICS_CODE";
    var s = document.getElementsByTagName("script")[0]; 
    s.parentNode.insertBefore(hm, s);
  })();
}

在這個例子中,只有當 NODE_ENV 環境變量的值爲 "production" 時,纔會加載並執行百度統計代碼。

  1. 配置部署流程
    • 確保在測試和預發佈環境中,你的部署流程設置環境變量爲非生產環境的值。
    • 在生產環境中,將環境變量設置爲 "production"

通過這種方式,你可以在不同的環境中控制是否加載百度統計代碼,從而實現只在生產環境中添加統計代碼的目標。

PHP項目實現

在PHP項目中,你通常不會直接使用 process.env.NODE_ENV,因爲這是Node.js環境中的一個常見做法。在PHP中,你可以通過以下方式來實現類似的環境檢測:

  1. 使用服務器環境變量

    • 在你的服務器上設置一個環境變量,例如 APP_ENVNODE_ENV
    • 在PHP代碼中,你可以使用 $_SERVER['APP_ENV']$_SERVER['NODE_ENV'] 來訪問這個環境變量的值。
  2. 配置文件

    • 創建一個配置文件(如 config.php),在這個文件中定義一個變量來表示當前環境:
<?php
define('ENVIRONMENT', 'production'); // 或者 'development'、'staging' 等
  1. 條件引入統計代碼
    • 在你需要插入百度統計代碼的地方,檢查 ENVIRONMENT 變量的值。

以下是一個使用PHP的示例:

<?php
if (defined('ENVIRONMENT') && ENVIRONMENT === 'production') {
  // 在這裏插入百度統計代碼
  echo '<script>
    var _hmt = _hmt || [];
    (function() {
      var hm = document.createElement("script");
      hm.src = "https://hm.baidu.com/hm.js?YOUR_BAIDU_ANALYTICS_CODE";
      var s = document.getElementsByTagName("script")[0]; 
      s.parentNode.insertBefore(hm, s);
    })();
  </script>';
}
?>

在這個例子中,只有當 ENVIRONMENT 常量的值爲 production 時,纔會輸出百度統計代碼。

請確保在你的部署流程中,根據目標環境正確地設置環境變量或配置文件的值。

在ThinkPHP框架中,你可以通過以下步驟來實現只在生產環境中添加百度統計代碼:

  1. 創建配置文件

    • 在你的ThinkPHP項目的配置目錄(通常爲 config/)下,創建一個或多個環境特定的配置文件。例如,你可以創建 config/production.phpconfig/staging.phpconfig/development.php
  2. 定義環境變量

    • 在你的服務器環境中設置一個環境變量,例如 APP_ENVNODE_ENV
    • 在ThinkPHP的 .env 文件中(如果使用了 .env 文件),或者在項目入口文件(如 public/index.php)中,根據服務器環境變量的值來定義一個常量或變量來表示當前環境:
// 在 .env 文件中(如果使用了 .env)
APP_ENV=production

// 或者在 public/index.php 中
define('APP_ENV', $_SERVER['APP_ENV'] ?? 'development');
  1. 配置環境特定的配置文件
    • 在相應的環境特定配置文件中,定義一個鍵來存儲是否啓用百度統計代碼:
// config/production.php
return [
    // ...
    'baidu_analytics' => [
        'enabled' => true,
        'code' => 'YOUR_BAIDU_ANALYTICS_CODE',
    ],
];

// config/staging.php 和 config/development.php
return [
    // ...
    'baidu_analytics' => [
        'enabled' => false,
        'code' => 'YOUR_BAIDU_ANALYTICS_CODE',
    ],
];
  1. 引入和使用配置
    • 在你的視圖(模板)文件中,引入並檢查配置以確定是否輸出百度統計代碼:
<!-- 在你的視圖文件中 -->
<?php if (isset($config['baidu_analytics']['enabled']) && $config['baidu_analytics']['enabled']): ?>
    <script>
        var _hmt = _hmt || [];
        (function() {
            var hm = document.createElement("script");
            hm.src = "https://hm.baidu.com/hm.js?<?= $config['baidu_analytics']['code']; ?>";
            var s = document.getElementsByTagName("script")[0]; 
            s.parentNode.insertBefore(hm, s);
        })();
    </script>
<?php endif; ?>

在這個例子中,只有當 baidu_analytics.enabled 配置項的值爲 true 時,纔會輸出百度統計代碼。

  1. 確保正確的環境加載
    • 在ThinkPHP的配置加載過程中,確保根據當前環境加載對應的配置文件。如果你使用的是ThinkPHP 6,框架已經內置了對環境特定配置的支持。你只需在配置目錄下按照上述方式組織配置文件即可。

通過這種方式,你可以在不同的環境中控制是否加載百度統計代碼,從而實現只在生產環境中添加統計代碼的目標。



歡迎關注公-衆-號【TaonyDaily】、留言、評論,一起學習。

公衆號

Don’t reinvent the wheel, library code is there to help.

文章來源:劉俊濤的博客


若有幫助到您,歡迎點贊、轉發、支持,您的支持是對我堅持最好的肯定(_)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章