GrowingIO 智能运营产品微前端实践

vue友盟统计埋点插件 vuejs 友盟统计埋点插件 立即下载

作者:俞展弘 GrowingIO 前端开发工程师,主要负责智能运营团队前端开发、gio-design 开发

引言

GrowingIO 智能运营产品,是 GrowingIO 为客户运营团队提供的一站式、精细化运营管理与数据分析平台。

近期,GrowingIO 智能运营产品团队需要将站内触点等运营功能从 SaaS 平台移植到增长平台上,以支持私有化部署(On-Premise,简称 OP)方案在客户环境中的进行,以此为背景,GrowingIO 运营前端团队在微前端的实践上走了自己小小的一步。

1. 什么是微前端

虽然「微前端」三个字这两年已经在前端领域被大家所广泛熟知,但本着严谨写文章的精神还是需要在这里简单说明一下。

微前端的概念脱胎于服务端的「微服务」概念。最近几年前端世界的趋势就是构建一个功能丰富、强大的浏览器应用程序(SPA)。

一般一个前端应用通常会由多个独立的团队开发,随着时间的推移,前端应用的代码规模会不断增长,并且表现得越来越难以维护,成为一个谁看都头疼的巨石应用。

微前端出现的意义在于将这样一个单一的巨石应用,转换为多个较为小型的前端应用再聚合为一。各个小型应用可以独立开发、部署,乃至于独立选择自身的技术栈与依赖,而不影响其他兄弟应用与父应用。

在此基础上简单总结一下微前端需要做到(或者说带来的好处):

  • 应用自治:只需要遵循统一的接口规范或者框架,各个应用可以集成到一起,同时相互之间是不存在依赖关系的。
  • 单一职责:每个前端应用可以只关注于自己所需要完成的功能。
  • 技术栈无关:可以在使用 Angular 的同时,又可以使用 React 和 Vue。

2. 为什么要拆分微前端

如同上一段所说,目前的 GrowingIO SaaS 主站前端应用也是一个伴随迭代变得越来越大的巨石应用,但对于运营的前端团队来说,除了公共方法平时不会触及到大多数不相关模块。

其次,在当前以及可预见的未来,在 SaaS 环境与 OP 环境中运营的业务场景在大部分情况下是相同的。但是对于前端团队来说,OP 与 SaaS 差别包括但不限于:

  • 采用了全新脚手架
  • 用 GraphQL 取代了 RESTful API 获取基础资源 基础组件版本与路由
  • 基础设施与 SaaS 有破坏性更新
  • OP 不需要全部的 SaaS 功能

如果采取最原始暴力的开发方式(copy),就需要开发维护两套运营平台前端代码,一套在 SaaS 前端仓库,另一套在 OP 前端仓库。

这样会导致同个功能需要维护两套 codebase,时间久了 OP 仓库的代码会离 SaaS 主干代码越来越远,导致维护困难,同时有概率会一个功能写两次,这对于一个团队来说是不可接受的。

从实际需求出发,我们当然希望能做到一套代码适配两个环境,对于同一个功能开发、bug 修复都只需要一次工作量,这样能大大提高人效。所以在功能移植前需要将前端项目进行微前端改造。

3. 智能运营产品微前端一小步

实现智能运营产品(下称 Marketing)的微前端应用过程大致划分为两步走:拆 → 装,与此同时处理各种冲突覆盖和兼容问题。

3.1 拆分

拆分的过程中我们需要对 Marketing 应用与 SaaS 应用进行解耦,并针对 OP 环境进行差异屏蔽。

OP 和 SaaS 当中,存在一些接口不相同,所以需要做一层兼容处理,这部分放在了 @gio-bootstrap 以及 resourceService 当中实现,目的是使下层业务对环境无感知。

@gio-bootstrap

从 SaaS 独立出来 Marketing 仓库的最初承袭 SaaS,权限、项目、用户等基础数据在 .ejs 模板文件中进行获取,不容易阅读与维护不说,且复用困难,并阻碍了 webpack 的升级优化。

