项目中增加统计代码

发布时间 2023-12-27 09:16:48作者: 刘俊涛的博客

在项目里增加 百度统计代码

在项目里 增加 百度统计代码,但是我只想在生产环境上加,测试上不加,预发布也不加,如何实现呢?

要在你的项目中仅在生产环境中添加百度统计代码,你可以采用以下方法来实现:

  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.

文章来源:刘俊涛的博客


若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)