banner
Riceneeder

Riceneeder

白天研究生,晚上研究死
github
email

React DOI Card:让学术文献展示更优雅

在学术研究和科技写作中,我们经常需要引用和展示 DOI 文献信息。传统的文本引用虽然标准,但在数字化时代显得有些枯燥。今天要介绍的这个开源项目 React DOI Card,为我们提供了一种全新的、更加美观和直观的文献展示方式。

🎯 项目概览#

React DOI Card 是一个完全独立的 React 组件库,专门用于生成美观的 DOI 文献信息卡片。与传统的文献引用方式不同,它能够自动获取 DOI 对应的文献元数据,并以精美的卡片形式展现,让学术内容的展示更加现代化和用户友好。

核心特性一览#

🌐 完全独立:不依赖任何本地 API,直接调用外部 DOI 服务获取数据
双语支持:同时支持英文文献(CrossRef API)和中文文献(中国 DOI 解析)
TypeScript 友好:完整的 TypeScript 支持和类型定义
智能文本处理:所有文本内容支持长文本自动换行
现代化设计:基于 Microsoft Fluent Design 的美观界面
智能解析:自动处理完整 DOI 链接或纯 DOI 码
状态管理:内置完善的加载、错误、成功状态处理
高度可定制:支持 CSS 类名和内联样式自定义
轻量级实现:零额外依赖,仅依赖 React

🚀 使用场景#

这个项目特别适合以下场景:

  1. 学术个人主页:在个人网站上展示发表的论文
  2. 研究项目文档:在项目 README 中引用相关文献
  3. 博客文章:在技术博客中引用学术论文
  4. 在线简历:展示学术成果和发表记录
  5. 研究报告:在线研究报告中的文献引用

💻 快速体验#

安装非常简单,支持所有主流的包管理器:

# 使用 npm
npm install react-doi-card

# 使用 yarn  
yarn add react-doi-card

# 使用 bun
bun add react-doi-card

基础使用同样简洁明了:

import { DoiCard } from 'react-doi-card';

function App() {
  return (
    <div>
      {/* 英文文献 */}
      <DoiCard doi="10.1038/nature12373" lang="en" />
      
      {/* 中文文献 */}
      <DoiCard doi="10.11821/dlxb202001001" lang="zh" />
      
      {/* 自定义样式 */}
      <DoiCard 
        doi="10.1038/nature12373"
        className="my-custom-card"
        style={{ 
          boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)',
          borderRadius: '12px'
        }}
      />
    </div>
  );
}

demo:https://doicard.gankun.cn.ma/:::div{style="max=width: 300px"}

:::

🎨 设计亮点#

项目的设计非常用心,主要体现在:

  1. 视觉设计:采用 Microsoft Fluent Design 设计语言,简洁现代
  2. 信息层次:清晰的信息架构,标题、作者、期刊、年份等信息层次分明
  3. 响应式布局:适配不同屏幕尺寸,保持良好的视觉效果
  4. 状态反馈:加载态、错误态都有相应的视觉反馈
  5. 无障碍设计:考虑了可访问性,支持屏幕阅读器

🌟 技术实现#

从技术角度来看,这个项目有几个值得关注的点:

双语支持的实现#

项目巧妙地集成了两套 API:

  • 英文文献:使用 CrossRef API 获取国际期刊的元数据
  • 中文文献:使用中国 DOI 解析服务,很好地解决了中文文献的展示问题

状态管理#

使用自定义 Hook useDoiData 来管理数据获取状态:

const { data, loading, error } = useDoiData(doi, lang);

TypeScript 支持#

完整的类型定义,提供良好的开发体验:

interface DoiCardProps {
  doi: string;
  lang?: 'en' | 'zh';
  className?: string;
  style?: React.CSSProperties;
}

🔗 多种使用方式#

项目不仅提供了 React 组件,还提供了 API 服务,可以通过 HTTP 请求直接获取 SVG 格式的卡片:

![DOI Card](https://your-domain.vercel.app/api/doi-card?doi=10.1038/nature12373)

截屏 2025-07-02 14.27.20

这种方式特别适合在 Markdown 文档、GitHub README 等场景中使用。

🚀 部署和集成#

项目支持一键部署到 Vercel:

https://vercel.com/new/clone?repository-url=https://github.com/Riceneeder/doi_stats_card

部署后,你就拥有了自己的 DOI 卡片生成服务,可以在任何支持图片的地方使用。

🎯 应用实例#

在实际使用中,你可以这样在 GitHub README 中展示你的论文:

## 我的发表论文

### 2024年发表

![论文1](https://your-domain.vercel.app/api/doi-card?doi=10.1038/nature12373)

### 2023年发表  

![论文2](https://your-domain.vercel.app/api/doi-card?doi=10.1126/science.abm6609)

或者在个人博客中引用相关文献:

## 相关工作

我们的研究基于以下重要工作:

![基础理论](https://your-domain.vercel.app/api/doi-card?doi=10.1038/nature12373)

这篇论文为我们提供了理论基础...

🔮 未来展望#

这个项目展现了学术内容数字化展示的新可能。随着开源社区的参与,我们可以期待:

  1. 更多数据源:支持更多的学术数据库和 DOI 服务
  2. 主题定制:更多的视觉主题和样式选项
  3. 互动功能:添加点击跳转、引用统计等功能
  4. 移动端优化:更好的移动端显示效果
  5. 国际化:支持更多语言的文献展示

📝 总结#

React DOI Card 是一个非常实用的开源项目,它解决了学术文献展示的痛点:

  • 对开发者友好:简单的 API,完整的 TypeScript 支持
  • 对用户友好:美观的视觉效果,清晰的信息展示
  • 部署简单:一键部署,即开即用
  • 使用灵活:支持 React 组件和 HTTP API 两种方式

无论你是学者、博主、还是开发者,如果需要在数字化内容中引用学术文献,这个项目都值得一试。它不仅提升了内容的视觉效果,也让学术交流变得更加现代化。

项目地址:


如果你觉得这个项目有用,不妨给它一个 ⭐ Star,也欢迎贡献代码和想法!

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。