因此我们抽取了一个统一的 bootstrap 方法实现基座应用不同时的基础资源请求:

 type GioBootstrap = (platform: 'saas'|'op') => Promise<ResourceMap>

方法内根据与基座应用团队约定确认的资源列表以及接口进行每个资源的获取。针对单个资源,使用一个 requestGenerator 来进行资源请求函数的创建:

/**
 * 单个资源请求前会遍历 dependencies 列表资源是否都已存在,针对未请求的资源进行请求获取,已请求过的资源会从 sessionStorage 中进行获取;
 * 为了兼容现有代码,@gio-bootstrap 同时在 sesstionStorage 与 window 中存储了资源。待未来时机成熟可以从 window 这种全局污染比较严重的方式中切换出来,运营前端相对于基座应用进一步独立。
 */
interface IRequestGenerator {
  // 资源名称
  name: string;
  // 请求默认使用的url列表
  endpoints: (projectId: string, dependencies?: { [key: string]: any }) => string[];
  // 默认方式外的额外请求方式
  manual?: (projectId: string, dependencies?: { [key: string]: any }) => any;
  // 根据环境决定是否使用 manual进行请求,将屏蔽 endpoints
  useManual?: boolean;
  // 前置依赖资源列表
  dependencies?: TResource[];
  // 资源在前端的持久化,不配置将默认同时存储在 sessionStorage 与 window 中
  persistence?: (resource: any) => void;
  // 请求后的手动操作
  afterRequest?: (resource: any) => void;
  // 是否缓存
  noCache?: boolean;
}

resourceService 增强

resourceService 是 GrowingIO SaaS 前端应用中进行数据获取的一个统一封装,还包含了 Redux 注入的过程,因此我们在不影响原有功能的基础上,针对数据获取的每个暴露 API 新增了类似 @gio-bootstrap 中的 manual 字段,以进行对应资源在 OP 中的 GraphQL 或新 RESTful API 的请求。

3.2 集成

一般来说微前端实现架构是这样:

在这里插入图片描述

基座层作为主框架的核心成员,充当调度者的角色,由它来决定在不同的条件下激活不同的子应用。因此主框架的定位则仅仅是:导航路由+资源加载框架。

对应的 GrowingIO 实际情况是,Marketing 作为一个独立的子应用,需要嵌入 SaaS 和 OP 当中:

在这里插入图片描述

按照上图架构来做,则需要把 SaaS 和 OP 前端应用(暂不考虑整个拆成微前端架构)当做基座应用 。

因此在考虑集成方案时,我们做了一个集成方案对比:

在这里插入图片描述

在我们开始考虑集成的时候,两个基座应用的依赖情况举个例子就是:

SaaS     Dependencies     react: 16.8.3,    antd: ^2.13.3
OP       Dependencies     react: 16.8.6,    antd: ^3.20.5  
antd     PeerDependencies react: "~0.14.0 || >=15.0.0"

由于 Marketing 需要集成进两个平台,如果采用构建时集成,则会造成类似 SaaS 应用编译后过大,无法很好地兼容两个应用具有破坏性的依赖版本不一致等一系列令人头疼与困惑的问题。

同时,构建时集成所考虑的依赖 hoist(具体概念可以参考 lerna hoist 进行理解) 以及 npm 来解决依赖冲突的概念,与微前端所需要达成的「技术栈无关」、「应用自治」理念背道而驰。

「技术栈无关」应该是我们考虑实施微前端所首先要达成的目标。

综合上面的几点考虑,我们选择了采用运行时 HTML Entry 的集成方式,尽管牺牲了一部分打包加载优化,但换取了更加一致的开发体验以及无感独立发布的优点。

于是我们的微前端集成方案可以大概描述成这样:
在这里插入图片描述

由于我们目前项目及环境的特殊性,SaaS 和 OP 的入口文件会有所不同(分别打包各自所需模块代码),但是打包方式以及集成方式是一样的。

3.3 全局变量处理

微前端里微应用在很多情况下也会去修改全局变量,这时候就可能造成全局变量的命名冲突。可能的处理方式有如下:

在这里插入图片描述

