跳到主要内容
Deno 2.4 发布,带来 deno bundle、字节/文本导入、稳定版 OTel 等功能
了解更多
Growthbook is now on JSR

宣布 Growthbook 在 JSR 上线

如今的用户比以往任何时候都更精明,他们有更多的网站和应用程序可供选择。对于渴望了解并吸引用户的企业而言,利用产品数据和分析已成为基本要求。但对大多数团队来说,建立和维护数据摄取管道和实验平台是不现实的。

我们很高兴地宣布,GrowthBook 的 JavaScript SDK 现已在 JSR 上可用

GrowthBook 是一款领先的开源功能开关和实验平台,允许您在 JavaScript 应用程序中评估功能开关并运行实验。他们的 JavaScript SDK 轻量、快速,不需要任何外部依赖,并且可以与您现有的事件跟踪工具(例如 GA、Segment 等)无缝集成。它还可以在任何 JavaScript 环境中使用,例如浏览器和各种 JavaScript 运行时。

JSR 是一个现代的开源 JavaScript 注册表,它简化了 JavaScript 和 TypeScript 模块的发布和导入。JSR 支持发布 TypeScript 源代码、自动生成文档和类型定义文件,提供来源证明以增强安全性,并且可以与类似 npm 的包管理器一起使用。自发布以来,JSR 持续增长,每周有超过 400 个新包发布。

通过 JSR 使用 GrowthBook 的 SDK 提供了无与伦比的开发体验,它提供一流的 TypeScript 支持、在代码编辑器中自动生成文档等功能。

安装 Growthbook

您可以使用 deno add 命令开始使用 Growthbook

deno add jsr:@growthbook/growthbook

或使用 npm

npx jsr add @growthbook/growthbook

上述命令将生成一个 deno.json 文件,列出您的所有项目依赖项。

// deno.json

{
  "imports": {
    "@growthbook/growthbook": "jsr:@growthbook/growthbook@0.1.2"
  }
}

让我们在 Express 服务器中使用 GrowthBook。

在我们的 main.ts 文件中,我们可以这样写

import express from "npm:express";
import { GrowthBook } from "@growthbook/growthbook";

const app = express();

// Example using Express
app.use(function (req, res, next) {
  // Create a GrowthBook instance and store in the request
  req.growthbook = new GrowthBook({
    apiHost: "https://cdn.growthbook.io",
    clientKey: "sdk-qtIKLlwNVKxdMIA5",
  });

  // TODO: Add user targeting attributes from cookies, headers, etc.
  req.growthbook.setAttributes({
    id: req.user?.id,
  });

  // Clean up at the end of the request
  res.on("close", () => req.growthbook.destroy());

  // Wait for features to load (will be cached in-memory for future requests)
  req.growthbook.init({ timeout: 1000 }).then(() => next());
});

app.get("/", (req, res) => {
  const gb = req.growthbook;

  // Boolean on/off flag
  if (gb.isOn("my-boolean-feature")) {
    res.send("Hello, boolean-feature!");
  }

  // String/Number/JSON flag
  const value = gb.getFeatureValue("my-string-feature", "fallback");

  res.send(`Hello, ${value}!`);
});

console.log("Listening on port 8000");
app.listen(8000);

⚠️️ 请注意,您可以通过 npm: 描述符 导入 express。当首次执行此操作时,express 将安装到全局缓存中。无需 node_modules 文件夹。

最后,您可以运行以下命令来执行

​​deno -A main.ts

根据您在 GrowthBook 应用程序中设置功能开关的方式(您可以免费注册),响应会有所不同

Running the app shows fallback response

查看 GrowthBook 文档,了解更多关于创建和运行实验、分析结果以及功能开关的各种部署流程。

下一步是什么?

随着 GrowthBook 的 JS SDK 现已登陆 JSR,将功能开关和 A/B 测试的强大功能引入任何 JavaScript 环境变得更加容易。

有兴趣现代化您的 JS/TS 模块并让用户更轻松地使用它吗?请查看这些文档或此视频演示,了解如何发布到 JSR。

🚨️ 阅读更多关于 JSR 的信息 🚨️