@jctrans-materials/comps-vue3 1.0.37-beta.5 → 1.0.37-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -82,3 +82,92 @@ app.mount("#app");
82
82
  `JcSearch` 的详细参数说明可参考:
83
83
 
84
84
  - `packages/vue3/src/components/JcSearch/README.md`
85
+
86
+ ## GIO 埋点接入(Vue3)
87
+
88
+ ### 1) 按需启用(不传配置即不启用)
89
+
90
+ ```ts
91
+ import { createApp } from "vue";
92
+ import App from "./App.vue";
93
+ import JCtransComps from "@jctrans-materials/comps-vue3";
94
+
95
+ const app = createApp(App);
96
+
97
+ app.use(JCtransComps, {
98
+ tracking: {
99
+ enabled: true,
100
+ autoInit: true,
101
+ directiveName: "gio-track",
102
+ accountId: import.meta.env.VITE_GIO_ACCOUNT_ID,
103
+ dataSourceId: import.meta.env.VITE_GIO_DATA_SOURCE_ID,
104
+ appId: import.meta.env.VITE_GIO_APP_ID,
105
+ initOptions: {
106
+ debug: import.meta.env.DEV,
107
+ trackPage: false,
108
+ autoTrackPage: true,
109
+ serverUrl: import.meta.env.VITE_GIO_SERVER_URL,
110
+ },
111
+ },
112
+ });
113
+ ```
114
+
115
+ 如果不传 `tracking`,则不会初始化 GIO。
116
+
117
+ ### 2) 指令与 API 用法
118
+
119
+ ```vue
120
+ <button v-gio-track="'order_submit'">提交订单</button>
121
+
122
+ <button
123
+ v-gio-track="{
124
+ event: 'order_submit',
125
+ attrs: { source: 'cart' },
126
+ onTracked: ({ eventName }) => console.log(eventName),
127
+ }"
128
+ >
129
+ 提交并回调
130
+ </button>
131
+ ```
132
+
133
+ ```ts
134
+ const vm = getCurrentInstance()?.proxy;
135
+ vm?.$trackEvent("manual_track", { source: "manual" });
136
+ vm?.$gio.track("direct_track", { source: "direct" }, () => {
137
+ console.log("done");
138
+ });
139
+ ```
140
+
141
+ ### 3) 配置优先级
142
+
143
+ 1. `window.__JCTRANS_GIO_CONFIG__`(或 `globalVarName` 指定对象)
144
+ 2. `tracking` 传入配置
145
+ 3. `import.meta.env.VITE_GIO_*`
146
+
147
+ ### 4) GIO 单测(Vue3)
148
+
149
+ 测试文件:`src/gio.test.ts`
150
+
151
+ 覆盖点:
152
+
153
+ - 初始化分支:
154
+ - 有 `appId`(4 参数 `init`)
155
+ - 无 `appId`(3 参数 `init`)
156
+ - 缺少必填配置时不初始化
157
+ - 指令行为:`mounted` / `updated` / `beforeUnmount` 的绑定、重绑、清理
158
+ - 回调行为:`onTracked` 在 `track` 回调后触发
159
+ - 暴露能力:`$trackEvent` 与 `$gio` 常用 API
160
+
161
+ 结合 GrowingIO WebJS 常用 API 文档(含 `trackTimerStart`)对齐了以下接口可用性:
162
+
163
+ - `setUserId`
164
+ - `clearUserId`
165
+ - `setVisitor`
166
+ - `trackTimerStart`
167
+ - `trackTimerEnd`
168
+
169
+ 运行方式:
170
+
171
+ ```bash
172
+ pnpm -C packages/vue3 test:run
173
+ ```
package/dist/gio.d.ts ADDED
@@ -0,0 +1,61 @@
1
+ import { App } from 'vue';
2
+
3
+ export type TrackAttrs = Record<string, string | number | Array<string | number>>;
4
+ export type TrackDirectiveValue = string | {
5
+ event?: string;
6
+ name?: string;
7
+ attrs?: TrackAttrs;
8
+ attributes?: TrackAttrs;
9
+ trigger?: string;
10
+ once?: boolean;
11
+ stop?: boolean;
12
+ prevent?: boolean;
13
+ callback?: (payload: {
14
+ event: Event;
15
+ eventName: string;
16
+ attrs: TrackAttrs;
17
+ trigger: string;
18
+ }) => void;
19
+ onTracked?: (payload: {
20
+ event: Event;
21
+ eventName: string;
22
+ attrs: TrackAttrs;
23
+ trigger: string;
24
+ }) => void;
25
+ };
26
+ export type TrackConfig = {
27
+ enabled?: boolean;
28
+ autoInit?: boolean;
29
+ directiveName?: string;
30
+ globalVarName?: string;
31
+ accountId?: string;
32
+ dataSourceId?: string;
33
+ appId?: string;
34
+ serverUrl?: string;
35
+ initOptions?: {
36
+ debug?: boolean;
37
+ trackPage?: boolean;
38
+ forceLogin?: boolean;
39
+ idMapping?: boolean;
40
+ hashtag?: boolean;
41
+ autoTrackPage?: boolean;
42
+ serverUrl?: string;
43
+ };
44
+ };
45
+ export type GioPublicApi = {
46
+ isInitialized: () => boolean;
47
+ isBrowser: () => boolean;
48
+ init: (...args: any[]) => void;
49
+ track: (eventName: string, attrs?: TrackAttrs, callback?: () => void) => void;
50
+ setUserId: (userId: string) => void;
51
+ clearUserId: () => void;
52
+ setVisitor: (visitor: Record<string, any>) => void;
53
+ setGeneralProps: (props: Record<string, any>) => void;
54
+ setPageAttributes: (props: Record<string, any>) => void;
55
+ sendPage: () => void;
56
+ trackTimerStart: (eventName: string) => void;
57
+ trackTimerEnd: (eventName: string, attrs?: TrackAttrs) => void;
58
+ };
59
+ export declare function createGioTrackingPlugin(rawConfig?: TrackConfig): {
60
+ install(app: App): void;
61
+ };
@@ -0,0 +1 @@
1
+ export {};