综合考虑子应用的独立性、环境的纯洁性,以及方案的执行成本,约定 namespace 方案相对较好,减少犯错成本同时又不过于复杂。

由于历史遗留原因,SaaS 应用在 window 全局环境中存储或重新定义了很多东西,例如 window.fetch,window.can 方法以及大量的全局变量,并且在最初拆分运营前端仓库时候无法一次性全部处理掉。

因此这一部分问题只能是分步骤迭代,一步步将全局变量、方法收束为 namespace 下的变量或者子应用下的模块导出。

3.4 样式覆盖

GrowingIO SaaS 应用最早是在 antd2.X 的基础上重新封装,并且一直没有跟随社区升级;OP 应用使用了最新版本的 antd,这就使得 Marketing 在集成到 OP 上时会出现 antd 类名的冲突与覆盖。

同时 OP 和 SaaS 在我们自己的组件类名上也会有不同的设计语言,更进一步加剧了样式的冲突。

应对这样的样式冲突,其实只需要修改 webpack 打包时 style-loader的默认行为就可以。

目前 style-loader 默认将样式插入 head 当中,那么我们就在基座应用的子应用入口处自行制定插入 dom,将样式插入到自己的作用域下,随着应用的切换,顺带将样式卸载。

对于使用到的 styled-components 也利用库自己的 API 做同样处理。

不过就算这样处理了还是会偶尔发现样式不协调的地方,这方面的坑还需要再踩一踩才会有更新的体会。

4. 结语

从一个巨石应用中拆分微前端不是一个可以一蹴而就的事情,总有各种各样的问题会突然出现。

不同产品,不同项目,会遇到的问题不尽相同,但大体思路与解决办法基本一致,只要围绕最核心的「技术栈无关」,选择一个合适项目的方案,然后一步步做到依赖、样式、全局变量等的隔离与独立,最终达到能够独立打包发布又不影响基座应用与兄弟微应用。

关于 GrowingIO

GrowingIO是国内领先的数据驱动增长解决方案供应商。为产品、运营、市场、数据团队及管理者提供客户数据平台、获客分析、产品分析、智能运营等产品和咨询服务,帮助企业在数据化升级的路上,提升数据驱动能力,实现更好的增长。

点击「此处」获取 GrowingIO 15 天免费试用!

FastH3 + vLLM-Omni:MiniMax H3 视频生成本地部署与加速实战 随着多模态大模型在视频生成领域的普及,如何高效部署和加速推理成为工程实践的关键。vLLM作为高性能推理框架,通过PagedAttention和continuous batching显著优化了大模型吞吐;而FastH3则针对特定模型结构进行算子融合和CUDA优化。结合vLLM-Omni对多模态输入的支持,可以将MiniMax H3的视频生成耗时从分钟级压缩至秒级。本文以视频生成模型为例,详细拆解环境配置、推理优化与问题排查,为多模态模型本地部署提供参考。 阅读详情

相关推荐

IROS 2025机器人技术解析:从诡异设计到硬核应用

机器人技术正从传统的结构化环境应用,迈向复杂非结构化场景的深度交互。其核心原理在于通过仿生设计、多模态感知与智能控制算法,赋予机器人类似生物的适应性与交互能力。这一技术演进的价值在于突破传统机器人在极端环境、精密操作和自然交互中的瓶颈。例如,结合深度强化学习的全身动力学控制,使机器人能在废墟、管道等复杂地形中自主导航;而软体机器人技术则通过材料变形实现安全、柔顺的抓取操作。这些技术最终服务于极端环境巡检、精密装配和高端陪护等刚性应用场景,推动机器人从功能实现迈向与环境、人进行深度、智能交互的新阶段。

weixin_34006468的博客 449

growingio平台埋点(web端)

一、集成SDK 请将以下的页面代码放置到需要分析的页面中的 和 标签之间,即可完成最新 Web JS SDK 页面代码的添加。 请注意使用 您创建Web应用所在项目的项目ID 替换代码中的 your projectId 、your dataSourceId、your host。 <!-- GrowingIO Analytics code version 2.1 --> <!-- Copyright 2015-2021 GrowingIO, Inc. More info availa

