一种应用程序开发方法及其工具、设备与流程

文档序号:11677285阅读:206来源:国知局
一种应用程序开发方法及其工具、设备与流程

本发明涉及移动应用技术,尤其涉及一种应用程序开发方法及其工具、设备。



背景技术:

随着终端技术和移动互联网技术的发展,如手机、平板电脑等终端上安装的移动应用(ma,mobileapplication)越来越多,例如即时通讯类应用、娱乐应用、新闻应用、游戏类应用、金融类应用、益智类应用、学习类应用、支付类应用、搜索类应用、生活便利类的应用。用户想要享用某种服务例如向商家付款,那么用户首先得安装具有支付功能的应用,然后打开应用享用服务,这种需要安装才能享用服务的方式越来越不适合快速、便捷和共享的生活理念。

目前,知识、信息类的轻量化产品的共享可最大范围的共享和受益,出行共享、服务共享、实体经济的共享则会受到一定的地域或者时间的限制,此类服务性共享则需要寻找一个虚拟的节点,在这种情况下,小程序应运而生,小程序正是为快速、便捷和共享提供一种虚拟节点,这样便通过互联网的连接完成了广泛地共享。小程序让这种服务共享变为一种信息而变得唾手可得,将服务和小程序连接起来,若即若离,既远离了本身内容生态,又和用户连接在一起为用户服务,此种模式可以成为一种轻型的线上到线下(o2o,onlinetooffline)服务,排除主程序如微信等臃肿的同时,实现了服务共享。

小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一搜即可打开应用。由于小程序本身并不需要安装和卸载,所以小程序也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。小程序的出现使得应用将无处不在,随时可用,但又无需安装卸载。

基于上述小程序的这些优点,小程序已经变得炙手可热,然而小程序的开发却依然处于一个人工编写小程序所需要的各个文件(例如脚本语言(js,javascript)文件和javascript对象表示法(json,javascriptobjectnotation)文件)的阶段,因此导致小程序的开发非常耗时和费力。



技术实现要素:

有鉴于此,本发明实施例为解决现有技术中存在的至少一个问题而提供一种应用程序(小程序)开发方法及其工具、设备,能够解决目前应用程序开发的耗时和费力问题,从而快速便捷的开发应用程序。

本发明实施例的技术方案是这样实现的:

第一方面,本发明实施例提供一种应用程序开发方法,所述方法包括:

获取预定格式的输入文件,所述输入文件中包括用于组成所述应用程序各部分的内容代码;

将所述输入文件中的每一部分的内容代码按照对应的预设的类别拆解为不同的类别代码;

按照每一所述类别代码的属性调用对应的编译器对所述类别代码进行编译,对应地得到每一所述类别代码的描述文件;

将每一部分的所述类别代码的描述文件进行插件处理,得到所述应用程序。

第二方面,本发明实施例提供一种应用程序开发工具,所述工具包括获取单元、拆解单元、编译单元和处理单元,其中:

所述获取单元,用于获取预定格式的输入文件,所述输入文件中包括用于组成所述应用程序各部分的内容代码;

所述拆解单元,用于将所述输入文件中的每一部分的内容代码按照对应的预设的类别拆解为不同的类别代码;

所述编译单元,用于按照每一所述类别代码的属性调用对应的编译器对所述类别代码进行编译,对应地得到每一所述类别代码的描述文件;

所述处理单元,用于将每一部分的所述类别代码的描述文件进行插件处理,得到所述应用程序。

第三方面,本发明实施例提供一种应用程序开发设备,所述设备包括存储介质和处理器,其中:

存储介质,配置为存储计算机可执行指令;

处理器,配置为执行存储的计算机可执行指令,所述计算机可执行指令包括:

获取预定格式的输入文件,所述输入文件中包括用于组成所述应用程序各部分的内容代码;

将所述输入文件中的每一部分的内容代码按照对应的预设的类别拆解为不同的类别代码;

按照每一所述类别代码的属性调用对应的编译器对所述类别代码进行编译,对应地得到每一所述类别代码的描述文件;

