perf: 优化以前代码

This commit is contained in:
xion 2025-03-22 14:36:33 +08:00
parent 2ee8ec7a29
commit 063837350b
7 changed files with 50 additions and 64 deletions

View File

View File

@ -12,6 +12,8 @@
"prepub": "envision switch root", "prepub": "envision switch root",
"pub": "envision deploy ./dist -k center -v 0.0.9 -u -o root", "pub": "envision deploy ./dist -k center -v 0.0.9 -u -o root",
"turbo:dev": "turbo dev:lib", "turbo:dev": "turbo dev:lib",
"dev:lib": "turbo dev:lib",
"dev:query": "turbo dev:lib --filter=@kevisual/query",
"turbo:build": "turbo build --filter=submodules/**" "turbo:build": "turbo build --filter=submodules/**"
}, },
"dependencies": { "dependencies": {

24
pnpm-lock.yaml generated
View File

@ -452,8 +452,11 @@ importers:
specifier: ^0.0.1 specifier: ^0.0.1
version: 0.0.1(rollup@4.36.0)(tslib@2.8.1)(typescript@5.8.2) version: 0.0.1(rollup@4.36.0)(tslib@2.8.1)(typescript@5.8.2)
'@kevisual/query': '@kevisual/query':
specifier: ^0.0.12 specifier: ^0.0.14
version: 0.0.12(ws@8.18.1) version: 0.0.14(ws@8.18.1)
dotenv:
specifier: ^16.4.7
version: 16.4.7
devDependencies: devDependencies:
'@types/node': '@types/node':
specifier: ^22.13.11 specifier: ^22.13.11
@ -969,9 +972,6 @@ packages:
crypto-js: ^4.2.0 crypto-js: ^4.2.0
eventemitter3: ^5.0.1 eventemitter3: ^5.0.1
'@kevisual/query@0.0.12':
resolution: {integrity: sha512-/1lZJhNCdcNG4a2Nncl55XC/nha5+GZiJPQdP77lufv2dnZfcssA7NHSZ2Ubh0Pm0HWV22IiGfQMiaYl2pkK1Q==}
'@kevisual/query@0.0.13': '@kevisual/query@0.0.13':
resolution: {integrity: sha512-gSEIDiCvwSaLLAFZv4vam4wSrMsaCuQ3VGjE3kwRwZ8urlVH1TOA+NUO908A22p9m1Iij7Y1Q/JlfSJi2QzuKQ==} resolution: {integrity: sha512-gSEIDiCvwSaLLAFZv4vam4wSrMsaCuQ3VGjE3kwRwZ8urlVH1TOA+NUO908A22p9m1Iij7Y1Q/JlfSJi2QzuKQ==}
@ -1937,6 +1937,10 @@ packages:
dom-helpers@5.2.1: dom-helpers@5.2.1:
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
dotenv@16.4.7:
resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==}
engines: {node: '>=12'}
dunder-proto@1.0.1: dunder-proto@1.0.1:
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
@ -4230,14 +4234,6 @@ snapshots:
- rollup - rollup
- typescript - typescript
'@kevisual/query@0.0.12(ws@8.18.1)':
dependencies:
openai: 4.89.0(ws@8.18.1)
transitivePeerDependencies:
- encoding
- ws
- zod
'@kevisual/query@0.0.13(ws@8.18.1)': '@kevisual/query@0.0.13(ws@8.18.1)':
dependencies: dependencies:
openai: 4.89.0(ws@8.18.1) openai: 4.89.0(ws@8.18.1)
@ -5261,6 +5257,8 @@ snapshots:
'@babel/runtime': 7.26.10 '@babel/runtime': 7.26.10
csstype: 3.1.3 csstype: 3.1.3
dotenv@16.4.7: {}
dunder-proto@1.0.1: dunder-proto@1.0.1:
dependencies: dependencies:
call-bind-apply-helpers: 1.0.2 call-bind-apply-helpers: 1.0.2

View File

@ -1,14 +1,14 @@
import { QueryClient } from '@kevisual/query'; import { QueryClient } from '@kevisual/query';
import { create } from 'zustand'; import { QueryLoginBrowser } from '@kevisual/query-login';
import { QueryLogin } from '@kevisual/query-login';
import { toastLogin } from '@kevisual/resources/pages/message/ToastLogin.tsx'; import { toastLogin } from '@kevisual/resources/pages/message/ToastLogin.tsx';
export const query = new QueryClient(); export const query = new QueryClient({
io: true,
});
/** /**
* *
*/ */
export const queryLogin = new QueryLogin({ export const queryLogin = new QueryLoginBrowser({
query, query: query as any,
}); });
// @ts-ignore // @ts-ignore
if (window.context) { if (window.context) {
@ -20,51 +20,28 @@ if (window.context) {
queryLogin, queryLogin,
}; };
} }
// 在请求之前如果stop了
query.beforeRequest = async (config) => {
if (config.headers) {
const token = localStorage.getItem('token');
if (token) {
config.headers['Authorization'] = 'Bearer ' + token;
}
}
return config;
};
query.afterResponse = async (res, ctx) => { query.afterResponse = async (res, ctx) => {
if (res?.code === 401) { const newRes = await queryLogin.run401Action(res, ctx, {
if (query?.stop) { afterAlso401: () => {
return { code: 500, success: false, message: '登录已过期' };
}
query.stop = true;
const queryLoginRes = await queryLogin.afterCheck401ToRefreshToken(res, ctx);
query.stop = false;
if (queryLoginRes.code === 401) {
toastLogin(); toastLogin();
} },
return queryLoginRes; });
}
return res as any; return newRes as any;
}; };
export const request = query.post; export const request = query.post;
export const ws = query.qws?.ws || new WebSocket(query.qws?.url); export const ws = query.qws?.ws;
type Store = {
connected: boolean;
setConnected: (connected: boolean) => void;
};
export const useStore = create<Store>((set) => ({
connected: false,
setConnected: (connected) => set({ connected }),
}));
// 当连接成功时 // 当连接成功时
ws.onopen = () => { // query.qws.ws.onopen = () => {
console.log('Connected to WebSocket server'); // console.log('Connected to WebSocket server');
useStore.getState().setConnected(true); // };
};
// 处理 WebSocket 关闭 // // 处理 WebSocket 关闭
ws.onclose = () => { // query.qws.ws.onclose = () => {
console.log('Disconnected from WebSocket server'); // console.log('Disconnected from WebSocket server');
}; // };
query.qws.listenConnect(() => {
console.log('Connected to WebSocket server');
});