weixin_57246557的博客 3184

最新Python爬虫实战(入门爬虫篇)——案例8:图书网畅销榜数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过 Python 爬虫技术,成功实现了对图书网畅销榜多页数据的批量爬取与 Excel 保存。代码采用模块化设计,包含分页参数构造、API 接口请求、JSON 数据解析、Excel 数据持久化等完整流程;通过配置模拟浏览器的请求头,有效规避基础反爬策略,保证请求的稳定性。整个爬虫逻辑遵循 “分页遍历 → 接口请求 → JSON 解析 → 提取图书信息 → 保存到 Excel” 的标准流程,与电商类接口爬取范式高度一致。

努力让自己发光,对的人才能迎着光而来 29万+

vue3前端埋点

手动埋点:适用于关键业务事件,需在事件处理函数或生命周期钩子中显式添加埋点代码。自动埋点:适用于快速获取大部分用户行为事件,通过第三方工具自动捕捉事件。无埋点(可视化埋点):适用于非技术人员操作,通过可视化界面配置和管理埋点。混合埋点:结合手动埋点和自动埋点,确保关键数据的精准性和全面性。选择具体方法时,应根据团队的技术能力、项目需求和数据分析目标进行权衡。希望这些示例和建议对你在 Vue 3 项目中实施前端埋点有所帮助。如果有更多具体需求或问题,欢迎进一步讨论。

weixin_65644264的博客 1852

Three.js 完整实战项目:构建一个 3D 商品展示空间

Three.js 作为强大的 WebGL 框架,广泛应用于交互式 3D 场景开发,尤其适合创建沉浸式商品展示空间。本文将通过一个完整的实战项目,展示如何构建一个 3D 商品展示空间,涵盖项目架构、资源组织、多模型切换、交互热点绑定、移动端适配和帧率优化。项目以展示虚拟商品(如家具或电子产品)为核心,结合用户交互,基于 Vite、TypeScript 和 Tailwind CSS,支持 ES Modules,确保响应式布局,遵循 WCAG 2.1 可访问性标准。本文适合希望通过综合项目掌握 Three.js

zimin的专栏 1463

CVPR 2023 中的半监督学习: FixMatch 的升级版 UniMatch

我们首先回顾下发表在 NeurIPS 2020 上的 FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence,FixMatch 是一种更轻量的半监督分类方法。如下图所示,FixMatch 首先使用模型(带标签数据训练后的)对弱增强的未标记图像进行预测,生成伪标签。对于给定的图像,只有在模型产生高置信度的预测时,伪标签才会被保留。然后,在输入同一图像的强增强版本时,训练模型预测伪标签。

NJU phd 在读。 2633

前端工程师最常用的实用网站(JavaScript&&Vue)

目录 JavaScript 实用工具库 lodash underscore outils ramda 常用动画库、图表汇总(常用) animejs animista animate.css three.js d3js echarts Chart.js highcharts npm库集合 查npm的下载情况 npm包下载量对比 常用的npm包 前端监控、埋点 growingio fundebug sentry sonar kibana pinpoint .

王继伟2021 1080

SAP 中配置权限职责菜单并分配给用户的核心流程是:用PFCG 创建 / 维护角色(含菜单、事务码、权限)→ 生成权限参数文件 → 通过 SU01/SU10 将角色分配给用户

SAP权限配置核心流程:1)通过PFCG创建角色,配置菜单事务码及权限对象;2)生成权限参数文件;3)用SU01/SU10分配角色给用户。关键步骤包括:在PFCG中维护菜单结构、设置权限字段值、生成Profile,通过用户比较验证权限。批量分配可用SU10,特殊需求可创建复合角色或自定义权限对象。常见问题需检查权限缺失(SU53)、菜单分配及组织级别设置。流程简化为:创建角色→配置权限→分配用户→验证生效。

金牌架构师 1273

vue声明式埋点实践

