Fhs 快速开发平台 V3 版本发布,拥抱 vue,拥抱微服务

栏目: 软件资讯 · 发布时间: 4年前

内容简介:1 FHS V3介绍 优秀的国内快速开发平台非常多,FHS V2发布后我们单位内部也做了一番讨论,要不要坚持用自己的轮子,最终决定还是要做。一番讨论后,我们确定了以下几点目标: 全面拥抱vue,但是前端技术栈不求最新,...

1 FHS V3介绍

   优秀的国内快速开发平台非常多,FHS V2发布后我们单位内部也做了一番讨论,要不要坚持用自己的轮子,最终决定还是要做。一番讨论后,我们确定了以下几点目标:

  •   全面拥抱vue,但是前端技术栈不求最新,但求最快。
  •   前端简单的页面使用JSON驱动,简单的CRUD功能代码就算是后端也能开发和维护
  •   全面拥抱微服务,但是不能因为SpringCloud的引入带来很大的学习成本(我们的项目有一些新手和实习生在干)
  •   提供AllInOne模式,本地开发实现只启动一个SpringBoot 应用即可完成开发调试,test prod环境又可以支持微服务模式部署(俺们单位还有部分机器是E3 1230V2+8G 内存)
  •   把部分组件提出来作为单独的开源项目发布,因为我们接的很多项目甲方要求使用他们的平台,我们可以引入几个组件但是不能换平台
  •   提供高级查询API,简单的单表查询不要让 程序员 手动写一行代码。
  •   提供基础的组织,用户,角色,菜单,字典,日志,前后端代码生成器
  •   在不增加学习成本的情况下,尽可能使用国产开源组件

   Fhs 快速开发平台 V3 版本发布,拥抱 vue,拥抱微服务

2 FHS V3差异化

  •    翻译组件 

       Fhs 快速开发平台 V3 版本发布,拥抱 vue,拥抱微服务

        字典码 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 预览图

Fhs 快速开发平台 V3 版本发布,拥抱 vue,拥抱微服务

5 用到的国产组件集

  • Mybatis Plus
  • Sa-Token
  • Validate-Springboot-Starter
  • SpringCloud Alibaba

  • ip2region

  • knife4j


以上所述就是小编给大家介绍的《Fhs 快速开发平台 V3 版本发布,拥抱 vue,拥抱微服务》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Nine Algorithms That Changed the Future

Nine Algorithms That Changed the Future

John MacCormick / Princeton University Press / 2011-12-27 / GBP 19.95

Every day, we use our computers to perform remarkable feats. A simple web search picks out a handful of relevant needles from the world's biggest haystack: the billions of pages on the World Wide Web.......一起来看看 《Nine Algorithms That Changed the Future》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器