跳转至

前端开发

前端采用 React 框架实现,作为算力市场平台,前端设计为尽可能动态地呈现数据起到监控资源的效果。

vite 配置

读取 BACKEND_SUFFIX 环境变量作为后端 API 域名前缀。开发中设置该环境变量,vite 会将这个后端进行代理,避免跨域问题。在生产环境实际部署的时候,这个代理由 caddy 统一代理前后端完成。

server.hmr.overlay 设置为 false 禁用,是因为启用后暂未弄清楚的原因导致崩溃。

还有一个 GRAFANA_URL 环境变量本来是控制节点上的 grafana 服务用的,后来这一服务被删去所以弃用了。

路由

采用 React-Router 实现路由。app/routes.ts 中路由配置如下:

export default [
  index("home/home.tsx"),
  route("login", "user/login.tsx"),
  route("register", "user/register.tsx"),
  layout("navi.tsx", [
    route("console", "console/console.tsx"),
    route("market", "market/market.tsx"),
    route("market/:did", "market/create.tsx"),
    route("community", "community/community.tsx")
  ]),
] satisfies RouteConfig;

组件库

主要使用了 mantine 组件库。

icon 主要使用了 mantine 所支持的 tabler 组件库。

CSS

主要使用 tailwind 风格的 CSS。

暂未实现深色模式的适配。

鉴权

两种登录方式: - /api/login 密码登录, login 登录界面使用 - /api/token_login cookie 登录, /home 页面点击登录使用

在登录之后依靠用户的 cookie 进行鉴权登录,若 cookie 失效将跳转到登录界面。

Navi 导航栏的实现中每次渲染都先进行一次鉴权, Navi 组件作为 /console, /market, /community 这几个路由的 layout,每次访问这几个路由都会鉴权,实现当用户带着无效 cookie 访问这些网页自动跳转到登录。