Files

3.6 KiB
Raw Permalink Blame History

Riwa App 分发页

基于 Nuxt 4 + NuxtUI + TailwindCSS 4 构建的现代化应用分发页面。

技术栈

  • 框架: Nuxt 4.2.2
  • UI 库: Nuxt UI 4.3.0 (内置 TailwindCSS 4)
  • 国际化: @nuxtjs/i18n 10.2.1
  • 语言: TypeScript 5.9.3
  • 代码规范: @nuxt/eslint 1.12.1

功能特性

  • 基于 NuxtUI 组件的简洁现代 UI
  • 🌙 自动深色模式支持(系统同步)
  • 🌍 多语言支持(中文/英文)
  • 📱 自动检测平台iOS/Android/Desktop
  • 📊 实时下载统计展示
  • 📝 版本更新日志
  • 📖 安装指引说明
  • 🔗 支持 iOS、Android、H5 三端下载
  • 🚀 SSR/SSG 支持
  • Nitro 服务器引擎

开发

# 安装依赖
pnpm install

# 启动开发服务器
pnpm dev

# 构建生产版本
pnpm build

# 预览生产构建
pnpm preview

# 生成静态站点
pnpm generate

配置

更新版本信息

编辑 server/utils/versions.ts 文件:

export const currentVersion: AppVersion = {
  version: "1.0.0",
  buildNumber: "100",
  releaseDate: "2025-12-30",
  releaseNotes: {
    "zh-CN": ["更新内容..."],
    "en-US": ["What's new..."],
  },
  downloads: {
    ios: "https://example.com/app.ipa",
    android: "https://example.com/app.apk",
    h5: "https://app.example.com",
  },
};

接入真实 API

替换 server/utils/versions.ts 中的以下函数:

  • fetchDownloadStats() - 获取下载统计
  • trackDownload() - 记录下载事件

或修改 server/api/ 目录下的 API 路由文件。

自定义主题

Nuxt UI 使用 TailwindCSS 4可在 nuxt.config.ts 中配置:

export default defineNuxtConfig({
  colorMode: {
    preference: "system", // 'light' | 'dark' | 'system'
  },
});

目录结构

packages/distribute/
├── server/
│   ├── api/                 # API 路由
│   │   ├── version.get.ts   # 获取版本信息
│   │   ├── stats.get.ts     # 获取统计数据
│   │   └── track/
│   │       └── [platform].post.ts  # 记录下载
│   └── utils/
│       └── versions.ts      # 版本数据和工具函数
├── composables/
│   └── usePlatformDetection.ts  # 平台检测 composable
├── locales/
│   ├── zh-CN.json          # 简体中文
│   └── en-US.json          # 英文
├── types/
│   └── index.ts            # TypeScript 类型定义
├── public/
│   └── favicon.svg         # 网站图标
├── app.vue                 # 主应用组件
├── nuxt.config.ts          # Nuxt 配置
├── tsconfig.json           # TypeScript 配置
└── package.json

API 路由

  • GET /api/version - 获取当前版本信息
  • GET /api/stats - 获取下载统计
  • POST /api/track/:platform - 记录下载事件platform: ios | android | h5

部署

静态站点生成SSG

pnpm generate

生成的静态文件在 .output/public 目录,可部署到:

  • Vercel
  • Netlify
  • GitHub Pages
  • Cloudflare Pages

服务器端渲染SSR

pnpm build

使用 Nitro 服务器引擎,可部署到:

  • Vercel
  • Netlify Functions
  • Cloudflare Workers
  • Node.js 服务器

自动导入

Nuxt 自动导入以下内容:

  • Vue 3 APIref, computed, watch 等)
  • Nuxt 组件和工具函数
  • NuxtUI 组件UButton, UCard, UIcon 等)
  • Composables自定义的 composables

无需手动 import

图标

使用 NuxtUI 内置的 Iconify 图标:

  • Heroicons: i-heroicons-*
  • 其他图标集: 访问 Iconify

License

MIT