《校园生活平台从 0 到 1 的搭建》第一篇:创建项目与构建目录结构

在本系列第一篇中,我们将从项目初始化开始,搭建基本的目录结构,并完成四个主页面的创建与 TabBar 设置。

(tip:你可能会觉得有点 ai 化,因为这个文案是我自己写了一遍文案之后让 ai 去优化输出的)

目录

    • 一、创建项目与规范目录结构
      • [1. 打开 HBuilderX,创建一个新的 uni-app 项目。在创建时请选择 Vue 2 版本。](#1. 打开 HBuilderX,创建一个新的 uni-app 项目。在创建时请选择 Vue 2 版本。)
      • [2. 项目创建完成后,建议提前划分好目录结构。](#2. 项目创建完成后,建议提前划分好目录结构。)
    • [二、配置四个 Tab 页面与底部导航栏](#二、配置四个 Tab 页面与底部导航栏)
      • [2.1 添加图标资源](#2.1 添加图标资源)
      • [2.2 页面结构准备](#2.2 页面结构准备)
      • [2.3 配置 pages.json](#2.3 配置 pages.json)
    • [✅ 总结](#✅ 总结)

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!


一、创建项目与规范目录结构

1. 打开 HBuilderX,创建一个新的 uni-app 项目。在创建时请选择 Vue 2 版本。

2. 项目创建完成后,建议提前划分好目录结构。

虽然部分目录在初期可能暂未使用,但良好的结构有助于后续开发的规范和扩展。

推荐的目录结构如下:

bash 复制代码
/uni-app-wxschool/              # 项目根目录
├── /components/                # 公共组件(如卡片、导航栏等)
│   └── ...
│
├── /pages/                     # 页面目录
│   ├── /home/                  # 首页
│   │   └── index.vue
│   ├── /services/              # 校园服务
│   │   └── index.vue
│   ├── /forum/                 # 校园论坛
│   │   └── index.vue
│   ├── /profile/               # 用户中心
│   │   └── index.vue
│   └── /login/                 # 登录注册页
│       └── index.vue
│
├── /store/                     # Vuex 状态管理
│   └── index.js
│
├── /utils/                     # 工具函数(如请求封装、表单验证等)
│   └── ...
│
├── /common/                    # 通用配置(样式、常量、mixin 等)
│   └── ...
│
├── /static/                    # 静态资源(图片、图标等)
│   └── ...
└── config.js                   # 项目配置(如接口地址、环境变量等)
│ 	...													# 项目自带的其他文件

💡 注意事项:如果你手动创建了某些页面文件,记得检查 pages.json 是否正确引入了这些页面路径,否则页面将无法被识别。

二、配置四个 Tab 页面与底部导航栏

2.1 添加图标资源

在 /static/tabbar/ 目录中添加四个页面的图标,分别为选中与未选中状态,例如:

bash 复制代码
static/
└── tabbar/
    ├── 11.png   # 首页默认图标
    ├── 12.png   # 首页选中图标
    ├── 21.png   # 服务默认图标
    ├── 22.png   # 服务选中图标
    ├── 31.png   # 论坛默认图标
    ├── 32.png   # 论坛选中图标
    ├── 41.png   # 我的默认图标
    └── 42.png   # 我的选中图标

👉 图标推荐来源:阿里巴巴矢量图标库(iconfont)

2.2 页面结构准备

确保以下页面结构已创建:

bash 复制代码
/pages/
├── /home/        → 首页
├── /services/    → 校园服务
├── /forum/       → 校园论坛
├── /profile/     → 用户中心

每个目录下至少应有一个 index.vue 页面文件。

2.3 配置 pages.json

在 pages.json 中添加页面配置与底部 tabBar 设置:

bash 复制代码
{
  "pages": [
    {
      "path": "pages/home/index",
      "style": {
        "navigationBarTitleText": "首页"
      }
    },
    {
      "path": "pages/services/index",
      "style": {
        "navigationBarTitleText": "校园服务"
      }
    },
    {
      "path": "pages/forum/index",
      "style": {
        "navigationBarTitleText": "校园论坛"
      }
    },
    {
      "path": "pages/profile/index",
      "style": {
        "navigationBarTitleText": "我的"
      }
    }
  ],
  "tabBar": {
    "color": "#999999",
    "selectedColor": "#007AFF",
    "backgroundColor": "#FFFFFF",
    "borderStyle": "black",
    "list": [
      {
        "pagePath": "pages/home/index",
        "text": "首页",
        "iconPath": "static/tabbar/11.png",
        "selectedIconPath": "static/tabbar/12.png"
      },
      {
        "pagePath": "pages/services/index",
        "text": "服务",
        "iconPath": "static/tabbar/21.png",
        "selectedIconPath": "static/tabbar/22.png"
      },
      {
        "pagePath": "pages/forum/index",
        "text": "论坛",
        "iconPath": "static/tabbar/31.png",
        "selectedIconPath": "static/tabbar/32.png"
      },
      {
        "pagePath": "pages/profile/index",
        "text": "我的",
        "iconPath": "static/tabbar/41.png",
        "selectedIconPath": "static/tabbar/42.png"
      }
    ]
  },
  "globalStyle": {
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "校园生活平台",
    "navigationBarBackgroundColor": "#F8F8F8",
    "backgroundColor": "#F8F8F8"
  }
}

✅ 总结

至此,我们完成了:

● 项目的初始化

● 合理的目录结构划分

● 四个一级页面的创建

● 底部导航栏(TabBar)的配置

在下一篇中,我们将开始实现数据库搭建,请求方式的封装,后端的搭建

相关推荐
薛定谔的猫-菜鸟程序员7 分钟前
Electron开发超详细教程(从入门到放弃)
前端·javascript·electron
最强小杰29 分钟前
DeepSeek V4 Flash + Codex CLI 接入教程:原生 Responses API 适配,从配置到跑通收藏这篇就够了(2026)
java·前端·python·ai
静水leo1 小时前
使用 Whistle 拦截接口并模拟后端响应
前端
掘金者阿豪1 小时前
SQL Server数据迁移完成后,凌晨的数据库告警该怎么查?
前端·后端
小郎君6581 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
JudithHuang1 小时前
React 嵌套路由与布局
前端·react.js·arcgis·react·react router
htzyl2061 小时前
前端阶梯——第四十三章、实战二:待办清单To-Do
前端·javascript·html
yilaisai1 小时前
前端开发遇到的一些细节问题整理
vue.js
程序员大阳1 小时前
HTML+CSS+JS对话式实战(1)-开篇:认识我们要做的社团活动发布平台
javascript·css·html·实战·系统·平台·社团活动发布