Apache Atlas与DataHub:元数据治理实战对比与选型
2026/10/13 17:22:37
这是一个美食菜谱分享的微信小程序,采用纯前端实现,使用本地Mock数据模拟后端接口。项目完整实现了美食浏览、分类筛选、菜谱详情、收藏管理、评论互动、用户发布等核心功能,适合作为微信小程序开发学习项目或计算机设计参考。
| 技术 | 版本/说明 |
|---|---|
| 开发框架 | 微信小程序原生框架 |
| 基础库版本 | v2 (最新稳定版) |
| 开发语言 | JavaScript (ES6+) |
| 样式语言 | WXSS (微信小程序样式) |
| 模板语言 | WXML (微信小程序模板) |
| 数据存储 | 本地Storage持久化 |
| 数据模拟 | Mock Data (本地模拟数据) |
wx.setStorageSync本地存储,关闭小程序后数据不丢失pages/index)pages/cate)pages/search)pages/detail)pages/star)pages/comment)pages/news)pages/news_detail)pages/add)pages/my_add)pages/my)pages/userInfo)meishi/ ├── app.js # 小程序入口文件,全局数据管理 ├── app.json # 小程序全局配置(页面路由、TabBar、窗口样式) ├── app.wxss # 全局样式文件 ├── project.config.json # 项目配置文件 ├── project.private.config.json # 项目私有配置 ├── sitemap.json # 小程序索引配置 ├── images/ # 图片资源目录 │ ├── tabbar/ # TabBar图标 │ │ ├── index.png # 首页图标 │ │ ├── index_color.png # 首页选中图标 │ │ ├── category.png # 分类图标 │ │ ├── category_color.png # 分类选中图标 │ │ ├── xuancai.png # 资讯图标 │ │ ├── xuancai_color.png # 资讯选中图标 │ │ ├── star.png # 收藏图标 │ │ ├── star_color.png # 收藏选中图标 │ │ ├── my.png # 我的图标 │ │ └── my_color.png # 我的选中图标 │ ├── cate/ # 分类图标 │ │ ├── 1.png ~ 6.png # 各分类图标 │ ├── food/ # 美食图片 │ │ ├── 1.jpg ~ 24.jpg # 美食封面图 │ │ └── default-avatar.jpg # 默认头像 │ ├── banner.jpg # 轮播图 │ ├── search.png # 搜索图标 │ ├── star.png # 收藏图标 │ ├── star1.png # 已收藏图标 │ ├── right.png # 右箭头图标 │ └── mine.png # 我的图标 ├── pages/ # 页面目录 │ ├── index/ # 首页 │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── cate/ # 分类页 │ │ ├── cate.js │ │ ├── cate.json │ │ ├── cate.wxml │ │ └── cate.wxss │ ├── search/ # 搜索页 │ │ ├── search.js │ │ ├── search.json │ │ ├── search.wxml │ │ └── search.wxss │ ├── detail/ # 美食详情页 │ │ ├── detail.js │ │ ├── detail.json │ │ ├── detail.wxml │ │ └── detail.wxss │ ├── star/ # 收藏页 │ │ ├── star.js │ │ ├── star.json │ │ ├── star.wxml │ │ └── star.wxss │ ├── comment/ # 评论页 │ │ ├── comment.js │ │ ├── comment.json │ │ ├── comment.wxml │ │ └── comment.wxss │ ├── news/ # 资讯列表页 │ │ ├── news.js │ │ ├── news.json │ │ ├── news.wxml │ │ └── news.wxss │ ├── news_detail/ # 资讯详情页 │ │ ├── detail.js │ │ ├── detail.json │ │ ├── detail.wxml │ │ └── detail.wxss │ ├── add/ # 发布美食页 │ │ ├── add.js │ │ ├── add.json │ │ ├── add.wxml │ │ └── add.wxss │ ├── my_add/ # 我的发布页 │ │ ├── my_add.js │ │ ├── my_add.json │ │ ├── my_add.wxml │ │ └── my_add.wxss │ ├── my/ # 我的页面 │ │ ├── my.js │ │ ├── my.json │ │ ├── my.wxml │ │ └── my.wxss │ └── userInfo/ # 个人信息页 │ ├── userInfo.js │ ├── userInfo.json │ ├── userInfo.wxml │ └── userInfo.wxss └── utils/ # 工具类目录 ├── api.js # API接口封装 ├── data.js # Mock数据文件 ├── request.js # 请求封装 └── util.js # 工具函数{id:1,// 分类IDtitle:'炒菜',// 分类名称cover:'../../images/cate/1.png'// 分类图标}{id:1,// 美食IDtitle:'水果点心巧克力蛋糕',// 美食名称cate_id:4,// 所属分类IDmaterial:'水果、巧克力、蛋糕粉',// 所需原料money:12,// 预估成本ways:'烘焙',// 制作方式img:'../../images/food/1.jpg',// 封面图片create_time:'2022-11-6',// 创建时间step:'先切好水果点心,然后再烘焙蛋糕',// 制作步骤user_id:1// 发布用户ID}{id:1,// 资讯IDtitle:'80、90、00、10后喜欢去的餐厅有哪些...',// 标题poster:'../../images/news_1.jpeg',// 封面图content:'资讯正文内容...',// 正文内容create_time:'2023-12-30 09:36:49'// 发布时间}{id:1672531200000,// 收藏记录ID(时间戳)user_id:1,// 用户IDfood_id:1,// 美食IDtitle:'水果点心巧克力蛋糕',// 美食名称img:'../../images/food/1.jpg'// 美食封面}{id:1672531200000,// 评论ID(时间戳)user_id:1,// 用户IDfood_id:1,// 美食IDcontent:'这道菜太好吃了!'// 评论内容}{id:1,// 用户IDnickname:'微信用户',// 昵称avatar:'https://...',// 头像URLusername:'',// 用户名sex:1// 性别:1男 2女}// 按关键词搜索美食exportfunctionfetchFoodList({title=''}){const{food}=wx.getStorageSync('data');letnewFood=food;if(title){newFood=food.filter((item)=>item.title.includes(title));}returnnewFood;}// 按分类筛选美食exportfunctionfetchFoodByCateList({cate_id=0}){const{food}=wx.getStorageSync('data');returnfood.filter((c)=>c.cate_id==cate_id);}// 更新收藏状态(收藏/取消收藏)exportfunctionfetchUpdateStar(params){letdata=wx.getStorageSync('data');constresult=data.star.find((c)=>c.user_id==params.user_id&&c.food_id==params.food_id,);if(!result){// 添加收藏data.star.push({id:+newDate(),...params});return'收藏成功';}else{// 取消收藏data.star=data.star.filter((c)=>c.id!=result.id);return'取消收藏';}}// 创建评论exportfunctionfetchAddComment(params){letdata=wx.getStorageSync('data');data.comment.push({id:+newDate(),...params,});wx.setStorageSync('data',{...data});}// 删除评论exportfunctionfetchDelComment(params){letdata=wx.getStorageSync('data');data.comment=data.comment.filter((c)=>c.id!=params.id);wx.setStorageSync('data',{...data});}// 新增美食exportfunctionfetchAddFood(params){letdata=wx.getStorageSync('data');data.food.push({id:+newDate(),...params,});wx.setStorageSync('data',{...data});}// app.js 中初始化数据onLaunch(){if(!wx.getStorageSync('data')){wx.setStorageSync('data',data);// 写入默认数据}}{"pages":["pages/index/index",// 首页(默认启动页)"pages/cate/cate",// 分类页"pages/search/search",// 搜索页"pages/comment/comment",// 评论页"pages/userInfo/userInfo",// 个人信息页"pages/detail/detail",// 美食详情页"pages/star/star",// 收藏页"pages/add/add",// 发布美食页"pages/my_add/my_add",// 我的发布页"pages/my/my",// 我的页面"pages/news/news",// 资讯列表页"pages/news_detail/detail"// 资讯详情页]}{"tabBar":{"selectedColor":"#FB6650","list":[{"pagePath":"pages/index/index","text":"首页"},{"pagePath":"pages/cate/cate","text":"分类"},{"pagePath":"pages/news/news","text":"资讯"},{"pagePath":"pages/star/star","text":"收藏"},{"pagePath":"pages/my/my","text":"我的"}]}}将项目文件夹下载到本地
meishi导入成功后,项目会自动编译运行,可在模拟器中预览效果
点击工具栏"预览"按钮,扫码在手机上体验
| 分类ID | 分类名称 |
|---|---|
| 1 | 炒菜 |
| 2 | 午餐 |
| 3 | 汤羹 |
| 4 | 早餐 |
| 5 | 甜点 |
| 6 | 其他 |
| 名称 | 分类 | 制作方式 | 原料 |
|---|---|---|---|
| 水果点心巧克力蛋糕 | 早餐 | 烘焙 | 水果、巧克力、蛋糕粉 |
| 花生酥糖点心 | 早餐 | 烘焙 | 花生碎、白砂糖、面粉 |
| 西蓝花炒豆腐 | 炒菜 | 清炒 | 西蓝花、豆腐 |
| 酸菜鱼 | 炒菜 | 煮 | 草鱼、酸菜 |
| 可乐鸡翅 | 炒菜 | 炸 | 鸡翅 |
| 玉米排骨汤 | 午餐 | 炖 | 排骨、玉米 |
| 灌汤小笼包 | 汤羹 | 蒸 | 面粉、肉沫 |
| 自制酸梅汤 | 甜点 | 研磨再煮 | 酸梅 |
项目包含演示视频文件美食-效果展示.mp4,可查看完整功能演示。
如需进一步完善项目,可考虑以下扩展:
本项目仅供学习交流使用,请勿用于商业用途。