BudaOS Frontend 包含两个独立部署的前端应用:
| 项目 | 名称 | 说明 | 端口 |
|---|---|---|---|
budaos-evgl-web |
布道师学习通 | 面向学生/教师的教学门户 | 8888 |
budaos-mgr-web |
教务管理端 | 后台管理系统 | 8889 |
| 类别 | 技术选型 |
|---|---|
| 核心框架 | Vue 2.6 + Vue Router 3 + Vuex 3 |
| UI 组件库 | Element UI 2.13 |
| HTTP 客户端 | Axios |
| 富文本编辑 | TinyMCE 5 / Quill |
| 构建工具 | Webpack 3 |
| 样式预处理 | Sass/SCSS |
| 代码规范 | ESLint |
| 图表库 | ECharts / v-charts |
| 地图组件 | Vue Baidu Map |
budaos-web/
├── budaos-evgl-web/ # 布道师学习通(教学门户)
│ ├── build/ # Webpack 构建配置
│ ├── config/ # 环境配置
│ ├── src/
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 公共组件
│ │ ├── http/ # API 请求封装
│ │ │ ├── api.js # API 接口定义
│ │ │ ├── axios.js # Axios 配置
│ │ │ └── config.js # 请求配置
│ │ ├── mock/ # Mock 数据
│ │ ├── router/ # 路由配置
│ │ ├── store/ # Vuex 状态管理
│ │ ├── utils/ # 工具函数
│ │ ├── views/ # 页面组件
│ │ ├── App.vue # 根组件
│ │ └── main.js # 入口文件
│ └── package.json
│
├── budaos-mgr-web/ # 教务管理端
│ ├── build/ # Webpack 构建配置
│ ├── config/ # 环境配置
│ ├── src/
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 公共组件
│ │ ├── http/ # API 请求封装
│ │ ├── i18n/ # 国际化配置
│ │ ├── mock/ # Mock 数据
│ │ ├── permission/ # 权限控制
│ │ ├── router/ # 路由配置
│ │ ├── store/ # Vuex 状态管理
│ │ ├── utils/ # 工具函数
│ │ ├── views/ # 页面组件
│ │ ├── App.vue # 根组件
│ │ └── main.js # 入口文件
│ └── package.json
│
└── README.md
- 首页门户:课程推荐、新闻动态、博客文章
- 教学中心:课堂管理、课程学习、作业提交
- 活动中心:签到、头脑风暴、投票问卷、在线测试
- 资源中心:课程资源、云盘文件管理
- 社区互动:博客论坛、好友系统、学习圈
- 个人中心:个人信息、学习记录、我的书架
- 即时通讯:私信聊天、群组讨论
- 系统管理:用户管理、角色权限、菜单配置
- 教学管理:专业管理、教材管理、课程管理
- 班级管理:班级设置、学生管理、成绩管理
- 资源管理:站点资源、素材管理
- 问答中心:题库管理、试卷管理
- 数据统计:多维度数据看板
| 软件 | 版本要求 |
|---|---|
| Node.js | >= 6.0.0 (推荐 12+) |
| npm | >= 3.0.0 (推荐 6+) |
# 克隆项目
git clone https://github.com/budaos/budaos-web.git
cd budaos-web
# 安装学习通前端依赖
cd budaos-evgl-web
npm install
# 或安装管理端依赖
cd ../budaos-mgr-web
npm install💡 提示:推荐使用 yarn 或 cnpm 安装依赖以提高速度
# 启动学习通前端
cd budaos-evgl-web
npm run dev
# 或启动管理端
cd budaos-mgr-web
npm run dev启动后访问:
*教务管理、用户管理、数据统计* *课程学习、作业考试、社区互动* ### 生产环境构建# 学习通构建
cd budaos-evgl-web
npm run build:prod
# 管理端构建
cd budaos-mgr-web
npm run build:prod学习通 (budaos-evgl-web/config/index.js):
const API_TARGET = process.env.API_TARGET || 'http://localhost:9080'管理端 (budaos-mgr-web/config/index.js):
const BASE_API = process.env.BASE_API || 'http://localhost:9080'| 环境 | 命令 | 说明 |
|---|---|---|
| 开发环境 | npm run dev |
使用 dev 环境配置 |
| 测试环境 | npm run build:test |
使用 test 环境配置 |
| 生产环境 | npm run build:prod |
使用 prod 环境配置 |
项目已配置 API 代理,开发环境下请求会自动转发到后端服务器:
// 学习通代理路径
const apiPaths = [
'/evgl', '/login-api', '/classroom-api',
'/managementPanel-api', '/pkginfo-api',
'/resourceCenter-api', '/examCenter-api',
// ... 更多路径
]src/
├── components/ # 公共组件
│ ├── common/ # 通用组件
│ │ └── MyComponent.vue
│ └── business/ # 业务组件
│ └── BizComponent.vue
│
├── views/ # 页面组件
│ ├── moduleName/ # 按模块分组
│ │ ├── List.vue # 列表页
│ │ ├── Detail.vue # 详情页
│ │ └── Edit.vue # 编辑页
│ └── index.vue
│
└── http/ # 接口请求
└── modules/ # 按模块管理接口
├── user.js
└── order.js
| 类型 | 规范 | 示例 |
|---|---|---|
| 组件文件 | PascalCase | UserInfo.vue |
| 工具函数 | camelCase | formatDate.js |
| 样式类名 | kebab-case | .user-info |
| 常量 | UPPER_SNAKE_CASE | MAX_COUNT |
| 依赖 | 版本 | 用途 |
|---|---|---|
| vue | 2.6.11 | 核心框架 |
| element-ui | 2.13.2 | UI 组件库 |
| vue-router | 3.5.1 | 路由管理 |
| vuex | 3.5.1 | 状态管理 |
| axios | 0.19.0 | HTTP 客户端 |
| echarts | 4.8.0 | 图表库 |
| tinymce | 5.2.2 | 富文本编辑器 |
| vue-cropper | 0.5.6 | 图片裁剪 |
| screenfull | 4.2.1 | 全屏切换 |
| v-charts | 1.19.0 | 可视化图表 |
| 依赖 | 版本 | 用途 |
|---|---|---|
| vue | 2.5.2 | 核心框架 |
| element-ui | 2.9.1 | UI 组件库 |
| vue-router | 3.0.1 | 路由管理 |
| vuex | 3.0.1 | 状态管理 |
| axios | 0.18.0 | HTTP 客户端 |
| vue-i18n | 8.0.0 | 国际化 |
| quill | 1.3.6 | 富文本编辑器 |
- 在
src/views/下创建页面组件 - 在
src/router/index.js中配置路由 - 添加权限标识(如需要)
// router/index.js
{
path: '/example',
name: 'Example',
component: () => import('@/views/example/index'),
meta: { title: '示例页面', requireAuth: true }
}// http/modules/example.js
import axios from '@/http/axios'
export function getList(params) {
return axios({
url: '/evgl/example/list',
method: 'get',
params
})
}
export function save(data) {
return axios({
url: '/evgl/example/save',
method: 'post',
data
})
}<template>
<div class="my-component">
<!-- 组件内容 -->
</div>
</template>
<script>
export default {
name: 'MyComponent',
props: {
value: {
type: String,
default: ''
}
},
data() {
return {}
},
methods: {}
}
</script>
<style lang="scss" scoped>
.my-component {
// 样式
}
</style>解决方案:
- 清除缓存:
npm cache clean --force - 使用淘宝镜像:
npm install --registry=https://registry.npmmirror.com - 或使用 yarn:
yarn install
项目已配置开发服务器代理,生产环境需配置 Nginx 反向代理:
location /evgl {
proxy_pass http://backend-server:9080;
}- 创建环境文件:
config/env.xxx.js - 在
package.json添加构建命令 - 在 Webpack 配置中添加对应的环境变量
本前端项目配套 BudaOS Monolith 后端使用:
| 前端端口 | 后端端口 | 说明 |
|---|---|---|
| 8888 | 9080 | 学习通 |
| 8889 | 9080 | 管理端 |
部署时需确保:
- 后端服务已启动
- API 地址配置正确
- 跨域配置已开启
本项目采用 Apache License 2.0 开源协议。
| 项目 | 说明 |
|---|---|
| BudaOS Monolith | 后端单体架构 |
| BudaOS Mini Program | 微信小程序端 |
如果这个项目对您有帮助,欢迎 Star!
- 源码授权(永久使用)
- 架构设计咨询
- 部署实施指导
- 技术培训服务
- 持续版本升级
- 专属技术支持
📞 有意向?请联系我们获取详细的解决方案和报价
官网:www.budaos.com | 邮箱:contact@budaos.com
开源不易,如果这个项目对您有帮助,欢迎通过以下方式支持我们:
| 方式 | 说明 |
|---|---|
| ☕ 喝杯咖啡 | 一杯咖啡,一份鼓励 |
| 💝 任意打赏 | 量力而行,感恩有你 |
![]() |
捐赠时请备注「BudaOS 开源支持」,您的名字将出现在致谢名单中(可选)。
您的每一份捐赠都是对我们最大的鼓励,让我们能够持续维护和迭代开源项目,为社区提供更好的教育资源平台。
本项目采用 Apache License 2.0 开源协议。
- ✅ 可免费用于个人学习、企业内部培训
- ✅ 可用于商业项目,打造自有品牌的教育平台
- ✅ 支持深度二次开发,定制专属功能
- ✅ 支持私有化部署,数据完全自主可控
⚠️ 需要保留版权声明和 LICENSE 文件