将每一部分的所述类别代码的描述文件进行插件处理,得到所述应用程序。

本发明实施例提供一种应用程序开发方法及其工具、设备,其中,获取预定格式的输入文件,所述输入文件中包括用于组成所述应用程序各部分的内容代码;将所述输入文件中的每一部分的内容代码按照对应的预设的类别拆解为不同的类别代码;按照每一所述类别代码的属性调用对应的编译器对所述类别代码进行编译,对应地得到每一所述类别代码的描述文件;将每一部分的所述类别代码的描述文件进行插件处理,得到所述应用程序,如此,能够解决目前应用程序开发的耗时和费力问题,从而快速便捷的开发应用程序。

附图说明

图1为本发明实施例应用程序开发方法的实现流程示意图;

图2为本发明实施例基类关系图;

图3为本发明实施例文件目录结构与现有目录结构的对比结果示意图;

图4-1为本发明实施例输入文件的编译过程示意图;

图4-2为本发明实施例组件的编译过程示意图;

图4-3为本发明实施例广播事件的传递流程示意图;

图4-4为本发明实施例冒泡事件的传递流程示意图;

图4-5为本发明实施例应用程序开发工具的应用示意图;

图5为本发明实施例应用程序开发工具的组成结构示意图;

图6为本发明实施例应用程序开发设备的组成结构示意图;

图7为本发明实施例中计算设备的一种硬件实体示意图。

具体实施方式

小程序(miniprogram),例如微信小程序,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。目前用户在做小程序开发时会遇到以下问题:

1)目前小程序中没有组件化的概念,只能通过模块化和模板去实现的伪组件化,伪组件化的缺陷在于复用成本高,而且伪组件相互之间没有隔离;由于组件之间没有隔离,所以在修改某一组件的时候可能会导致其他具有依赖关系(关联关系)的组件不可用,本发明实施例基于隔离的组件提供的一种小程序开发方法或工具。

2)目前在开发小程序的时候无法自动使用海量的外部资源,例如第三方节点包管理器(npm,nodepackagemanager)资源,原因在于,一般的npm资源是针对传统的web页面开发的,而小程序本身与传统的web页面是不一样的,所以导致无法直接使用;如果开发者想要使用npm资源,只能通过手动下载和手动拷贝的方式使用npm上的代码;对于依赖复杂的npm资源,手动下载和手动拷贝的方式就无能为力了。本发明实施例中,将自动处理npm资源之间的依赖关系(以关联信息体现的关联关系),然后在编译过程中,自动处资源之间依赖关系并且拷贝文件,解决了目前小程序开发过程中无法引入第三方的npm资源的问题。

3)小程序每一部分内容都有好几份文件,例如应用部分对应有三种文件,而应用部分对应有四种文件,而小程序中的页面部分一般包括多个页面,例如某一小程序包括5个页面,而每一页面都对应有四种文件,那么开发目录中的页面部分将包括20个文件,所以,文件过多会导致代码目录结构混乱,本实施例中通过组件模式将每一页面仅对应于一个预定格式的文件,这样从效果上看,原来每一页面的四种文件被打包在一起,可以避免代码目录结构混乱的问题。另外,小程序开发不能像传统web开发一样,引入一些新的特性或是规范。本方案通过编译可以解决这个问题。

为了更好地理解本发明以下的各实施例,这里对部分名词解释如下:

web:是一种访问网络上信息资源的协议和标准的集成,即web是在网络上提供的一种服务。

模块:web开发中,将逻辑代码封装一个个单独集合。

组件:web开发中,将超级文本标记语言(hmtl,hypertextmarkuplanguage)4和html5页面元素样式与逻辑封装成一个单独的集合。

npm资源:由其他人开发并共享的模块资源,npm常称为节点(node)包管理器,顾名思义,npm的主要功能就是管理node包,其中管理包括:安装、卸载、更新、查看、搜索、发布等。

