内容简介:1 FHS V3介绍 优秀的国内快速开发平台非常多,FHS V2发布后我们单位内部也做了一番讨论,要不要坚持用自己的轮子,最终决定还是要做。一番讨论后,我们确定了以下几点目标: 全面拥抱vue,但是前端技术栈不求最新,...
1 FHS V3介绍
优秀的国内快速开发平台非常多,FHS V2发布后我们单位内部也做了一番讨论,要不要坚持用自己的轮子,最终决定还是要做。一番讨论后,我们确定了以下几点目标:
- 全面拥抱vue,但是前端技术栈不求最新,但求最快。
- 前端简单的页面使用JSON驱动,简单的CRUD功能代码就算是后端也能开发和维护
- 全面拥抱微服务,但是不能因为SpringCloud的引入带来很大的学习成本(我们的项目有一些新手和实习生在干)
- 提供AllInOne模式,本地开发实现只启动一个SpringBoot 应用即可完成开发调试,test prod环境又可以支持微服务模式部署(俺们单位还有部分机器是E3 1230V2+8G 内存)
- 把部分组件提出来作为单独的开源项目发布,因为我们接的很多项目甲方要求使用他们的平台,我们可以引入几个组件但是不能换平台
- 提供高级查询API,简单的单表查询不要让 程序员 手动写一行代码。
- 提供基础的组织,用户,角色,菜单,字典,日志,前后端代码生成器
- 在不增加学习成本的情况下,尽可能使用国产开源组件
2 FHS V3差异化
- 翻译组件
字典码 sex 0 需要翻译成男 给前端,userid 1 需要翻译成张三给前端,使用翻译组件,配合Mybatis Plus,无需自己写 SQL 加一个注解即可实现。
翻译组件支持一个项目多个数据源,以及跨微服务进行翻译,还支持传统的枚举翻译。
此组件已经单独开源:https://gitee.com/fhs-opensource/easy_trans
- 简化远程调用
Feign 做远程调用需要首先写一个service方法,然后用controller把service方法包一下,接着写一个feign接口,最后使用,而且对SpringCloud依赖性比较强,无法实现我们的All In One目标,我们希望把这个过程简化掉,于是EasyCloud模块出现了,只需要在service层加个注解就可以把普通的service方法暴漏出去给别人调用。
@CloudApi(serviceName="producer")//producer 是服务提供者的服务名称
public interface UserService {
@CloudMethod //加此注解意思是此方法提供给其他微服务调用
List<UserDto> listByIds(String[] ids);
}
我要使用的时候只需要依赖User微服务的接口和pojo,然后进行注入即可。
@Autowired
private UserService userService;
通过EasyCloud,我们的开发者只需要多记2个注解即可,没有额外学习成本,本组件已经单独抽离开源:https://gitee.com/fhs-opensource/easy_cloud
- JSON驱动VUE插件集-PAGEX
常年逛开源中国的开发者应该对avue和amis比较熟悉,他们的star数量就能看出越来越多的前端开发者已经接受了JSON驱动,我们对组件的理解是:高度抽象,搭配后台API设计规范,开发者通过JSON告诉组件,我需要一个下拉框/多选框/Other,你的数据绑定到表单对象的哪个属性上,你这个组件的数据源URL是什么,你这个组件数据校验规则是什么于是我们写一个下拉tree是如下代码:
{
type: "treeSelect",
name: "organizationId",
label: "部门",
rule: "required",
query: {},
api: '/basic/ms/sysOrganization/tree',
selectOn: (node) => {
this.changeRoleSelect(node.id);
}
}
又比如列表的过滤条件,我只需要告诉组件,我需要input,他的title是分组编码,对应字段是code,我需要模糊匹配。
filters: [
{label: '分组名称:', name: 'groupName', placeholder: "分组名称", type: 'text', operation: 'like'},
{label: '分组编码:', name: 'groupCode', placeholder: "分组编码", type: 'text', operation: '='}
]
配合高级查询API规范,需求变动加过滤字段,更改数据过滤操作符前端自己就搞了。当然我们也考虑了很多扩展,这里就不示例了。
一个JSON驱动的CRUD 的代码demo。 https://gitee.com/fhs-opensource/fhs-framework/blob/v3.x/vue_ui/src/views/system/dict/index.vue
- AllInOne 模式
all in one的好处是省内存,调试方便,在新建微服务的时候需要注意业务代码和springboot启动类分离开,比如我有用户中心,订单2个微服务,那么使用all in one需要user,userApp,order,orderApp,allinoneApp 这么几个子模块,其中spingboot相关依赖和配置放到userApp和orderApp上,业务代码和springcloud 相关类解耦即可。
- 高级查询API
高级查询API很多项目已经有了,配合前端PAGEX的CRUD组件,可以更简单灵活的构造列表查询参数。
{
"groupRelation": "AND",
"pagerInfo": {
"page": 1, //第几页,从1开始
"pageSize":10//每页多少条
},
"params": {},//扩展参数,具体要和后端约定
"querys": [
{
"group": "main",//分组
"operation": "=",//操作符
"property": "userName",//Java属性名
"relation": "AND",//是and 还是or
"value": "wanglei" // 属性username=wanglei的查询出来
}
],
"sorter": [
{
"direction": "ASC",//ASC 从小到大排序,DESC 从大到小排序
"property": "createTime"//排序的字段名
}
]
}
4 体验地址
http://82.157.62.164/login admin 123456
5 预览图
5 用到的国产组件集
- Mybatis Plus
- Sa-Token
- Validate-Springboot-Starter
-
SpringCloud Alibaba
-
ip2region
-
knife4j
以上所述就是小编给大家介绍的《Fhs 快速开发平台 V3 版本发布,拥抱 vue,拥抱微服务》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
高等应用数学问题的MATLAB求解
薛定宇、陈阳泉 / 清华大学出版社 / 2008-10 / 49.00元
薛定宇和陈阳泉编著的《高等应用数学问题的MATLAB求解》首先介绍了MATLAB语言程序设计的基本内容,在此基础上系统介绍了各个应用数学领域的问题求解,如基于MATLAB的微积分问题、线性代数问题的计算机求解、积分变换和复变函数问题、非线性方程与最优化问题、常微分方程与偏微分方程问题、数据插值与函数逼近问题、概率论与数理统计问题的解析解和数值解法等,还介绍了较新的非传统方法,如模糊逻辑与模糊推理、......一起来看看 《高等应用数学问题的MATLAB求解》 这本书的介绍吧!