logo
0
0
WeChat Login
docs: 更新文档以反映暗黑模式和KV存储功能

EdgeOne Pages 函数:地理位置检测

基于 Next.js 和 EdgeOne Pages Functions 构建的实时地理位置检测应用。自动检测用户 IP 地址并显示地理位置信息,具有精美的响应式界面和暗黑模式支持。

使用 EdgeOne Pages 部署

功能特性

  • 🌍 实时地理位置检测 - 检测用户所在城市、省份、国家及经纬度
  • 🌐 运营商信息 - 显示互联网服务提供商和 ASN 信息
  • 🔒 TLS 版本 - 显示连接加密详情
  • 🌐 国际化支持 - 根据国家自动切换语言(中文/英文)
  • 📱 响应式设计 - 针对手机和桌面端优化
  • 🌙 暗黑模式 - 支持亮色/暗色主题切换
  • 📊 访问统计 - 基于 KV 存储的访问数据分析
  • 边缘计算 - 通过 EdgeOne 边缘节点实现毫秒级响应

API 端点

端点描述
GET /主页面,显示地理位置信息
GET /geo返回 JSON 格式的地理数据
GET /zh返回带中文翻译的地理数据
GET /headers通过 HTTP 响应头返回地理数据

响应头说明 ( /headers )

响应头描述
x-geo-city城市名称
x-geo-country国家名称
x-geo-region省份/地区名称
x-client-ip客户端 IP 地址
x-isp互联网服务提供商
x-asn自治系统号
x-latitude纬度坐标
x-longitude经度坐标
x-tls-versionTLS 加密版本
x-country-codeISO 3166-1 alpha-2 国家代码
x-request-id唯一请求标识符

快速开始

环境要求

  • Node.js 18+
  • npm、yarn、pnpm 或 bun

安装

git clone https://github.com/your-username/geolocation.git
cd geolocation
npm install

开发模式

npm run dev

打开 http://localhost:3000 查看应用。

生产构建

npm run build
npm run start

项目结构

├── app/
│   ├── page.tsx          # 主页面组件
│   ├── layout.tsx        # 根布局
│   └── globals.css       # 全局样式
├── components/
│   ├── AppleIcons.tsx    # SVG 图标组件
│   └── ThemeToggle.tsx   # 暗黑模式切换组件
├── functions/
│   ├── geo/index.ts      # /geo 端点
│   ├── zh/index.ts       # /zh 端点(中文)
│   └── headers/index.ts  # /headers 端点
├── lib/
│   ├── utils.ts          # 工具函数
│   └── kv-storage.ts     # KV 存储操作封装
├── types/
│   └── kv.d.ts           # TypeScript 类型定义
└── package.json

技术栈

  • 框架: Next.js 14
  • 样式: Tailwind CSS + shadcn/ui
  • 边缘函数: EdgeOne Pages Functions
  • 数据存储: EdgeOne Pages KV Storage
  • 语言: TypeScript

工作原理

  1. 用户访问页面
  2. 请求到达 EdgeOne 边缘节点
  3. EdgeOne 检测用户 IP 并解析地理位置
  4. 地理数据通过响应头或 JSON 返回
  5. 访问数据自动保存到 KV 存储(30天保留期)
  6. 前端根据国家代码显示对应语言

访问数据记录

项目集成了 EdgeOne Pages KV 存储,提供访问数据记录功能:

  • 数据保存:每次访问自动保存到 KV 存储,包含地理位置、IP、时间戳等信息
  • 自动清理:30天前的数据自动清理,概率为1%
  • 配置要求:需要在 EdgeOne 控制台创建 Geolocation KV 命名空间并绑定到项目

详细配置说明请参考 KV_STORAGE_README.md

许可证

ISC

相关链接