以后端的思维优化VUE前端开发

引言

后端可以靠各种框架和技术整合好CRUD的逻辑,甚至让业务开发仅集中在数据库设计上。相比而言,作为一个前端技术,除了靠奋不顾身的加班以外,还是有不少的方法可以让你活得更轻松一点,这需要跳出前端的圈子,向后端的思维来学习。并且,没有哪个技术能够让你速度一下飞跃,只能通过不断的改进一点一滴的积累出来。

向spring学习

Spring有个神奇的功能,叫package scan,它可以让你在建立服务代码的同时,自动配置好对应的容器设置

前面我写过一篇【使用webpack的动态模块功能实现类似包扫描来简化配置】,阅读量很少。在后端,使用过spring的同学其实能很容易理解这种特性,它能让我们不用关心路由及各种配置,保证每个模块的配置和逻辑集中化。

使用它的好处,能让你忘记VUE还有个route配置这么个活,一切以约定为基础。新建一个路由管理下的页面只需要3步:

STEP 1

编写你的页面,例如Home.vue

STEP 2

将Home.vue放入你的逻辑页面目录下,记得要建立子目录,一般推荐扫描到二级目录,因为业务复杂情况下一定要按业务分目录的。所以,我把Home.vue放入pages/home目录

STEP 3

重启webpack(因为包扫描是依赖webpack的机制),此时在路由配置里就自动生成了一条以你文件名小写字符为name的路由(当然你也可以定义你自己的规则,例如用下划线+大写的模式),然后在你页面里就可以愉快的直接调用了:

router.push({name:'homeView', params:params});

状态变量

对于业务开发,会有不少变量会处于几个有限的不同状态里。典型的例如性别,分别为男、女和保密。Java后端最合适的就是枚举类型了,在整个编码过程中,定义统一的语义性质的枚举量,例如:

/**
 * 性别
 * @author 12755
 *
 */
public enum SexCodeEnum implements ICodeEnum{

    /**
     * 男士
     */
	MAN,
	/**
	 * 女士
	 */
	WOMAN,
	/**
	 * 保密、两者都使用(礼品用)
	 */
	SECRECY;

	
	public static SexCodeEnum fromCode(String code) {
		try {
			return values()[Integer.parseInt(code)];
		} catch (Exception e) {
			return null;
		}
	}

	@Override
	public String toCode() {
		return Integer.toString(this.ordinal());
	}

	@Override
	public List<ICodeEnum> valueList() {
		List<ICodeEnum> result = new ArrayList<ICodeEnum>();
		for(SexCodeEnum value: values()){
			result.add(value);
		}
		return result;
	}
}

这样在后端,在逻辑代码判断时使用Enum语义明确了,而前端呢?还要停留在"0"和"1"的“魔鬼数字”年代吗,同样的道理,为了重构,我们也可以考虑把后台的Enum“导入”到前台,我们可以写一个后台TestCase,通过模板技术,生成对应的js,甚至自动提交到前端的项目。这样一来,前端便有了方便使用的状态定义文档CodeEnum.js,类似这样:

/**
  使用模板生成的代码表
  用法:
  import CodeEnum from codeEnum.js;
  然后直接使用Enum例如 CodeEnum.UserStatCodeEnum.NORMAL;
  generate at 2019-12-5 8:52:21
*/

const CodeEnum = {
	AccountTypeCodeEnum: {
	CREDITS: '0',
	PRE_DEPOSIT: '1',
	},
	SexCodeEnum: {
	MAN: '0',
	WOMAN: '1',
	SECRECY: '2',
	},
}

CodeEnum.enumToText = ((enumValue, enumClass, enumTexts) =>{
    const enumTextsArray = enumTexts.split(',');
    let result = '';

    const EnumObj = CodeEnum[enumClass];
    if(EnumObj !== undefined){
        Object.keys(EnumObj).forEach((key) => {
            if(EnumObj[key] === enumValue){
                result = enumTextsArray[parseInt(EnumObj[key])];
            }
        });
	}
    return result;
});

export default CodeEnum;

当然还配上一个状态转换的工具方法,省去了前端同学写switch或if的烦恼(基于顺序对应的规则)。

 

除了这些,我还做了例如srping的RequestMapping定义导出的工具等,这样一点点自动化的积累,让前端的开发效率一点点的提升起来。而且,让维护更加高效,再也不怕命名重构。

 

工具篇

只会写代码的程序员只能叫码农

当技术达到一定的高度时,能够为业务再次提升的能力就会逐渐变少,那么我们不如跳出技术本身,来改善业务周边的工具平台,同样来为业务服务。作为一名架构师,要有这种能力。 

这里就要提一下java后端业界用的比较多的工具swagger,它可以生成你需要提交的业务数据结构。这样一来,你在页面需要绑定的数据结构就可以直接复制下来了,省心而且不会出错,当然要删除一些不关心的变量(例如里面有个乐观锁变量),但是至少做删除会比添加复制会省心许多。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值