前言
路由是单页应用的骨架!AI可以帮我们设计和优化路由!
1. React Router 7 AI辅助开发
tsx
/* 提示词:
"用React Router 7创建一个带权限控制的路由配置"
*/
// app/router.tsx
import { createBrowserRouter, Navigate } from 'react-router-dom';
import { useAuth } from './hooks/useAuth';
// Layouts
import RootLayout from './layouts/RootLayout';
import AuthLayout from './layouts/AuthLayout';
// Pages
import Home from './pages/Home';
import Login from './pages/Login';
import Dashboard from './pages/Dashboard';
import Profile from './pages/Profile';
import NotFound from './pages/NotFound';
// Protected Route Component
function ProtectedRoute({ children }: { children: React.ReactNode }) {
const { isAuthenticated } = useAuth();
if (!isAuthenticated) {
return <Navigate to="/login" replace />;
}
return <>{children}</>;
}
// Public Only Route (for login, register)
function PublicOnlyRoute({ children }: { children: React.ReactNode }) {
const { isAuthenticated } = useAuth();
if (isAuthenticated) {
return <Navigate to="/dashboard" replace />;
}
return <>{children}</>;
}
export const router = createBrowserRouter([
{
path: '/',
element: <RootLayout />,
children: [
{ index: true, element: <Home /> },
{
path: 'login',
element: (
<PublicOnlyRoute>
<AuthLayout>
<Login />
</AuthLayout>
</PublicOnlyRoute>
)
},
{
path: 'dashboard',
element: (
<ProtectedRoute>
<Dashboard />
</ProtectedRoute>
)
},
{
path: 'profile',
element: (
<ProtectedRoute>
<Profile />
</ProtectedRoute>
)
}
]
},
{ path: '*', element: <NotFound /> }
]);
// main.tsx
import { RouterProvider } from 'react-router-dom';
import { router } from './router';
ReactDOM.createRoot(document.getElementById('root')!).render(
<RouterProvider router={router} />
);
2. Vue Router 4 AI辅助开发
javascript
/* 提示词:
"用Vue Router 4创建路由配置,带导航守卫"
*/
// router/index.ts
import { createRouter, createWebHistory } from 'vue-router';
import { useUserStore } from '@/stores/user';
const routes = [
{
path: '/',
component: () => import('@/layouts/RootLayout.vue'),
children: [
{ path: '', name: 'Home', component: () => import('@/pages/Home.vue') },
{ path: 'about', name: 'About', component: () => import('@/pages/About.vue') }
]
},
{
path: '/login',
name: 'Login',
component: () => import('@/pages/Login.vue'),
meta: { requiresGuest: true }
},
{
path: '/dashboard',
name: 'Dashboard',
component: () => import('@/pages/Dashboard.vue'),
meta: { requiresAuth: true }
},
{
path: '/:pathMatch(.*)*',
name: 'NotFound',
component: () => import('@/pages/NotFound.vue')
}
];
const router = createRouter({
history: createWebHistory(),
routes,
scrollBehavior(to, from, savedPosition) {
return savedPosition || { top: 0 };
}
});
// 导航守卫
router.beforeEach((to, from, next) => {
const userStore = useUserStore();
if (to.meta.requiresAuth && !userStore.isLoggedIn) {
next({ name: 'Login', query: { redirect: to.fullPath } });
} else if (to.meta.requiresGuest && userStore.isLoggedIn) {
next({ name: 'Dashboard' });
} else {
next();
}
});
export default router;
3. 今日小结
这一篇我们学习了:
- React Router 7开发
- Vue Router 4开发
4. 下篇预告
下一篇,我们学习 AI辅助的样式生成(Tailwind CSS)!