在項目裏增加 百度統計代碼
在項目裏 增加 百度統計代碼,但是我只想在生產環境上加,測試上不加,預發佈也不加,如何實現呢?
要在你的項目中僅在生產環境中添加百度統計代碼,你可以採用以下方法來實現:
-
使用環境變量:
- 在你的項目中設置一個環境變量,例如
NODE_ENV
或ENVIRONMENT
,在生產環境中將其值設爲"production"
,在測試和預發佈環境中設置爲其他值,如"development"
或"staging"
。
- 在你的項目中設置一個環境變量,例如
-
條件引入統計代碼:
- 在你需要插入百度統計代碼的地方(通常在HTML的
<head>
標籤內),使用編程語言(如JavaScript、Python、PHP等)檢查環境變量的值。
- 在你需要插入百度統計代碼的地方(通常在HTML的
以下是一個使用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"
時,纔會加載並執行百度統計代碼。
- 配置部署流程:
- 確保在測試和預發佈環境中,你的部署流程設置環境變量爲非生產環境的值。
- 在生產環境中,將環境變量設置爲
"production"
。
通過這種方式,你可以在不同的環境中控制是否加載百度統計代碼,從而實現只在生產環境中添加統計代碼的目標。
PHP項目實現
在PHP項目中,你通常不會直接使用 process.env.NODE_ENV
,因爲這是Node.js環境中的一個常見做法。在PHP中,你可以通過以下方式來實現類似的環境檢測:
-
使用服務器環境變量:
- 在你的服務器上設置一個環境變量,例如
APP_ENV
或NODE_ENV
。 - 在PHP代碼中,你可以使用
$_SERVER['APP_ENV']
或$_SERVER['NODE_ENV']
來訪問這個環境變量的值。
- 在你的服務器上設置一個環境變量,例如
-
配置文件:
- 創建一個配置文件(如
config.php
),在這個文件中定義一個變量來表示當前環境:
- 創建一個配置文件(如
<?php
define('ENVIRONMENT', 'production'); // 或者 'development'、'staging' 等
- 條件引入統計代碼:
- 在你需要插入百度統計代碼的地方,檢查
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框架中,你可以通過以下步驟來實現只在生產環境中添加百度統計代碼:
-
創建配置文件:
- 在你的ThinkPHP項目的配置目錄(通常爲
config/
)下,創建一個或多個環境特定的配置文件。例如,你可以創建config/production.php
、config/staging.php
和config/development.php
。
- 在你的ThinkPHP項目的配置目錄(通常爲
-
定義環境變量:
- 在你的服務器環境中設置一個環境變量,例如
APP_ENV
或NODE_ENV
。 - 在ThinkPHP的
.env
文件中(如果使用了.env
文件),或者在項目入口文件(如public/index.php
)中,根據服務器環境變量的值來定義一個常量或變量來表示當前環境:
- 在你的服務器環境中設置一個環境變量,例如
// 在 .env 文件中(如果使用了 .env)
APP_ENV=production
// 或者在 public/index.php 中
define('APP_ENV', $_SERVER['APP_ENV'] ?? 'development');
- 配置環境特定的配置文件:
- 在相應的環境特定配置文件中,定義一個鍵來存儲是否啓用百度統計代碼:
// 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',
],
];
- 引入和使用配置:
- 在你的視圖(模板)文件中,引入並檢查配置以確定是否輸出百度統計代碼:
<!-- 在你的視圖文件中 -->
<?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
時,纔會輸出百度統計代碼。
- 確保正確的環境加載:
- 在ThinkPHP的配置加載過程中,確保根據當前環境加載對應的配置文件。如果你使用的是ThinkPHP 6,框架已經內置了對環境特定配置的支持。你只需在配置目錄下按照上述方式組織配置文件即可。
通過這種方式,你可以在不同的環境中控制是否加載百度統計代碼,從而實現只在生產環境中添加統計代碼的目標。
歡迎關注公-衆-號【TaonyDaily】、留言、評論,一起學習。
Don’t reinvent the wheel, library code is there to help.
文章來源:劉俊濤的博客
若有幫助到您,歡迎點贊、轉發、支持,您的支持是對我堅持最好的肯定(_)