在项目里增加 百度统计代码
在项目里 增加 百度统计代码,但是我只想在生产环境上加,测试上不加,预发布也不加,如何实现呢?
要在你的项目中仅在生产环境中添加百度统计代码,你可以采用以下方法来实现:
-
使用环境变量:
- 在你的项目中设置一个环境变量,例如
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.
文章来源:刘俊涛的博客
若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)
标签:项目,代码,环境,百度,ENV,hm,环境变量,统计 From: https://www.cnblogs.com/lovebing/p/17929783.html