小程序的应用部分和小程序的页面部分:小程序一般至少包括应用部分和页面部分,其中应用部分一般可以包括两种文件或三种文件,两种文件为app.json和app.js,三种文件分别为app.json、app.js和app.wxss;页面部分一般包括三种或四种文件,三种文件为index.json、index.js和index.wxss,这四种文件分别为index.json、index.js、index.wxml和index.wxss。需要说明的是,.json可以嵌套在.js中,即在分类中可以将.json不单独拆分出来,而是归纳在.js中这样,应用部分拆分的三种文件即为两种文件app.js和app.wxss,页面部分拆分的三种或四种文件分别对应为两种或三种。其中,.js表示逻辑代码,.json表示配置代码,json采用完全独立于语言的文本格式,但是也使用了类似于c语言家族的习惯(包括c、c++、c#、java、javascript、perl、python等)。

.wxss表示样式表代码,其中wxss表示微信样式表(weixinstylesheets)wxss是一套样式语言,用于描述微信标记语言的组件样式,即wxss用来决定wxml的组件应该怎么显示。为了适应广大的前端开发者,wxss具有层叠样式表(css,cascadingstylesheets)大部分特性,同时为了更适合开发微信小程序,wxss对css进行了扩充以及修改,例如wxss与css相比,扩展的特性有尺寸单位和样式导入。

css,是一种用来表现标准通用标记语言的一个应用或xml(标准通用标记语言的一个子集等文件样式的计算机语言。css不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。css能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,例如,css可以扩展html的显示功能,可以把原来的html文件,像是文字的颜色、字体、大小、宽度、边界和对齐都可以去设定,css可以轻松而又有效地对页面的整体布局、字体、颜色、链接和背景进行更加精确的控制。

.wxml表示结构代码,wxml是微信标记语言(weixinmarkuplanguage)的缩写,wxml是基于网络应用程序框架(apachemina)框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。

基于以上概念,在本发明的各实施例中,将输入文件拆解为样式、页面元素、逻辑功能、配置,然后再通过编译手段将组件拆分为小程序所需要的wxml、wxss、js、json文件,同时在编译过程中自动识别组件完成组件之间的隔离工作。

下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。

为了解决背景技术中存在的问题,本发明实施例提供一种应用程序开发方法,应用于计算设备,该应用程序开发方法所实现的功能可以通过计算设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该计算设备至少包括处理器和存储介质。

图1为本发明实施例应用程序开发方法的实现流程示意图,如图1所示,该方法包括:

步骤s101,获取预定格式的输入文件,所述输入文件中包括用于组成所述小程序各部分的内容代码;

本实施例中,所述小程序可以为应用于一母体应用程序上的子体应用程序。

本实施例中,所述输入文件可以是用户手动编写的代码,也可以是自动生成的代码,其中手动编写的代码包括用户一行一行写的出来的代码,还包括用户从第三方的外部资源例如npm资源上通过手动下载和手动拷贝的方式得到的npm上的代码。

本实施例中,预定格式可以是本领域的技术人员自行设定的格式,例如de格式或者wpy或者其他格式,需要说明的是,由于输入文件需要被拆解为小程序每一部分的内容代码所对应的文件类型,那么在设定格式的时候还需要考虑拆解的便利性和难度,作为一种降低拆解难度以及提供便利性的预设格式,可以采用wpy格式,即输入文件为wpy格式的。

本实施例中,小程序至少包括应用部分和页面部分,那么输入文件中至少包括应用部分的内容代码和页面部分的内容代码。

步骤s102,将所述输入文件中的每一部分的内容代码按照对应的预设的类别拆解为不同的类别代码;

本实施例中,如前所述,小程序的每一部分都对应有几种文件,例如应用部分包括三种文件,这三种文件分别为app.json、app.js和app.wxss,页面部分一般包括四种文件,这四种文件分别为index.json、index.js、index.wxml和index.wxss。那么在步骤s102中需要将小程序的应用部分拆解为三种不同的类别代码,即这三种类别代码可以分别对应为app.json、app.js和app.wxss,将页面部分拆解为四种不同的类别代码,即这四种类别代码可以分别对应为index.json、index.js、index.wxml和index.wxss。

步骤s103,按照每一所述类别代码的属性调用对应的编译器对所述类别代码进行编译,对应地得到每一所述类别代码的描述文件;

本实施例中,针对不同的类别代码调用对应的编译器对类别代码进行编译,然后得到该类别代码的描述文件,例如,四种类别代码分别对应的编译器为第一、第二和第三编译器集合,那么对类别代码.json进行编译时,可以利用第一编译器集合中编译器对对类别代码.json进行编译,得到小程序的描述文件.json。

步骤s104,将每一部分的所述类别代码的描述文件进行插件处理,得到所述小程序。

本实施例中,插件处理的效果是对文件的内容进行了处理,所以内容上有变化,而文件的个数和后缀、格式是没有变化。插件处理一般包括文件压缩、代码中变量的替换,内容混淆、图片压缩、图片清晰度的改变和图片尺寸的改变等等。。

在本发明的其他实施例中,所述输入文件至少包括应用部分的内容代码和页面部分的内容代码,步骤s102,所述将所述输入文件中的每一部分的内容代码按照对应的预设的类别拆解为不同的类别代码,包括:

对于应用部分的内容代码来说,将所述应用部分的内容代码至少拆解为脚本代码;对于页面部分的内容代码来说,将所述页面部分中的每一页面的内容代码至少拆解为样式代码、页面元素代码和脚本代码。

本发明实施例中,为了降低拆解难度,在拆解的时候采用分层次进行拆解,第一层次拆解时,先将配置代码和逻辑代码拆解为一个整体,然后,第二层次拆解时,再将逻辑代码和配置代码拆解开,即第一层次的拆解中可以将配置代码不单独拆分出来,而是归纳在逻辑代码中;这样,在最简单的拆解过程中,应用部分只拆解为逻辑代码,即只对应一种描述文件(.js),而页面部分可以拆解为样式代码、页面元素代码和脚本代码,即对应有三种描述文件.js、.wxml和.wxss。

在本发明的其他实施例中,所述按照每一所述类别代码的属性调用对应的编译器对所述类别代码进行编译,对应地生成每一所述类别代码的描述文件,包括:调用分别与样式代码、页面元素代码、逻辑代码和配置代码调用对应的编译器,分别对应地对每一页面的所述样式代码、页面元素代码、逻辑代码和配置代码进行编译,分别对应地得到每一页面的样式表文件、页面结构文件、逻辑文件和配置文件。

例如,调用预设的第一编译器集合中的编译器对所述样式代码进行编译,生成样式表的描述文件;调用预设的第二编译器集合中的编译器对所述页面元素代码进行编译,生成页面结构的描述文件;调用预设的第三编译器集合中的编译器对所述逻辑代码进行编译,生成逻辑的描述文件。其中,第一编译器集合包括css、less、sass、stylus等编译器,第二编译器集合包括wxml、pug等编译器,第三编译器集合包括babel、typescript等编译器。一般来说,配置代码是不需要进行编译的,所以无需对应的编译器。

为了解决目前在开发小程序的时候无法自动使用海量的外部资源问题:例如第三方npm资源,原因在于,一般的npm资源是针对传统的web页面开发的,而小程序本身与传统的web页面是不一样的,所以导致无法直接使用;如果开发者想要使用npm资源,只能通过手动下载和手动拷贝的方式使用npm上的代码;对于依赖复杂的npm资源,手动下载和手动拷贝的方式就无能为力了。本发明实施例中,将从两方面进行改善,第一方面是自动从外部资源上获取内容代码,第二方面是将自动处理npm资源之间的依赖关系(以关联信息体现的关联关系),然后在编译过程中,自动处资源之间依赖关系并且拷贝文件,解决了目前小程序开发过程中无法引入第三方的npm资源的问题。

第一方面,在本发明的其他实施例中,步骤s101,所述获取预定格式的输入文件,包括:

步骤s111,根据确定的关键词从资源库检索内容代码,至少加载检索的内容代码;

本实施例中,关键词是用于检索输入文件中的内容代码的,例如关键词可以为实现相册功能、调用全球定位系统(gps)、调用支付应用、开启摄像头、开启扫码等功能的内容代码,用户输入某种关键词,计算设备就会从资源库中检索该功能对应的内容代码,然后向资源库的远程服务器请求内容代码或向资源库的本地数据库请求内容代码,然后加载检索的内容代码。

本实施例中,资源库可以为节点包管理器资源、本地数据库中的资源。

步骤s112,按照预设格式对所述内容代码进行格式转换,得到预定格式的输入文件。

第二方面,在本发明的其他实施例中,所述方法还包括:

步骤s201,分析所述输入文件中每一部分的内容代码,得到每一部分中各模块之间的关联信息;

步骤s202,确定每一部分中各模块的路径信息;

本实施例中,模块的路径信息一般是指本地的存储路径。

步骤s203,根据每一部分中各模块之间的关联信息和每一部分中各模块的路径信息修改所述输入文件中的路径信息;

步骤s204,对修改后的所述输入文件中的每一部分的内容代码按照对应的预设的类别拆解为不同的类别代码。

本发明实施例中,为了解决目前小程序中没有组件化的概念这一问题:目前小程序只能通过模块化和模板去实现的伪组件化,伪组件化的缺陷在于复用成本高,而且伪组件相互之间没有隔离;由于组件之间没有隔离,所以在修改某一组件的时候可能会导致其他具有依赖关系(关联关系)的组件不可用,本发明实施例基于隔离的组件提供的一种小程序开发方法或工具,即在实施例中的资源库中包括基类组件、基类页面和基类应用三类基类资源,其中,各基类组件之间相互隔离,基类页面继承自组件;对应地,步骤s111,所述根据确定的关键词从资源库检索内容代码,至少加载检索的内容代码,包括:根据确定的关键词从资源库检索基类组件、基类页面和基类应用;至少加载检索的基类组件、基类页面和基类应用;

步骤s112,所述按照预设格式对所述内容代码进行格式转换,得到预定格式的输入文件,包括:将检索的基类组件重组为自定义组件,将检索到的基类页面和用户组件重组为自定义页面,将检索到的基类应用和自定义页面重组为自定义应用;按照预设格式分别对自定义组件、自定义页面和自定义应用进行格式转换,得到预定格式的输入文件。

图2为本发明实施例基类关系图,如图2所示,本发明实施例提供三个基础支持的基类,分别为组件(component)基类、页面(page)基类和应用(app)基类等,其中基于页面也是组件的原则,所以页面基类也是继承自组件基类。在图2中,实心小三角箭头表示继承关系,而空心的菱形表示组成关系,线性箭头表示包括关系。用户定义的组件和页面均继承自这些基类,例如,用户定义的app208继承自基类app203,其中包含两个继承自page202的页面page1206、page2207。其中page1206中又包含两个继承自component201的组件com1204、com2205。需要说明的是,由于各基类组件之间相互隔离,那么在基于上述基类而完成的小程序在进行组件间的通信和绑定功能时,也是与通常的小程序不一样的,在下面的实施例中将介绍组件间的通讯和绑定功能。

为了解决目前小程序目录结构混乱的问题:小程序每一部分内容都有好几份文件,例如应用部分对应有三种文件,而应用部分对应有四种文件,而小程序中的页面部分一般包括多个页面所以,文件过多会导致代码目录结构混乱,本实施例中通过组件模式将每一页面仅对应于一个预定格式的文件,这样从效果上看,原来每一页面的四种文件被打包在一起,这样可以避免代码目录结构混乱的问题。本实施例中,所述方法还包括:

步骤s105,将每一页面的内容代码(即代码文件)按照所述预定格式形成输入文件的每一页面。

对于页面部分而言,即将页面部分每一页面仅以一个预设格式的文件来表示。图3为本发明实施例开发文件目录结构与现有的开发目录结构的对比结果示意图,如图3所示,左侧为手机充值小程序使用现有方案的目录结构,右侧为手机充值小程序使用本实施例提供的方案之后的目录结构。从图3的左侧可以看出,页面部分一共包括三个页面(success、list和detail),其中每一页面都包括四个代码文件(.js、.less、.wxml和.wxss),所以左侧的目录看起来比较冗长和混乱。采用本发明实施例提供的技术方案后,success、list和detail这三个页面中每一个页面以预定格式来表示,即形成每一页面success.wpy、list.wpy和detail.wpy;从效果上看,之前的四个代码文件都被打包成一体,打包后的文件为success.wpy、list.wpy和detail.wpy。显然,本发明实施例提供的技术方案能够避免代码目录结构混乱的问题。

一般来说,一个.wpy文件分为三个部分:样式代码<style></style>对应原有wxss,模板代码<template></template>对应原有wxml,脚本代码<script></script>对应原有js和json。其中入口文件app.wpy不需要template,所以编译时会被忽略。这三个标签都支持type和src属性,type决定了其代码编译过程,src决定是否外联代码,存在src属性且有效时,忽略内联代码。

下面介绍一下本发明实施例的输入文件的编译过程,图4-1为本发明实施例输入文件的编译过程示意图,如图4-1所示,输入文件包括页面部分和应用部分(应用部分未示出),页面部分包括三个页面,分别为success、list和detail这三个页面,对应为内容代码分别为success.wpy、list.wpy和detail.wpy,下面以detail.wpy为例进行说明,首先对detail.wpy进行拆解,拆解后得到样式(style)代码、页面元素(template)代码和脚本(script)代码。然后对脚本代码进一步进行拆解为逻辑代码和配置代码。下面分别对样式代码、页面元素代码和脚本代码进行如下的处理:

样式代码会通过配置中的css、less、sass、stylus等编译器进行编译,遍历组件、注入依赖和变量替换,最后生成小程序需要的.wxss文件。其中,遍历组件是为了得到组件之间的关联关系,其中关联关系又称为依赖关系,以关联信息体现;注入依赖是指根据组件之间的关联信息修改组件之间的路径信息,即完成路径信息的变量替换过程。

页面元素代码通过配置中的wxml、pug等编译器进行编译,同时分析页面引用组件之间的依赖关系,从而注入组件的依赖关系和变量替换,然后生成小程序需要的.wxml文件。

脚本代码先进行拆解,得到逻辑代码和配置代码,然后通过配置中的babel、typescript等编译器进行编译,生成小程序需要的detail.js和detail.json。

所有文件都通过配置插件处理生成小程序需要的最终文件。这里需要说明的是,其中,插件处理的效果是对程序的内容进行了处理,所以内容上有变化,而文件的个数和后缀、格式是没有变化,插件处理一般包括文件压缩、代码中变量的替换,内容混淆、图片压缩、图片清晰度的改变和图片尺寸的改变等等。

本发明实施例中,为了实现对npm资源的利用,在编译过程当中,会递归遍历代码中的require,然后将对应文件从node_modules当中拷贝出来,并且逐一修改各文件的require路径,从而实现对外部npm包的支持。

输入文件中除了页面部分和应用部分外,还包括组件部分,其中组件编译过程如下:在生成最终文件时,如果依然存在相同命名的方法m,或者是相同命名的数据d,就会导致各模块之间的数据覆盖。因此在组件进行编译时,会逐个组件递归查找下去,为每个组件分配一个以某一预设符号(例如$、#等符号)开头的前缀,同时将组件的所有方法与数据加上组件前缀以确保组件的方法或者数据的唯一命名。如图4-2所示,组件a的m方法会变成$a$m方法,组件b的m方法会变成$b$m方法,组件b的子组件c的m方法会变成$b$c$m方法;因为组件名的唯一的,所以各个组件里面的方法与数据都是独立的,由此来实现组件之前的隔离。

需要说明的是,本实施例中的组件或是页面都以.wpy为后缀,在编译过程当中首先组件或页面会被拆解为三个部分:style、template、script,分别负责样式代码、页面元素代码、逻辑代码三个部分,拆解后的代码可以是预设的任何格式,即样式代码、页面元素代码、逻辑代码后缀可以是设置的。

下面以相册功能为例进行说明,相册包含一个描述整体程序的app和多个描述各自页面的page,程序app主要由三个文件组成,分别是app.js(小程序逻辑)、app.json(小程序设置)和app.wxss(小程序样式表),其中前两个为必备文件。对于页面而言,每个页面下,至少要有.js(页面逻辑)和.wxml(页面结构)两个文件,.wxss(页面样式表)和.json(页面配置)文件为选填。config.js文件中包含了一些部署域名的设置。在pages目录下,有两个page页面,分别是index和album。页面结构算是比较简单的,其中index是小程序启动时默认进入的页面。每个页面下,至少要有.js(页面逻辑)和.wxml(页面结构)两个文件,.wxss(页面样式表)和.json(页面配置)文件为选填。这些文件的文件名与父目录的名称相同,目的是减少配置项,方便开发者。

如前所述,本发明实施例对组件进行隔离化,由于组件与组件之间相互隔离,因此组件与组件之间的通讯要通过以下两种方式广播方式和冒泡方式:

如图4-3和图4-4所示,index页面引入coma、comb和comc三个组件,同时coma又有自己的子组件comd和come,comb又有自己的子组件comf、comg和comh。

$broadcast:参见图4-3,由父组件发起的广播事件,然后通过广度优先搜索算法遍历所有子组件,每个子组件依次响应该事件,例如index页面的广播顺序为coma→comb→comc→comd→come→comf→comg→comh。即由index页面发起一个下广播事件后,依次响应该事件的组件是a、b、c、d、e、f、g和h组件。

$emit:参见图4-4,由子组件发起的冒泡事件,单路径向上冒泡,父组件依次接受到该事件,子组件e发起一个冒泡事件,依次响应该事件的流程是coma和页面index。

在应用的过程中,参见图4-5所示,本发明实施例提供的技术方案可以以开发工具的形式来体现,开发工具可以发布在计算设备451上(该计算设备作为服务器),想要开发小程序的工程师在自己的终端452上登陆开发工具的发布网址,然后从服务器上下载开发工具,或者直接在网页上运行开发工具453,这样开发工具就按照前述实施例描述的那样生成小程序,生成好的小程序可以经过审核而发布,发布后的小程序454可以到达用户侧,这样用户455可以通过扫一扫、搜一搜等方式使用小程序。

这里,所述计算设备或终端在具体实施例的过程中可以为各种类型的具有信息处理能力的电子设备,例如所述电子设备可以包括手机、平板电脑、台式机、个人数字助理等。

基于前述的实施例,本发明实施例提供一种应用程序开发工具,该应用程序开发工具所包括的各单元,以及各单元所包括的各模块,都可以通过计算设备如计算机、服务器、个人电脑等中的处理器来实现,当然也可通过逻辑电路实现;在实施例的过程中,处理器可以为中央处理器(cpu)、微处理器(mpu)、数字信号处理器(dsp)或现场可编程门阵列(fpga)等。

图5为本发明实施例应用程序开发工具的组成结构示意图,如图5所示,所述工具500包括获取单元501、拆解单元502、编译单元503和处理单元504,其中:

所述获取单元501,用于获取预定格式的输入文件,所述输入文件中包括用于组成所述小程序各部分的内容代码;

所述拆解单元502,用于将所述输入文件中的每一部分的内容代码按照对应的预设的类别拆解为不同的类别代码;

所述编译单元503,用于按照每一所述类别代码的属性调用对应的编译器对所述类别代码进行编译,对应地得到每一所述类别代码的描述文件;

所述处理单元504,用于将每一部分的所述类别代码的描述文件进行插件处理,得到所述小程序。

在本发明的其他实施例中,所述输入文件至少包括应用部分的内容代码和页面部分的内容代码,所述拆解单元,用于将所述应用部分的内容代码至少拆解为脚本代码;将所述页面部分中的每一页面的内容代码至少拆解为样式代码、页面元素代码和脚本代码。

在本发明的其他实施例中,所述编译单元,用于调用分别与样式代码、页面元素代码和脚本代码调用对应的编译器,分别对应地对每一页面的所述样式代码、页面元素代码和脚本代码进行编译,分别对应地得到每一页面的样式表文件、页面结构文件和逻辑文件。

在本发明的其他实施例中,所述获取单元包括检索模块、加载模块和转换模块,其中:

所述检索模块,用于根据确定的关键词从资源库检索内容代码;

所述加载模块,用于至少加载检索的内容代码;

所述转换模块,用于按照预设格式对所述内容代码进行格式转换,得到预定格式的输入文件。

在本发明的其他实施例中,所述方法还包括分析单元、确定单元和修改单元,其中:

所述分析单元,用于分析所述输入文件中每一部分的内容代码,得到每一部分中各组件之间的关联信息;

所述确定单元,用于确定每一部分中各组件的路径信息;

所述修改单元,用于根据每一部分中各组件之间的关联信息和每一部分中各组件的路径信息修改所述输入文件中的路径信息;

对应地,所述拆解单元,用于对修改后的所述输入文件中的每一部分的内容代码按照对应的预设的类别拆解为不同的类别代码。

在本发明的其他实施例中,所述资源库中包括基类组件、基类页面和基类应用三类基类资源,其中,各基类组件之间相互隔离,基类页面继承自组件;

所述根据确定的关键词从资源库检索内容代码,至少加载检索的内容代码,包括:

所述检索模块,用于根据确定的关键词从资源库检索基类组件、基类页面和基类应用;

所述加载模块,用于至少加载检索的基类组件、基类页面和基类应用;

所述转换模块,用于将检索的基类组件重组为自定义组件,将检索到的基类页面和用户组件重组为自定义页面,将检索到的基类应用和自定义页面重组为自定义应用;按照预设格式分别对自定义组件、自定义页面和自定义应用进行格式转换,得到预定格式的输入文件。

需要指出的是:以上开发工具实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明开发工具实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。

基于前述的实施例,本发明实施例提供一种小程序开发设备,图6为本发明实施例应用程序开发设备的组成结构示意图,如图6所示,该应用程序开发设备包括存储介质601和处理器602,其中:

存储介质601,配置为存储计算机可执行指令;

处理器602,配置为执行存储的计算机可执行指令,所述计算机可执行指令包括:

获取预定格式的输入文件,所述输入文件中包括用于组成所述小程序各部分的内容代码;

将所述输入文件中的每一部分的内容代码按照对应的预设的类别拆解为不同的类别代码;

按照每一所述类别代码的属性调用对应的编译器对所述类别代码进行编译,对应地得到每一所述类别代码的描述文件;

将每一部分的所述类别代码的描述文件进行插件处理,得到所述小程序。

在实现的过程中,小程序开发设备可以采用计算设备如计算机、服务器、个人电脑等实现,图7为本发明实施例中计算设备的一种硬件实体示意图,该计算设备700的硬件实体包括:处理器701、通信接口702、输入模块703、显示模块704和存储器705,其中

处理器701通常控制计算设备700的总体操作。例如,输入模块703可以实施为触摸屏,向所述处理器701输出表征触摸屏的操作特征(包括触点位置、触点数量、触发压力)的用户操作数据,处理器701可以解析用户操作数据确定用户在显示界面中触发的功能,生成对应触发的功能的显示数据,以供显示模块704加载对应触发的功能的页面。

通信接口702可以使计算设备通过网络与其他终端或服务器通信。

输入模块703可配置为接收输入的字符信息,以及产生与用户设置以及功能控制有关信号输入。其中,输入模块可包括触控表面,该触控表面可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控表面上或在触控表面附近的操作),获取触摸操作带来的信号,将信号转换成触点坐标,再送给处理器701处理,并能接收处理器701发来的命令并加以执行。

显示模块704可以配置为显示处理器701实现的功能以及相关的信息。

存储器705配置为存储由处理器701可执行的指令和应用,还可以缓存待处理器701以及计算设备700中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(flash)或随机访问存储器705(ram,randomaccessmemory)实现。

需要指出的是:以上计算设备实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果。对于本发明计算设备实施例中未披露的技术细节,本领域的技术人员请参照本发明方法实施例的描述而理解。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,readonlymemory)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1