本文介绍了针对vue的声明式埋点,如何做vue的声明式埋点,使用方便,与脚本逻辑解耦,目前应用在斑马和捕手等众多平台 埋点方案的尝试 目前现有的埋点方案有命令式埋点、声明式埋点、可视化埋点、无痕埋点 命令式埋点是用比较常见的方式,在用户产生行为的地方使用js方法进行数据上报,优点是埋点方式比较简单,缺点是与业务耦合度较高 声明式埋点是在具体DOM元素上进行数据绑定,只需组件开发人员在sdk上制定...

weixin_34283445的博客 2358

万字长文:YOLOv5+RK3588 NPU多线程加速全攻略——从理论到部署的终极优化

RK3588 NPU多线程加速优化教程摘要 本教程深入讲解了如何利用线程池技术优化RK3588 NPU上的YOLO目标检测模型推理性能。RK3588内置3个NPU核心,理论算力达6TOPS,为多线程优化提供了硬件基础。教程详细解析了线程池的核心组件(任务队列、工作线程、同步机制)和实现架构,包括类设计、初始化流程、工作线程逻辑(任务获取、NPU推理、结果存储三个阶段)以及任务提交/获取机制。通过预分配模型实例、线程绑定、流量控制等优化手段,实现了从单线程28FPS到多线程120FPS的显著性能提升,为边缘A

LXY_LOVE36的博客 1101

安川机器人外部轴添加

本文详细介绍了如何在安川机器人本体上添加第7轴以及如何设置动作,本文以添加点焊枪为例进行讲解。

haier123888的博客 7892

OP向左,SaaS向右,如何选择?

SaaS与OP之争,如何选择,路在何方

ly_zixuan的博客 6313

Spatial-ORMLLM: Improve Spatial Relation Understanding in the Operating Room with Multimodal Larg...

手术室(OR)中的精准空间建模是众多临床任务的基础,可为术中感知、风险规避及手术决策提供支持。现有方法虽利用大规模多模态数据集进行 latent 空间对齐,以隐式学习空间关系,但却忽视了多模态大型语言模型(MLLM)的3D能力。然而,这种方法存在两个问题:1)手术室通常缺乏多台视频和音频传感器,多模态3D数据难以获取;2)仅依赖易获取的2D数据训练,无法捕捉复杂场景中的细粒度细节。为解决这一问题,我们提出——首个针对手术室3D空间推理的大型视觉语言模型。

UnknownBody_2的博客 592

growingio基本使用(总结)

  growingio基本使用 背景:方便分析图片报告的哪些报告受到用户喜欢,来调整报告的侧重点  设计师引流网站:http://huaban.com/  (国内,花瓣)                                  http://www.pinterest.com/ (国外) 一,准备工作: 注册一个GrowingIO账号 拥有自己的网站或APP 1,选择...

gaokcl的博客 3万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

vuejs从零开始(基本使用)

 参考简书:https://www.jianshu.com/p/94ac8b8b8f6b  说明:工作需要,下面的基本使用,一般用于工作可以了 &lt;!doctype html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;meta name="viewport&

gaokcl的博客 1274

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Vue.js UI框架比较

Vue 是什么? Vue.js 是 Evan You 开发的渐进式 JavaScript 框架。开发者能够通过撰写 *.vue 文件,基于 , ,  快速构建组件化的 web 应用。 Evan You: 尤雨溪是Vue.js的作者,HTML5版Clear的打造人。他认为,未来App的趋势是轻量化和细化,能解决问题的应用就是好应用。而在移动互联网时代大的背景下,个人开发者的机遇在门槛

AI时代光年 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

互联网平台埋点方案对比 Mixpanel vs Heap vs GrowingIO vs MTA

最近在做埋点方案的选择,目前市场上埋点的互联网产品很多,主要介绍以下几个产品: I. mixpanel: https://mixpanel.com/ github: https://github.com/mixpanel/mixpanel_api mixpanel在github上的埋点filter的star只有9分,sort by most stars之后,

AI时代光年 1万+

GrowingIO接入SDK简介

安装使用文档逐步操作 准备工作: 1、注册一个GrowingIO账号 2、申请一个域名(注意:不能是ip或host) 登陆gio平台: 1、安装SDK 2、根据项目选择对应的sdk;js,安卓,ios 3、跟踪代码 将sdk加入项目中 注意:项目必须部署到生产环境中,并刷新页面进行数据检测;并且gio初始化的id必须填写正确 4、检测数据 ...

