实时基金估值助手

497 阅读3分钟

手把手教你用 React + Vite 打造一个“摸鱼神器”——实时基金估值助手 📈

作为一个资深“韭菜”,每天盯着基金净值波动是必修课。但频繁打开支付宝或天天基金不仅加载慢,在办公室这种公共场合还容易暴露“身价”(虽然可能是负的...)。

于是,我利用周末时间,用 React + Vite 写了一个轻量级的实时基金估值助手。它不仅支持实时查看估值,还贴心地加入了隐私模式移动端适配,简直是上班摸鱼、下班理财的必备神器!

✨ 项目亮点

1. 🛡️ 隐私脱敏模式(摸鱼核心功能)

在办公室看基金,最怕被同事瞥见账户金额。本项目特别设计了“隐私模式”:

  • 点击“小眼睛”图标,一键隐藏(****)所有敏感金额(总市值、持仓成本、当日盈亏等)。
  • 只保留涨跌幅百分比,让你心中有数,又不露富(或露贫)。

2. 📱 完美适配移动端

不仅支持 PC 端的大屏表格展示,还针对手机端进行了深度优化:

  • PC 端:使用 Ant Design 的 Table 组件,信息一目了然。
  • 移动端:自动切换为卡片式布局(Card View),核心数据放大显示,操作更便捷。

3. ⚡ 实时数据 & 智能计算

  • 数据源:接入天天基金/东财的实时估值接口。
  • 智能导入:支持从其他软件导出的文本格式直接导入,自动反推计算“持有份额”和“持仓成本”。

4. 🔒 纯前端安全

  • 所有持仓数据仅保存在浏览器的 localStorage 中,不经过任何后端服务器,最大程度保障数据安全。

🛠️ 技术栈

本项目采用了目前前端社区最流行的现代技术栈:

  • 构建工具: Vite - 极速启动,开发体验满分。
  • 核心框架: React 18 - 配合 Hooks 进行状态管理。
  • UI 组件库: Ant Design - 快速构建美观的界面。
  • 语言: TypeScript - 类型安全,减少 Bug。
  • 部署: Vercel - 零配置自动化部署 + 接口代理。

💻 核心实现细节

1. 解决跨域问题 (Proxy)

基金接口通常不支持直接跨域调用。在开发环境下,我们利用 Vite 的 server.proxy;在生产环境(Vercel)下,我们通过 vercel.json 配置 Rewrite 来解决:

// vercel.json
{
  "rewrites": [
    {
      "source": "/api/fund/:match*",
      "destination": "http://fundgz.1234567.com.cn/js/:match*"
    }
  ]
}

2. 响应式布局切换

为了同时适应 PC 和移动端,我们在 FundTable 组件中监听屏幕宽度,动态切换渲染模式:

// 简化代码示例
const isMobile = useMediaQuery({ maxWidth: 768 });

return (
  <>
    {isMobile ? (
      // 移动端:卡片列表
      dataSource.map(fund => <FundCard fund={fund} />)
    ) : (
      // PC端:表格
      <Table columns={columns} dataSource={dataSource} />
    )}
  </>
);

3. 隐私脱敏逻辑

通过一个 showSensitive 状态控制显示内容。我们封装了一个简单的工具函数,当隐私模式开启时,将数字替换为 ****

// 隐私显示辅助函数
const renderSensitive = (value: string | number) => {
  if (!showSensitive) return '****';
  return value;
};

// 在 UI 中使用
<div>总市值: {renderSensitive(totalMarketValue)}</div>

🚀 快速开始

如果你也想部署一个属于自己的基金助手,非常简单:

  1. Clone 项目

    git clone https://github.com/Leon200410/Real-time-fund.git
    
  2. 安装依赖

    npm install
    
  3. 启动开发服务器

    npm run dev
    
  4. 构建部署 可以直接 fork 到你自己的 GitHub,然后连接 Vercel 即可自动部署。


📝 总结

这个项目虽然不大,但涵盖了前端开发的许多典型场景:接口跨域处理响应式设计本地持久化存储以及用户体验优化(如隐私模式)。

如果你觉得这个项目对你有帮助,欢迎来 GitHub 点个 Star ⭐️!

🔗 GitHub 地址: github.com/Leon200410/…