本发明涉及互联网,特别涉及一种基于typescript装饰器的原生微信小程序开发方法。
背景技术:
1、随着互联网的发展,现在的业务已有原来的pc浏览器为用户操作载体转为了以手机app为载体,而原生的app无法满足跨平台的要求,如需要开发安卓客户端和ios客户端,多端开发使得企业成本增加,所以在几年的快速发展后,由于4g,5g网络的普及,使得h5开发日渐成为趋势。然而h5的开发虽然有天生跨平台的趋势,但体验却有所欠缺。小程序使用javascript弱类型语言编写,并通过options api的形式组织代码结构,使得小程序在开发规模较大、逻辑较为复杂的应用上代码组织较差,且缺乏类型约束,使得代码从可维护性、可读性、健壮性等都会受到原生开发方式的制约。
技术实现思路
1、本发明要解决的技术问题是提供一种基于typescript装饰器的原生微信小程序开发方法,以解决上述背景技术中的技术问题。
2、为了解决上述技术问题,本发明的技术方案为:
3、一种基于typescript装饰器的原生微信小程序开发方法,包括应用实例、页面实例、组件实例,拦截器模块,日志模块和事件总线模块的开发;
4、(1)应用实例通过@app装饰器作用于类,并创建当前类的实例作为微信小程序提供的原生app方法的入参,初始化整个应用唯一的实例;
5、(2)页面实例通过@page装饰器作用于页面逻辑处理部分的类上,并创建当前类的实例作为微信小程序提供的原生page方法的入参,构建当前页面的逻辑处理配置选项,为类中其他装饰器提供前置条件支持;
6、(3)组件实例通过@component装饰器作用于组件逻辑处理部分的类上,并创建当前类的实例作为微信小程序提供的原生component方法的入参,构建当前组件的逻辑处理配置选项,为类中其他装饰器提供前置条件支持;
7、拦截器模块、日志模块和事件总线模块根据业务开发过程灵活使用和调整。
8、进一步的,步骤2中的其它装饰器包括@data、@reactive、@observer、@computed、@onload装饰器。
9、进一步的,步骤3中的其它装饰器包括@prop、@data、@reactive、@externalclasses、@behaviors、@observers、@lifetimes、@pagelifetimes、@computed装饰器。
10、进一步的,拦截器模块通过内置提供的装饰器@autolog、@lock、@validate、@before分别对类中方法进行自动日志、防重点击、数据校验、前置拦截功能增强。
11、进一步的,日志模块通过@autolog装饰器添加在方法上,自动记录程序运行时发生的异常情况,记录到微信小程序后台日志模块。
12、进一步的,事件总线模块内置事件总线技术,解决页面与页面、组件与页面、组件与组件之间的通信问题。
13、本发明的优点:
14、本发明借鉴了前端流行框架vue和后端java语言中流行框架spring的部分设计思想,通过装饰器特性抽取和组合代码逻辑,通过声明式方式书写代码,框架底层通过转换最终符合微信小程序原生方法的标准,从而简化微信小程序的开发,优化代码组织结构,增加typescript中类型的支持,优化取值和赋值方式,从而减少代码冗余,提高代码的可读性,可维护性、可扩展性、健壮性及开发效率。
1.一种基于typescript装饰器的原生微信小程序开发方法,其特征在于:包括应用实例、页面实例、组件实例,拦截器模块,日志模块和事件总线模块的开发;
2.根据权利要求1所述的基于typescript装饰器的原生微信小程序开发方法,其特征在于:步骤2中的其它装饰器包括@data、@reactive、@observer、@computed、@onload装饰器。
3.根据权利要求2所述的基于typescript装饰器的原生微信小程序开发方法,其特征在于:步骤3中的其它装饰器包括@prop、@data、@reactive、@externalclasses、@behaviors、@observers、@lifetimes、@pagelifetimes、@computed装饰器。
4.根据权利要求2所述的基于typescript装饰器的原生微信小程序开发方法,其特征在于:所述拦截器模块通过内置提供的装饰器@autolog、@lock、@validate、@before分别对类中方法进行自动日志、防重点击、数据校验、前置拦截功能增强。
5.根据权利要求2所述的基于typescript装饰器的原生微信小程序开发方法,其特征在于:所述日志模块通过@autolog装饰器添加在方法上,自动记录程序运行时发生的异常情况,记录到微信小程序后台日志模块。
6.根据权利要求2所述的基于typescript装饰器的原生微信小程序开发方法,其特征在于:所述事件总线模块内置事件总线技术,解决页面与页面、组件与页面、组件与组件之间的通信问题。