Skip to content

Commit fb09008

Browse files
committed
feat(api): api路由重定向
1 parent 46cf354 commit fb09008

File tree

13 files changed

+95
-48
lines changed

13 files changed

+95
-48
lines changed

.husky/pre-push

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pnpm run build

app/components/Home/ChanTitle.tsx

Lines changed: 38 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use client';
22

33
import { useSpring, animated } from '@react-spring/web';
4+
import { usePathname } from 'next/navigation';
45
import React, { useEffect, useState } from 'react';
56
import Image from 'next/image';
67
import { Press_Start_2P } from 'next/font/google';
@@ -11,12 +12,15 @@ const ChanTitle: React.FC = () => {
1112
const [aniState, setAniState] = useState(false);
1213
const [hoverState, setHoverState] = useState(false); // 用来控制鼠标悬浮时显示图片3
1314

15+
const [isShow, setIsShow] = useState(false);
16+
const pathName = usePathname();
17+
1418
const handleMouseEnter = useDebounce(() => {
15-
setHoverState(true)
16-
},200)
19+
setHoverState(true);
20+
}, 200);
1721
const handleMouseLeave = useDebounce(() => {
18-
setHoverState(false)
19-
},200)
22+
setHoverState(false);
23+
}, 200);
2024

2125
const propsImg = useSpring({
2226
from: { opacity: 0, transform: 'translateY(30px)' },
@@ -33,34 +37,41 @@ const ChanTitle: React.FC = () => {
3337
});
3438

3539
useEffect(() => {
40+
if (pathName === '/') {
41+
setIsShow(true);
42+
} else {
43+
setIsShow(false);
44+
}
3645
const timerId = setTimeout(() => {
3746
setAniState(true);
3847
}, 300);
3948
return () => clearTimeout(timerId);
40-
}, []);
49+
}, [pathName]);
50+
51+
if (!isShow) return null;
4152
return (
42-
<div className="absolute flex top-8 left-1/2 text-4xl font-extrabold transform -translate-x-1/2">
43-
<span className="relative bottom-4">
44-
{aniState && (
45-
<animated.div style={propsImg}>
46-
<Image
47-
onMouseEnter={handleMouseEnter}
48-
onMouseLeave={handleMouseLeave}
49-
src={
50-
hoverState
51-
? '/title-png/title1.png'
52-
: '/title-png/title2.png'
53-
}
54-
alt=""
55-
width={80}
56-
height={80}
57-
></Image>
58-
</animated.div>
59-
)}
60-
</span>
61-
<animated.span className={banger.className} style={propsText}>
62-
@CHAN
63-
</animated.span>
53+
<div id="chan-title" className="relative w-full h-28 border-solid border-2">
54+
<div className="absolute flex top-8 left-1/2 text-4xl font-extrabold transform -translate-x-1/2">
55+
<span className="relative bottom-4 hidden xs:block">
56+
{aniState && (
57+
<animated.div style={propsImg}>
58+
<Image
59+
onMouseEnter={handleMouseEnter}
60+
onMouseLeave={handleMouseLeave}
61+
src={
62+
hoverState ? '/title-png/title1.png' : '/title-png/title2.png'
63+
}
64+
alt=""
65+
width={80}
66+
height={80}
67+
></Image>
68+
</animated.div>
69+
)}
70+
</span>
71+
<animated.span className={banger.className} style={propsText}>
72+
@CHAN
73+
</animated.span>
74+
</div>
6475
</div>
6576
);
6677
};
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
.nav-bar{
1+
.nav-bar {
22
display: flex;
33
border: 1px solid red;
4-
& a{
4+
5+
& a {
56
padding: 1rem;
67
}
78
}

app/components/Home/Nav/HeaderBar/index.tsx

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
'use client';
1+
'use client'
2+
23
import ChanLink from '@/components/Partial/ChanLink';
34
import styles from './headerBar.module.scss';
4-
import Image from 'next/image';
5+
import Info from './info';
56

67
const links = [
78
{ name: '主页', href: '/' },
@@ -16,13 +17,13 @@ const HeaderBar: React.FC = () => {
1617
id="chan-header"
1718
className="flex justify-center items-center sticky top-0 border-2 border-balck border-solid"
1819
>
19-
<Image
20+
{/* <Image
2021
className="absolute -z-10 -left-4"
2122
src={'/title-png/site-logo.webp'}
2223
alt="SteinsGate"
2324
width={250}
2425
height={65}
25-
></Image>
26+
></Image> */}
2627
<nav className={styles['nav-bar']}>
2728
{links.map((link) => {
2829
return (
@@ -32,14 +33,7 @@ const HeaderBar: React.FC = () => {
3233
);
3334
})}
3435
</nav>
35-
<div
36-
id="header-func"
37-
className="absolute right-0 flex justify-center border-2 gap-4 border-solid border-green "
38-
>
39-
<div className='avator'>avator</div>
40-
<div className='config'>config</div>
41-
<input type="search" placeholder="Search..."></input>
42-
</div>
36+
<Info></Info>
4337
</header>
4438
);
4539
};
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import React from 'react';
2+
3+
const Info: React.FC = () => {
4+
return (
5+
<div
6+
id="header-info"
7+
className="absolute right-0 flex justify-center border-2 gap-4 border-solid border-green "
8+
>
9+
<div className="avator">avator</div>
10+
<div className="config">config</div>
11+
<input type="search" placeholder="Search..."></input>
12+
</div>
13+
);
14+
};
15+
16+
export default Info;

app/layout.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,20 @@ export default function RootLayout({
1616
<meta name="viewport" content="width=device-width, initial-scale=1" />
1717
</head>
1818
<body>
19-
<ChanTitle></ChanTitle>
20-
<div id="chan-root" className='mt-28'>
19+
20+
<div id="chan-root" >
2121
<ThemeProvider attribute="class" defaultTheme="system">
22+
<ChanTitle></ChanTitle>
2223
<HeaderBar></HeaderBar>
2324
<div id='chan' className="flex justify-center gap-4 min-w-0">
2425
<SkipLink></SkipLink>
25-
{/* <aside></aside> */}
26+
<aside></aside>
2627
<div id="content">
2728
<main id="main-content">
2829
{children}
2930
<footer>footer</footer>
3031
</main>
31-
{/* <aside id="r-aside"></aside> */}
32+
<aside id="r-aside"></aside>
3233
</div>
3334
</div>
3435
</ThemeProvider>
File renamed without changes.

app/api/hello/route.ts renamed to app/server/api/hello/route.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { mongoDB } from '../../lib/mongoose';
2-
import redis from '../../lib/redis';
1+
import { mongoDB } from '../../../lib/mongoose';
2+
import redis from '../../../lib/redis';
33
export async function GET() {
44
const key = 'my_key';
55
try {

app/styles/main.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ main {
1919

2020
#content {
2121
display: flex;
22+
2223
// flex-grow: 1;
2324
gap: 1rem;
2425
width: 1080px;

next.config.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
import type { NextConfig } from 'next';
22

33
const nextConfig: NextConfig = {
4+
async rewrites() {
5+
return [
6+
{
7+
source: '/api/:path*',
8+
destination: '/server/api/:path*', // 将`/api`重定向到 `/server/api` 路径
9+
},
10+
];
11+
},
412
};
513

614
export default nextConfig;

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"@types/react": "^18.3.14",
3535
"@types/react-dom": "^18.3.2",
3636
"@zinkawaii/stylelint-config": "^0.2.2",
37+
"clsx": "^2.1.1",
3738
"eslint": "8.57.0",
3839
"eslint-config-next": "15.0.3",
3940
"husky": "^9.1.7",

pnpm-lock.yaml

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tailwind.config.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ export default {
88
'./app/**/*.{js,ts,jsx,tsx,mdx}',
99
],
1010
theme: {
11-
extend: {},
11+
extend: {
12+
screens:{
13+
'xs': '480px'
14+
}
15+
},
1216
},
1317
plugins: [],
1418
} satisfies Config;

0 commit comments

Comments
 (0)