View File

@ -1,16 +1,17 @@
import { Container, RenderData, ContainerOne } from '@kevisual/container'; import { Container } from '@kevisual/container';
import { useEffect, useRef, useState } from 'react'; import { useEffect, useRef, useState } from 'react';
import { replace, useParams } from 'react-router'; import { useParams } from 'react-router';
import { query, ws, useStore } from '@/modules'; import { query } from '@/modules';
import { message } from '@/modules/message'; import { message } from '@/modules/message';
export const useListener = (id?: string, opts?: any) => { export const useListener = (id?: string, opts?: any) => {
const { refresh } = opts || {}; const { refresh } = opts || {};
const connected = useStore((state) => state.connected); const [connected, setConnected] = useState(false);
// 监听服务器的消息 // 监听服务器的消息
useEffect(() => { useEffect(() => {
if (!id) return; if (!id) return;
if (!connected) return; if (!connected) return;
const ws = query.qws.ws;
ws.send( ws.send(
JSON.stringify({ JSON.stringify({
type: 'subscribe', type: 'subscribe',
@ -31,6 +32,14 @@ export const useListener = (id?: string, opts?: any) => {
ws.removeEventListener('message', listener); ws.removeEventListener('message', listener);
}; };
}, [id, connected]); }, [id, connected]);
const init = async () => {
query.qws.listenConnect(() => {
setConnected(true);
});
};
useEffect(() => {
init();
}, []);
const listener = (event) => { const listener = (event) => {
const parseIfJson = (data: string) => { const parseIfJson = (data: string) => {
try { try {

@ -1 +1 @@
Subproject commit a457dbabe931327b3b644d88e07c41ce82af4e76 Subproject commit 24f091ac792342ea295496cf8ff49f6c79ab47a6