From 12428f8bd1d3de25122ba85078aa719a26cc4bfc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B0=A2=E4=BA=9A=E6=98=95?= <1549469775@qq.com>
Date: Tue, 25 Feb 2025 10:09:46 +0800
Subject: [PATCH] fix bug
---
package.json | 2 +-
packages/core/src/index.ts | 1 +
packages/core/src/throttle/docs/demo.vue | 19 +++++++++++++++++++
packages/core/src/throttle/docs/index.md | 9 +++++++++
packages/core/src/throttle/index.ts | 17 +++++++++++++++++
vitest.shared.ts | 13 ++++++++++---
6 files changed, 57 insertions(+), 4 deletions(-)
create mode 100644 packages/core/src/throttle/docs/demo.vue
create mode 100644 packages/core/src/throttle/docs/index.md
create mode 100644 packages/core/src/throttle/index.ts
diff --git a/package.json b/package.json
index 2a0a4ca..785ff11 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,7 @@
"docs:serve": "vitepress serve packages",
"test": "tsx scripts/test.mts",
"test:ui": "vitest --ui",
- "coverage": "vitest run --coverage",
+ "coverage": "vitest run --coverage --config ./vitest.shared.ts",
"changeset:add": "changeset add",
"changeset:version": "changeset version",
"changeset:publish": "changeset publish",
diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts
index e178329..92b04df 100644
--- a/packages/core/src/index.ts
+++ b/packages/core/src/index.ts
@@ -1,3 +1,4 @@
export * from "./date";
export * from "./common";
export * from "./debounce";
+export * from "./throttle";
diff --git a/packages/core/src/throttle/docs/demo.vue b/packages/core/src/throttle/docs/demo.vue
new file mode 100644
index 0000000..38cd547
--- /dev/null
+++ b/packages/core/src/throttle/docs/demo.vue
@@ -0,0 +1,19 @@
+
+ 点击
+
+
输出结果
+
+ {{ item }}
+
+
+
+
+
diff --git a/packages/core/src/throttle/docs/index.md b/packages/core/src/throttle/docs/index.md
new file mode 100644
index 0000000..6e591f9
--- /dev/null
+++ b/packages/core/src/throttle/docs/index.md
@@ -0,0 +1,9 @@
+---
+title: 节流
+category: 工具
+---
+
+
+
+当频繁点击时,每一秒执行一次
+
diff --git a/packages/core/src/throttle/index.ts b/packages/core/src/throttle/index.ts
new file mode 100644
index 0000000..d14937d
--- /dev/null
+++ b/packages/core/src/throttle/index.ts
@@ -0,0 +1,17 @@
+export function throttle(fn: (...argu: T) => R, interval: number = 200) {
+ let last;
+ let timer: ReturnType | void;
+ return function (this: void, ...argu: T) {
+ const now = +new Date();
+ if (last && now - last < interval) {
+ timer && clearTimeout(timer);
+ timer = setTimeout(() => {
+ last = now;
+ fn.apply(this, argu);
+ }, interval);
+ } else {
+ last = now;
+ fn.apply(this, argu);
+ }
+ };
+}
diff --git a/vitest.shared.ts b/vitest.shared.ts
index b9fabbb..c65aa2d 100644
--- a/vitest.shared.ts
+++ b/vitest.shared.ts
@@ -1,4 +1,4 @@
-import { configDefaults, defineConfig } from "vitest/config";
+import { configDefaults, defineConfig, coverageConfigDefaults } from "vitest/config";
import { resolve } from "path";
const src = "src";
@@ -22,8 +22,15 @@ export default defineConfig({
coverage: {
provider: "v8",
enabled: true,
- all: false,
- include: ["packages/browser/src/**"]
+ include: [
+ "packages/vue3/src/**",
+ "packages/browser/src/**",
+ "packages/shared/src/**",
+ "packages/core/src/**",
+ "packages/node/src/**",
+ "packages/xyx-utils/src/**",
+ ],
+ exclude: [...coverageConfigDefaults.exclude, "packages/**/docs/**", "packages/**\/test?(s)/**"]
},
},
});