非遗油纸伞文化数字体验平台

非遗油纸伞文化数字体验平台

一、项目概述

1.1 项目定位

本项目是一个面向非物质文化遗产油纸伞文化传播与数字交互的综合 Web 平台。平台以「文化展示 + 沉浸体验 + 用户创作 + 知识传播」为主线,将油纸伞的历史渊源、制作工艺、文化内涵与现代 Web 技术相结合,帮助公众以可感知、可参与的方式了解并传承这一传统技艺。

1.2 核心目标

目标维度说明
文化传播通过时间轴叙事、工艺视频、图文解读等方式呈现油纸伞千年发展史
数字交互提供 3D 模型旋转缩放、DIY 伞面绘制等沉浸式体验
用户参与支持用户创作作品、发布至虚拟展厅,并进行点赞、收藏、评论
知识巩固提供分级知识问答,记录答题成绩,促进学习效果
平台运营配套管理后台,支持用户、作品、题库的集中管理与数据统计

1.3 适用场景

  • 非遗文化数字化展示与教学
  • 计算机设计 / 课程设计类 Web 全栈项目
  • 传统文化主题互动体验站点

二、技术架构

2.1 整体架构

采用经典前后端分离架构:前端 Vue3 SPA 负责页面渲染与交互,后端 Express 提供 RESTful API,MySQL 持久化业务数据。

服务端

浏览器

/api 代理

/uploads 代理

Vue3 前端
端口 5174

Express API
端口 4923

MySQL
oilpaper_umbrella_platform

本地文件 uploads/

2.2 技术栈明细