weixin_30443895的博客 1437

GrowingIO

https://blog.growingio.com/posts/esoterica_2?utm_source=zhihu&utm_medium=zhuanlan&utm_campaign=p21864815&utm_content=wu-mai-dian&utm_term=data-analyse

z69183787的专栏 2483

Vue遇上Analytics

在"大数据"背景下,Analytics 这类分析系统在项目中扮演着很重要的角色.笔者这次主要 以 vue 配上 GoogleAnalytics 做案例演示如何 在项目中做分析记录. 分析系统: 笔者在项目中添加了GoogleAnalytics 分析大致快满一年了.其实一直并没有太关注这方面.但是年末项目要计划2019年"重构计划".专门花了一些时间看了一下分析数据. 不愧是互联网大佬. 分...

weixin_34015860的博客 1243

GrowingIO Design 组件库搭建之开发工具

前言 在 20 世纪 60 年代,计算机技术开始超过软件编程的速度。计算机变得更快、更便宜,但是软件开发仍然缓慢,难以维护,并且容易出错。这种差距,以及如何应对,被称为“软件危机”。1968 年,在北约软件工程会议上,Douglas McIlroy 提出了基于组件的开发作为解决这一困境的可能方法。基于组件的开发提供了一种通过使代码可重用来加快编程潜力的方法,从而使其更高效且更易于扩展。这降低了工作量,提高了软件开发的速度,使软件能够更好地利用现代计算机的力量。 现在,50 年后,我们正经历着类似的挑战,但.

GrowingIO 基于 BitMap 的海量数据分析 601

ssr服务端渲染项目集成GrowingIO

GrowingIO简称gio,下文中以gio代替GrowingIO gio的集成需要在index.html中引入sdk(即一段动态加载gio.js的代码),sdk中用到了window、document等BOM属性,此时就会遇到node渲染失败问题 第一时间会想到《braft-editor服务端渲染下报错document is not defined》文章中的解决方案–dynamic按需加载 确实按...

jjh0901的博客 641

web(vue) 简单使用 mixpanel 网页埋点

1. 创建项目 2. 使用mixpanel 提供的js API 3. 要使用Mixpanel JavaScript库开始跟踪,只需将以下代码粘贴到要在和标记内跟踪的页面中。确保更改YOUR_TOKEN为项目令牌。 4. 然后在你要追踪的事件底下 mixpanel.track('xxx') 就可以进行跟踪了 更多的功能 请查看官方的API developer.mixpanel.com/doc...

weixin_33749242的博客 1657

弃用growingio后产生的问题解决

当你弃用growingio后会出现这样的错误 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/growingio/android/sdk/agent/VdsAgent; 不用害怕,这是因为growingio污染了你的V4包,找到你项目对应的V4包将其替换掉即可。

iostyle 的博客 3368

使用growingio项目编译时间增加36%

公司B端项目执行: ./gradlew clean assembleDebug 加入growingio后:平均224秒 BUILD SUCCESSFUL in 3m 59s 290 actionable tasks: 272 executed, 18 up-to-date BUILD SUCCESSFUL in 4m 9s 290 actionable tasks: 290 executed B...

Yvan_Gao的博客 774

关于网页埋统计代码的一些总结

背景: 一个网站上线,开发者除了保证网站功能正常,体验优好之外,还有一项重要的工作是数据收集,通过收集用户的行为数据可以帮助了解网站的功能是否满足用户的需求,导流方式是否有效,新功能上线后是否效果是否达到设计初衷,根据数据指引有效优化产品体验以及发现新的产品方向是产品经理的必备技能,而如何采集准确并且足够的网站数据则应该是开发者的责任.在大数据处理能力越来越强下,以及机器学习等依赖数据哺育的

z69183787的专栏 4729
上一篇: GrowingIO AWS 成本优化之路
下一篇: GrowingIO 响应式编程探索和实践
GrowingIO_
博客等级 码龄8年 56粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值