介绍
BaseCloud是一套基于uniapp、uniCloud、uni-id的全栈开发框架,内置UI样式库、组件库、云函数公用模块、客户端缓存管理机制、管理后台项目模板、内置云函数路由、拦截器、角色菜单权限、操作日志等已经写好的业务功能,且还在长期维护更新中。
上线时间
2020-06-21:1.0版本 —— 2020-09-11:1.6.6版本
运营方式
gitee+npm+dcloud插件市场,完整开源
特色亮点
登录及权限设置,角色和用户管理,自定义权限菜单,APP版本更新模块,手机号码注册模块,统一下单支付模块。
亲测
我用uniapp开发过几款APP,都是自己单独写后台接口,但没有用过dcloud,刚好最近有新项目开发,借此机会在实战中学习使用dcloud,了解到这个框架也是看到《DCloud2020插件开发大赛》,BaseCloud获得二等奖,能获奖的框架不多,应该有一定的价值,闲话少说直接下载项目看文档。
文档并不复杂,对照“快速开始”章节,几分钟就把项目下载并且运行跑了起来
问题1:db_init 初始化有一个报错,但是并不影响程序运行。
后来问了一下,说是dcloud云函数的一个bug。
问题2:架构没有解耦分离出核心,包含pages的项目就是整个框架。
包括自带的一些组件库:layout、auth,内部提供的函数:this.bcc.getFirstSubMenuPages,都依赖setStorageSync(“menuList”),需要提前存入数据才能正常使用。
问题3:写法不统一,同样功能多种写法。
比如自带的3个业务文件夹 admin、api、curl,的入口index.js,就能看到3种不同写法;
以及同一个controller文件夹下的menu.js 和 user.js,头部公用const变量写法也不统一;
问题4:业务模块未明确分层,功能耦合
比如登录后,需要获取globalData数据包含user和menulist的2个数据,却直接写在了admin/menu层,而user包含的字段也与官网文档介绍不一致。只提供了部分username、realNameAuth、mobile、comment、avatar 5个字段,并未提供整个user表信息返回。
问题5:权限分配偏后端,拦截器需要手动修改核心配置项
比如后台添加非管理员用户登录后,受到权限拦截,无法调用 admin/myInfo 获取自己的用户信息。手动修改云函数公共模块的authInter.js才可以进行配置拦截器;需要特别注意的是,如果在业务模块云函数入口,比如admin/index.js中用 baseCloud.setInters 方法来设置局部拦截规则,会覆盖authInter.js的全局拦截规则。
点评
能看出来,框架作者花了不少精力和心思来设计这样一个框架,也有想做大做全的野心,虽然没有什么大问题,但目前尚处于一个刚起步的阶段,不推荐在重要的项目中直接应用这个框架,拿来练手绝对没问题,也可以在目前框架的基础上开发一个自己的框架,拿来当基础是再合适不过了。
项目地址