前端(vue3/
类别技术用途
框架Vue 3 + Vite 7页面开发与构建
路由 / 状态Vue Router 4、Pinia路由导航、用户登录态
UI 组件Element Plus表单、表格、弹窗等管理端组件
网络请求Axios封装 /api 请求与 Token 拦截
3D 渲染Three.js油纸伞 GLB 模型加载与交互
画布绘制Fabric.jsDIY 工坊伞面图案创作
动画GSAP、Animate.css、Swiper首页时间轴、工艺页滚动动效
图表ECharts + vue-echarts管理后台数据可视化
富文本Marked + highlight.jsMarkdown 内容渲染
样式Sass组件级样式与主题变量
后端(express/
类别技术用途
运行时Node.js服务端运行环境
Web 框架Express 4HTTP 服务与路由
数据库MySQL 8 + mysql2 连接池数据持久化
鉴权jsonwebtoken + bcryptJWT 登录态、密码加密
文件上传Multer作品图片上传至 uploads/
跨域cors开发环境跨域支持

2.3 接口约定

  • 基础路径/api
  • 统一响应格式
{
  "code": 200,
  "msg": "success",
  "data": {}
}
  • 鉴权方式:请求头 Authorization: Bearer <token>
  • 前端代理:开发时 Vite 将 /api/uploads 代理至 http://localhost:4923

三、项目目录结构

chinese-oil-paper-umbrella/
├── oilpaper_umbrella_platform.sql   # 数据库完整结构与初始数据
├── 项目说明.md                       # 本文档
│
├── express/                         # 后端服务
│   ├── app.js                       # Express 应用入口(CORS、静态资源、路由挂载)
│   ├── bin/www                      # HTTP 服务启动(默认端口 4923)
│   ├── config/
│   │   ├── db.js                    # MySQL 连接池配置
│   │   ├── index.js                 # 应用级配置(密钥等)
│   │   └── security.js              # 安全相关配置
│   ├── controllers/                 # 控制器:auth / user / works / quiz / upload / admin
│   ├── routes/                      # 路由定义,统一挂载于 /api
│   ├── middlewares/
│   │   └── auth.js                  # JWT 鉴权、可选鉴权、管理员鉴权
│   ├── util/                        # 工具:加密、角色、微信等
│   ├── scripts/                     # 数据库初始化 SQL 片段
│   ├── uploads/                     # 用户上传图片存储目录
│   └── public/                      # 后端静态资源
│
└── vue3/                            # 前端应用
    ├── index.html
    ├── vite.config.js               # 开发服务器、路径别名、API 代理
    ├── src/
    │   ├── api/                     # 接口封装(request.js + index.js)
    │   ├── assets/                  # 图片、视频、音频、字体、全局样式
    │   ├── components/              # 公共组件(导航栏、页脚、上传、编辑器等)
    │   ├── config/                  # 背景音乐、点击音效映射
    │   ├── directives/              # 自定义指令(如点击音效)
    │   ├── layouts/                 # WebsiteLayout(前台)、MainLayout(后台)
    │   ├── router/index.js          # 路由与权限守卫
    │   ├── stores/user.js           # 用户登录态 Pinia Store
    │   ├── utils/                   # 格式化、加密等工具
    │   └── views/                   # 页面视图(见下文功能模块)
    └── public/
        └── models/model.glb         # 3D 油纸伞模型文件

四、功能模块说明

4.1 前台功能

路由页面功能描述
/首页左侧历史时间轴 + 全屏画卷式幻灯,按朝代(春秋末期→近现代)讲述油纸伞发展史;支持滚动/点击切换,配合背景音乐与水墨视觉动效
/craft工艺解读五道古法工艺流程(选竹、制骨、裱纸、绘花、上油),左侧流程轴 + 右侧视频/图文详情,GSAP 滚动联动
/model3d3D 交互基于 Three.js 加载 GLB 模型,支持旋转、缩放、部件高亮;水墨风格背景与自定义光标
/model-3d3D 交互(备用)另一套 3D 展示实现,可按需选用
/diyDIY 工坊Fabric.js 画布,支持画笔/橡皮、墨色选择、伞面底色(纯色/渐变)、贴纸纹样;可导出作品并发布至展厅
/quiz知识回顾展示答题分类(历史渊源、制作工艺、文化内涵与传承),含难度标识
/quiz/:categoryId答题详情按分类逐题作答,提交后记录得分与答题记录
/gallery虚拟展厅公开展示用户作品,支持排序、标签筛选
/gallery/create发布作品上传 DIY 作品或图片,填写标题、描述、标签
/gallery/:id作品详情查看大图、作者信息,登录用户可点赞、收藏、评论
/profile个人中心查看/编辑个人资料,管理我的作品、收藏与答题记录
/login登录注册用户登录与注册,登录后跳转原页面或首页
体验增强特性
  • 背景音乐(BgmFab):首页、3D 页等支持切换与播放控制
  • 点击音效(clickSfx):关键交互按钮附带传统风格音效
  • 思源字体 + 水墨视觉:整体 UI 偏向中式非遗美学

4.2 管理后台(/admin

管理员角色(role = 99) 登录后访问,路由守卫与后端 adminAuth 双重校验。

路由功能
/admin/dashboard数据概览:注册用户、作品总数、答题人次;答题分类饼图;最近作品与用户列表
/admin/users用户列表查询,修改用户角色(普通用户 / 工作人员 / 管理员)
/admin/works全站作品管理,编辑公开状态、标题描述等
/admin/quiz题库管理:分类 CRUD、题目 CRUD(含选项 JSON、正确答案、解析)

4.3 用户角色体系

role 值角色权限
0普通用户前台全部功能:DIY、发布作品、答题、互动
1工作人员预留角色,可按业务扩展
99管理员访问 /admin 管理后台全部功能

五、数据库设计

数据库名:oilpaper_umbrella_platform,字符集 utf8mb4

5.1 表结构概览

表名说明主要字段
users用户表username, password(bcrypt), nickname, avatar, role, is_delete
works虚拟展厅作品author_id, title, cover_url, work_url, description, tags, is_public, like/favorite/comment_count
work_likes作品点赞user_id, work_id(联合唯一)
work_favorites作品收藏user_id, work_id(联合唯一)
work_comments作品评论user_id, work_id, content, is_delete
quiz_categories答题分类name, sort, difficulty(easy/medium/hard), status
quiz_questions答题题目category_id, title, options(JSON), correct_answer, analysis
quiz_records答题记录user_id, category_id, score, total_questions

表间通过外键关联,删除用户或分类时级联处理关联数据。

5.2 初始化数据

执行根目录 oilpaper_umbrella_platform.sql 可一次性创建库表并导入:

  • 默认管理员账号:admin(role=99)
  • 3 个答题分类、9 道示例题目
  • 6 件示例展厅作品

六、API 接口一览

6.1 认证 /api/auth

方法路径说明鉴权
POST/login用户登录,返回 JWT
POST/register用户注册

6.2 用户 /api/users

方法路径说明鉴权
GET/profile获取当前用户资料
PUT/profile更新昵称、头像等

6.3 作品 /api/works

方法路径说明鉴权
GET/公开作品列表(分页、排序)
GET/my我的作品
GET/favorites我的收藏
GET/:id作品详情可选
GET/:id/comments作品评论列表
POST/发布作品
POST/:id/like点赞
POST/:id/like/cancel取消点赞
POST/:id/favorite收藏
POST/:id/favorite/cancel取消收藏
POST/:id/comment发表评论
DELETE/:id删除作品(作者本人)

6.4 问答 /api/quiz

方法路径说明鉴权
GET/categories答题分类列表
GET/questions按分类获取题目
GET/records答题记录可选
POST/records提交答题结果

6.5 上传 /api/upload

方法路径说明鉴权
POST/上传图片,返回可访问 URL

6.6 管理 /api/admin

以上接口均需 登录 + role=99

模块主要接口
统计GET /stats
用户GET /usersPUT /users/:id/role
作品GET /worksPUT /works/:id
题库分类与题目的增删改查(/quiz/categories/quiz/questions

七、环境要求与启动指南

7.1 环境要求

依赖版本建议
Node.js≥ 20.19.0 或 ≥ 22.12.0(前端 engines 约束)
MySQL8.x
包管理器npm / pnpm / yarn 均可

7.2 数据库配置

  1. 创建 MySQL 数据库(或由 SQL 脚本自动创建)
  2. 导入数据:
mysql -u root -p < oilpaper_umbrella_platform.sql
  1. 修改后端数据库连接(express/config/db.js):
{
  host: "localhost",
  port: "3306",
  user: "root",
  password: "你的密码",
  database: "oilpaper_umbrella_platform"
}

7.3 启动后端

cd express
npm install          # 或 pnpm install
npm run dev          # nodemon 启动,默认 http://localhost:4923

7.4 启动前端

cd vue3
npm install
npm run dev          # 默认 http://localhost:5174,自动打开浏览器

7.5 生产构建

# 前端打包
cd vue3 && npm run build    # 产物在 vue3/dist/

# 后端可将 dist 静态文件托管,或前后端分域名部署
# 生产环境需配置前端 API 基地址,并设置 JWT_SECRET 环境变量

7.6 默认访问地址

服务地址
前台首页http://localhost:5174
管理后台http://localhost:5174/admin
API 服务http://localhost:4923/api
上传资源http://localhost:4923/uploads/

八、安全与配置说明

8.1 JWT 密钥

后端 middlewares/auth.js 使用环境变量 JWT_SECRET,未设置时回退默认值 oil_paper_umbrella_secret生产环境务必通过环境变量配置强密钥。

8.2 密码存储

用户密码使用 bcrypt 加盐哈希,明文不存入数据库。

8.3 CORS

当前后端 app.js 配置 origin: "*",适合开发调试;生产环境建议收紧为前端实际域名。

8.4 上传限制

图片上传经 Multer 处理,存储于 express/uploads/,通过 /uploads 静态路径访问。注意磁盘空间与文件类型校验。


九、前端路由与权限

路由定义见 vue3/src/router/index.js

  • 前台路由嵌套在 WebsiteLayout 下,共享导航栏与页脚
  • /admin/* 路由设置 meta.requireAdmin: true
  • 全局 beforeEach 守卫:未登录跳转 /login?redirect=...;非管理员访问后台则重定向首页
  • 页面 document.title 格式:{页面标题} - 非遗油纸伞文化平台

十、项目亮点总结

  1. 文化 + 技术融合:时间轴叙事、工艺视频、3D 模型、DIY 绘制形成完整体验链
  2. 视觉与交互统一:水墨国风 UI、GSAP 动效、音效反馈,强化沉浸感
  3. 完整业务闭环:注册登录 → 创作 → 发布 → 展厅互动 → 知识问答 → 管理运营
  4. 分层清晰的后端:Controller / Route / Middleware 职责分明,便于扩展
  5. 可运维的管理端:ECharts 统计、用户角色、作品与题库一站式管理

十一、常见问题

Q:前端请求 404 或跨域失败?
确认后端已启动在 4923 端口,且 vite.config.js 代理配置未被修改。

Q:数据库连接失败?
检查 MySQL 服务是否运行、db.js 账号密码是否正确、是否已导入 SQL。

Q:无法进入管理后台?
确认登录账号 role 为 99,可在数据库 users 表中修改。

Q:3D 模型不显示?
确认 vue3/public/models/model.glb 存在;浏览器需支持 WebGL。

Q:上传图片无法访问?
确认 express/uploads 目录存在写权限,且通过 /uploads/文件名 访问。


内容概要:本文系统性地介绍了Neo4j图数据库的技术体系、核心原理与企业级实战应用,涵盖从基础理论到生产落地的完整知识链条。深入剖析了Neo4j作为原生图数据库在存储架构、数据模型、查询语言(Cypher)方面的核心技术优势,重点讲解其基于节点、关系、属性的三元组模型和原生图存储机制,对比传统关系型数据库在处理复杂关联数据时的性能瓶颈。文档全面覆盖环境部署、工业级建模规范、Cypher深度编程、海量数据导入、Python/Java全栈开发集成、图算法分析(GDS)、高可用集群搭建及性能调优等内容,并通过金融风控知识图谱项目实现端到端的综合实战演练,提供可直接复用的建模模板、优化方案与故障排查手册。; 适合人群:具备一定数据库基础,从事大数据、人工智能、金融风控、知识图谱等相关领域的研发人员、架构师及数据工程师,尤其适合工作1-5年希望掌握图数据库企业级开发能力的技术人员。; 使用场景及目标:①掌握Neo4j在金融风控、社交网络、知识图谱等复杂关联场景下的建模与查询能力;②实现海量图数据的高效导入、集群部署与性能优化;③结合GDS图算法进行社群发现、路径分析、核心节点挖掘等智能分析任务;④构建前后端一体化的企业级图谱可视化系统。; 阅读建议:此资源强调工程化与生产级落地,建议结合实际项目边学边练,重点关注建模规范、索引设计、Cypher执行计划优化与集群运维等关键环节,配套源码与配置模板应作为开发参考标准使用。
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 网站扒站工具,如标题所述,是用于复制或仿制网站内容的技术手段。 这些工具能够帮助用户抓取网站上的HTML代码、图片、CSS样式表、JavaScript文件等资源,以实现快速构建与原网站相似的新站点。 在IT行业中,这种行为有时被称为网页抓取或网页克隆,对于学习、分析或测试网站设计有着重要作用。 Teleport Ultra 是一款知名的扒站工具,它允许用户以一种系统化的方式下载整个网站到本地计算机上,以便离线查看或进一步分析。 以下是对Teleport Ultra及其功能的详细介绍: 1. **全面抓取**:Teleport Ultra能深入网站的每一个角落,不仅抓取首页,还能追踪链接,将整个网站的结构、内容和资源都下载下来。 这包括静态页面、动态内容、登录后的页面等。 2. **自定义设置**:用户可以设定抓取范围,例如只抓取特定目录,或者排除某些不想要的页面。 此外,还可以设置代理服务器,以匿名方式抓取,避免被目标网站检测到。 3. **时间调度**:对于大型或需要分时段抓取的网站,Teleport Ultra支持定时任务,可以在指定的时间自动开始抓取工作。 4. **内容过滤**:该工具允许用户过滤掉不需要的元素,如广告、脚本或图片,只保留核心内容。 5. **网站镜像**:完成抓取后,Teleport Ultra可以创建一个完整的网站镜像,包括所有链接关系,使得在本地浏览时体验与在线网站几乎一致。 6. **报告生成**:它还提供详细的抓取报告,包括未成功下载的页面、错误信息等,方便用户检查和修复问题。 7. **易于使用**:Teleport Ultra的界面直观,即使对编程不...
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 Electron-Lark release-download-count 下载地址: Release electron 版的飞书 Feishu (原 Lark),对网页版本进行封装 相比起普通网页版,功能如下 独立的运行窗口,不容易误关闭 关闭程序时后台运行,隐藏到通知栏小图标,双击可重新打开界面 新消息提醒,状态栏小图标闪烁 解除浏览器限制,避免因浏览器版本不对而提示无法使用 已知问题 - 部分功能无法使用(工作台/会议等) - 飞书网页版缺陷,请向官方反馈 历史问题 - ~~ubuntu18.04 Gnome 桌面,锁屏之后,系统通知栏图标 Tray 会消失, 当前规避方案如下~~ - ~~当有新消息提醒的时候,会重置通知栏图标 tray,保证哪怕因为锁屏导致 tray 消失,在收到新消息之后也会重新出现并闪烁~~ - 使用 alt + shift + m 的快捷键,重新显示界面以及 dock 图标 - ~~V1.0.3 版本已修复,添加了一个 linux 锁屏监听,自动 reset appTray~~ - V1.1.1 版本升级了 electron 依赖,问题解决~ (另外有一说一, 飞书的技术架构就是基于 Electron 的, Windows 和 Mac 客户端也都是使用 Electron 打包, 既然如此为什么不顺便为 Linux 也提供支持呢 ?) - 2021-04-26更新:后知后觉 deepin 商店已经有 wine 版本的飞书了,详情可看这个 deepin官方帖子 如果公司使用的并不是自己部署版本的飞书的话,可以尝试一下,ubuntu 上面可以再加一个 d...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值