CN106873989A - 应用程序构造方法和装置 - Google Patents

应用程序构造方法和装置 Download PDF

Info

Publication number
CN106873989A
CN106873989A CN201710042545.2A CN201710042545A CN106873989A CN 106873989 A CN106873989 A CN 106873989A CN 201710042545 A CN201710042545 A CN 201710042545A CN 106873989 A CN106873989 A CN 106873989A
Authority
CN
China
Prior art keywords
application program
language
block
react
native
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201710042545.2A
Other languages
English (en)
Inventor
刘刚
纪纲
陈佩瀚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201710042545.2A priority Critical patent/CN106873989A/zh
Publication of CN106873989A publication Critical patent/CN106873989A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/22Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供的一种应用程序构造方法,创建应用程序的工程结构,产生与工程结构相关的入口信息及描述信息;保留工程结构的入口信息,将其原有描述信息替换为多个描述块,每个描述块包含多个描述信息,由此生成新的工程结构;至少一个描述块中,包含多种语言描述信息;响应于用户指令生成新的工程结构的应用程序,应用程序适于以新的工程结构创建用户界面,用户界面语言为应用程序所在***所设置的默认语言,且受限于所述至少一个描述块中与该默认语言相适配的语言描述信息。由此使React‑native框架更为丰富,结构清晰,语言描述信息的设置,减少了开发人员的工作量和用户使用使转换语言的难度。此外,本发明还提供了一种应用程序构造装置,用于运行所述方法。

Description

应用程序构造方法和装置
技术领域
本发涉及软件技术领域,明尤其涉及一种应用程序构造方法和装置。
背景技术
一款应用程序在开发时一般第一步都是程序设计,主要包括设计程序的架构、流程、UI界面、用户交互、资源存储等等,此步骤是开发过程中最关键的步骤,也是难度最大的步骤。React-native作为目前开发应用程序的热门框架,允许开发者通过JS开发、部署、动态升级不同平台的应用,然而在React-native框架中一般仅包含React-native的入口信息和与入口信息相对应的React-native运行的依赖库,还存在许多的不足,开发者在开发应用程序时还是需要花费大量的精力设计应用程序,且对开发者的专业化程度要求也较高,同时在应用程序安装过程中,需要开发者事先设计好应用程序界面的展示语言,阻碍了应用程序在其他国家的快速应用,因此急需提出一种开发难度低的、开发效率高且可推进应用程序在其他国家快速应用的应用程序构建框架。
发明内容
为了解决上述问题,本发明提出了一种应用程序构造方法和装置,其降低了开发的难度和对开发者的专业要求,同时增加了资源语言管理模块,使开发者可以在开发时可以不用多方面考虑语言限制应用程序的应用,支持了应用程序的资源国际化。
为了实现上述目标,本方案采用了如下技术方案:
本发明的一种应用程序构造方法,包括如下步骤:
创建所述应用程序的工程结构,产生与所述工程结构相关的入口信息及描述信息;
保留所述工程结构的入口信息,将其原有描述信息替换为多个描述块,每个描述块包含多个描述信息,由此更新原有工程结构;至少一个所述的描述块中,包含多种语言描述信息;
响应于用户指令生成包含所述更新的工程结构的应用程序,该应用程序适于以所述更新的工程结构创建其用户界面,所述用户界面所采用的语言,为该应用程序所在的***所设置的默认语言,且受限于所述至少一个描述块中与该默认语言相适配的语言描述信息。
进一步的,所述入口信息为预定义React-Native工程结构名称。
进一步的,所述描述块包括所述应用程序依赖库、React-Native的依赖库和该应用程序所在***的依赖库。
进一步的,所述描述块至少包括所述应用程序的源代码块、资源块、***代码块和React-Native依赖库块,且至少所述资源块包含有所述语言描述信息。
进一步的,所述React-Native依赖库为React-Native运行的业务逻辑。
进一步的,所述源代码块包括逻辑描述信息,以用于存储所述应用程序运行的代码。
进一步的,所述源代码块包括界面描述信息,以用于存储所述应用程序交互界面展示的代码。
进一步的,所述源代码块包括窗口描述信息,以用于存储所述应用程序在终端界面展示的代码。
进一步的,所述源代码块包括资源描述信息,以用于所述源代码块可通过所述资源描述信息获取所述资源块所包含的资源。
进一步的,所述资源块包括图片描述信息,以用于存储源代码块需调用的图片。
进一步的,所述资源块包括值描述信息,以用于存储源代码块需调用的数学数值。
进一步的,所述资源块包括字符对象描述信息,以用于存储源代码块需调用的语言参数。
优选的,所述字符对象描述信息包括至少一个语言参数,且所述语言参数的后缀为“.js”。
进一步的,所述资源块包括字符对象描述信息,以用于存储源代码块需调用的语言参数,且所述资源块还包括函数描述信息,以用于所述源代码块可通过该函数描述信息调用所述字符对象描述信息中的语言参数。
进一步的,所述资源块中包含了多个不同类型数据的数据资源存储库,所述源代码块需调用的数据资源以数据的类型映射在所述多个不同类型的数据资源存储库中。
进一步的,所述函数为js函数。
进一步的,所述描述块中还包括用于检测该应用程序所在***所设置的默认语言的检测块,以用于在创建所述用户界面前,所述应用程序通过所述检测块检测所述***所设置的默认语言,并将所述应用程序在用户界面所展示的语言与所述***所设置的默认语言进行匹配。
进一步的,所述***所设置的默认语言与所述至少一个描述块中的语言描述信息不匹配时,则应用所述应用程序的预设语言。
优选的,所述***代码块用于存放所述应用程序所在***运行的代码,以便于所述***代码可被修改为可用于调用所述应用程序,并使所述应用程序可在所述***上运行。
优选的,所述***为安卓***。
优选的,所述***为iOS***。
进一步的,其特征在于,React-Native依赖库块为存放所述React-Native运行的代码和数据包。
相应的,本发明还提供一种应用程序构造装置,包括如下单元:
创建单元,用于创建所述应用程序的工程结构,产生与所述工程结构相关的入口信息及描述信息;
替换单元,用于保留所述工程结构的入口信息,将其原有描述信息替换为多个描述块,每个描述块包含多个描述信息,由此更新原有工程结构;至少一个所述的描述块中,包含多种语言描述信息;
生成单元,用于响应于用户指令生成包含所述更新的工程结构的应用程序,该应用程序适于以所述更新的工程结构创建其用户界面,所述用户界面所采用的语言,为该应用程序所在的***所设置的默认语言,且受限于所述至少一个描述块中与该默认语言相适配的语言描述信息。
进一步的,所述入口信息为预定义React-Native工程结构名称。
进一步的,所述描述块包括所述应用程序依赖库、React-Native的依赖库和该应用程序所在***的依赖库。
进一步的,所述替换单元包括:
写入模块,用于写入所述描述块,所述描述块至少包括所述应用程序的源代码块、资源块、***代码块和React-Native依赖库块,且至少所述资源块包含有所述语言描述信息。
进一步的,所述React-Native依赖库为React-Native运行的业务逻辑。
进一步的,所述替换单元还包括:
存储模块,用于存储所述应用程序运行的代码。
进一步的,所述替换单元还包括:
存储模块,用于存储所述应用程序交互界面展示的代码。
进一步的,所述替换单元还包括:
存储模块,用于存储所述应用程序在终端界面展示的代码。
进一步的,所述替换单元还包括:
存储模块,用于所述源代码块可通过所述资源描述信息获取所述资源块所包含的资源。
进一步的,所述替换单元还包括:
存储模块,用于存储源代码块需调用的图片。
进一步的,所述替换单元还包括:
存储模块,用于存储源代码块需调用的数学数值。
进一步的,所述替换单元还包括:
存储模块,用于存储源代码块需调用的语言参数。
优选的,所述字符对象描述信息包括至少一个语言参数,且所述语言参数的后缀为“.js”。
进一步的,所述替换单元还包括:
存储模块,用于存储源代码块需调用的语言参数;
调用模块,用于调用所述语言参数。
进一步的,所述替换单元还包括:
存储模块,用于存储所述资源块中包含的多个不同类型数据的数据资源存储库,所述源代码块需调用的数据资源以数据的类型映射在所述多个不同类型的数据资源存储库中。
进一步的,所述函数为js函数。
进一步的,在所述生成单元中包括:
检测模块,用于检测该应用程序所在***所设置的默认语言的检测块,以用于在创建所述用户界面前,所述应用程序通过所述检测块检测所述***所设置的默认语言,并将所述应用程序在用户界面所展示的语言与所述***所设置的默认语言进行匹配。
进一步的,所述***所设置的默认语言与所述至少一个描述块中的语言描述信息不匹配时,则应用所述应用程序的预设语言。
优选的,所述***代码块用于存放所述应用程序所在***运行的代码,以便于所述***代码可被修改为可用于调用所述应用程序,并使所述应用程序可在所述***上运行。
优选的,所述***为安卓***。
优选的,所述***为iOS***。
进一步的,其特征在于,React-Native依赖库块为存放所述React-Native运行的代码和数据包。
本发明还提供了一种终端,包括处理器,该处理器用于运行程序以执行所述的应用程序构造方法的各个步骤。
与现有技术相比,本发明包括如下有益效果:本发明提供的一种应用程序构造方法及装置,在原有的React-native框架基础上通过JS增加了多个可构建应用程序的描述块,且在每个描述块下包含多个描述信息,由此更新原有工程结构;至少一个所述的描述块中,包含多种语言描述信息;由此使原有的React-native框架更为丰富,结构更为清晰,开发者可以比较容易的开发应用程序,且开发者可根据应用程序国际化的需要在描述块中加入多种语言描述信息;响应于用户指令生成包含所述更新的工程结构的应用程序,该应用程序适于以所述更新的工程结构创建其用户界面,所述用户界面所采用的语言,为该应用程序所在的***所设置的默认语言,且受限于所述至少一个描述块中与该默认语言相适配的语言描述信息,应用程序在更新或者安装时,即可根据应用程序所在***所设置的默认语言而将应用程序在用户界面所展示的语言转化为***设置的默认语言,省去了开发者后期在应用程序国际化时再次对语言进行处理而增加的工作量。
附图说明
图1为本发明一实施例的应用程序构造方法流程图;
图2为本发明另一实施例的应用程序构造方法装置结构示意图;
图3为本发明另一实施例的应用程序构造方法装置子结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
React-native是用React进行native应用程序开发的框架,React-native主要宣传复用思想,即“Learning once,write anywhere”,React-native作为开源框架采用了类似HTML+CSS的排版和Javascript语言,可以使用一种语言开发应用程序,并将其应用到不同的***平台上,同时可以使应用程序在服务器端得到动态的更新,即开发者一更改应用程序的代码,并将其打包生成更新包后,服务器端接收到该应用程序的更新包后,即可将该应用程序更新到最新的版本,也可以是开发者在服务器更改应用程序的运行代码,在应用程序所在的***端重装一次该应用程序,则该应用程序在转变为代码发生变化后的该应用程序。
本发明中所述的应用程序构造方法,在React-native框架的基础上上增加了应用程序可成功开展业务时所必需的描述块和描述信息,以此在React-native基础上的应用程序开发框架减少了开发的人力、节省了开发的时间,同时还避免了不同***上应用程序更新的时间差,也可更迅速的开发应用程序的新功能,同时增加了应用程序语言描述信息,可根据应用程序所在***所设置的默认语言自动将应用程序用户界面所展示语言转换为***所设置的默认语言。
以下实施例所揭示的一种应用程序构造方法,如图1所示,包括:
S100:创建所述应用程序的工程结构,产生与所述工程结构相关的入口信息及描述信息;
React-native作为开发app的框架,其本身就是一款应用程序,并将其封装成一个软件包,需将其在一个平台上成功安装,才能在React-native的基础上进行应用程序的开发,为了便于应用程序的开发,还会安装支持React-native顺利开发应用程序附带的软件,安装成功其附带程序将会保存在开发平台终端React-native预定义的目录文件夹下,React-native在开发的平台上安装成功后,在开发平台终端会有一个React-native预定义的目录文件夹,包含了用于开发应用程序的整个框架及应用程序应用环境的代码和React-native本身运行的代码,Facebook开源React-native时,即Facebook创建了写React-native开发应用程序的语言库,使其React-native可以通过一套语言开发针对不同***的应用程序,如在iOS、安卓,在开发出的应用程序可应用于安卓和ios***之上,,且Facebook在开源React-native之初就预定义了React-native的工程结构在开发平台上显示的名称为“Helloword”,即其预定义的工程结构的第一层根目录名称为“Helloword”,也即提前通过JavaScript代码编写了React-native开发平台上的入口信息为“Helloword”,开发人员点击“Helloword”即可进入React-native框架内开发应用程序,其中,“Helloword”也可是其他名称替代,如“React-native”,进入Helloword/React-native后会出现在React-native框架下的基本描述信息,具体基本描述信息内容在后文进行详述。
具体的,例如在Windows平台下开发针对安卓***的应用程序,需要在Windows平台上需要安装的应用程序包括Chocolatey、Python2、Node.js、Yarn、React Native的命令行工具(react-native-cli)、Android Studio,Chocolatey是一个Windows上的包管理器,类似于linux上的yum和apt-get,Python2用于打开命令提示符窗口,Node.js用于提供一个一个Javascript运行环境,用于方便地搭建响应速度快、易于扩展的网络应用,Yarn是用于加速node模块的下载。React Native的命令行工具用于执行创建、初始化、更新项目、运行打包服务(packager)等任务,Android Studio包含了运行和测试React Native应用所需的Android SDK和模拟器。在所有应用程序安装成功后,安装完成后,在Android Studio的欢迎界面中选择Configure|SDK Manager,并在SDK Platforms窗口中,选择Show PackageDetails,然后在Android 6.0(Marshmallow)中勾选Google APIs、Android SDK Platform23、Intel x86Atom System Image、Intel x86Atom_64System Image以及Google APIsIntel x86Atom_64System Image,在SDK Tools窗口中,选择Show Package Details,然后在Android SDK Build Tools中勾选Android SDK Build-Tools 23.0.1,检查并确保ANDROID_HOME环境变量正确地指向了安装Android SDK的路径,此时React-native开发应用程序的框架创建成功,在安装成功React Native的命令行工具后,可通过React-native命令行工具创建为空项目的根目录helloworld/React Native,helloworld/React Native仅为根目录的名称,helloworld/React Native则为React-native的框架下开发应用程序的入口信息,通过上述的安装后helloworld/React Native根目录下包括了index.android.js***描述信息、node_modules为React-native的存储源生代码和依赖库的描述信息,React-native原有框架helloworld/React Native为入口信息,三者共同构成了React-native最基本的工程结构,也即是React-native开发应用程序的基本框架,其具体结构如下:
·react-native
οindex.android.js
οnode_modules
其中,index.android.js表示开发后的应用程序所应用的***为安卓***,index.android.js也可以为index.ios.js,表示开发后的应用程序所应用的***为ios***。
S200:保留所述工程结构的入口信息,将其原有描述信息替换为多个描述块,每个描述块包含多个描述信息,由此更新原有工程结构;至少一个所述的描述块中,包含多种语言描述信息;
在React-native基础上进行应用程序开发时,必须保留React-native本身的入口信息,以便于在应用程序开发完成运行时可找到正确的入口,并运行程序,同上React-native框架下的基本描述信息主要包括React-native开发的程序将要运行的***的程序代码和React-native应用程序自身的代码及其自身运行所以依赖的数据库,为了更快速高效的开发应用程序,保留React-native框架下原有的React-native自身的运行代码和***代码描述信息,并将其转化为块,同时增加React-native更多开发应用程序过程中所必须的程序设计,同样设定其为描述块,以便于在描述块下可增加更多的与所述描述块对应的描述信息,从而改变原有的React-native工程结构,为了减少开发过程中因为***设置的语言的原因而导致应用程序在不同语言的***环境下,可根据***语言的不同自动转换应用程序在用户界面所展示的语言,在进行应用程序开发的过程中,至少一个描述块中需要包含多种的语言描述信息,以便于进行应用程序语言的转换。
具体的,例如在Windows平台下开发针对安卓***的应用程序,在React-native原有的框架基础上,增加了源代码块src和资源描述块resource,如在helloworld/ReactNative根目录下增加了源代码块src和资源描述块resource,并分别在源代码块src和资源描述块resource下增加不同描述信息,源代码块下的描述信息主要包括应用程序逻辑的描述信息logic,应用程序在移动终端交互界面的描述信息ui,应用程序在移动终端桌面显示程序的描述信息widget,应用程序资源调用的描述信息R.js。资源描述块中包含了drawable、value、strings等描述信息,在strings描述信息下存储了多种语言描述,如zh.js、en.js、fr.js等等,其中zh.js表示中文语言,en.js表示英语语言、fr.js表示法语语言。
S300:响应于用户指令生成包含所述更新的工程结构的应用程序,该应用程序适于以所述更新的工程结构创建其用户界面,所述用户界面所采用的语言,为该应用程序所在的***所设置的默认语言,且受限于所述至少一个描述块中与该默认语言相适配的语言描述信息。
基于步骤S200中制成的React-native框架,开发人员在其基础上开发出的应用程序,需先对应用程序进行生成或者更新,且在生成或者更新后,形成一个新的基于React-native工程结构的应用程序开发框架,在步骤S200中限制了在新的React-native工程结构中至少包含了一个语言描述信息,为了减少因为语言而降低开发出的应用程序在其他国家的使用率,增加的语言的描述信息可写入多种语言,并且该语言将和开发出的应用程序使用的***语言进行对应,即开发出的应用程序在安装时,可检测所在***所设置的默认语言,根据***的默认语言确定应用程序在所在***下所显示语言,即应用程序在***中所显示的语言为***设置的默认语言。
具体的,例如上述再Windows平台上开发基于安卓***的应用程序,在原有React-native工程结构下新增加了源代码块和资源描述块,在资源描述块中包括语言描述信息,在写完上述描述块和描述信息后,保存制作好的工程结构,生成包含有源代码块和资源描述块的React-native开发应用程序的框架,且描述信息也分别保存在源代码块和资源描述块中,开发者可在新的React-native框架的基础上对应资源代码块下的描述信息下写入对应和应用程序运行相关的代码,并将源代码块中需要引用过的资源分别写入到资源描述块下的描述信息中,实现了快速的开发应用程序,由于在资源描述块中包括了语言描述信息,可在语言描述信息下写入zh.js、en.js、fr.js等等多种语言,使开发出的应用程序在***上运行时,可根据***所设置的默认语言自动转换应用程序在***上所展示出的语言,例如应用程序检测出其所在***所设置的默认语言为中文,则应用程序调用资源描述块下语言描述信息中的zh.js,使应用程序在***上所展示的语言为中文语言。
进一步的,所述入口信息为预定义React-Native工程结构名称。
入口信息即为存有React-native开发应用程序的所有工程结构的总文件夹的名称。
具体的,如上文所述,入口信息为通过React-native命令行工具创建为空项目的根目录helloworld/React Native,意为文件夹的名称。
进一步的,所述描述块包括所述应用程序依赖库、React-Native的依赖库和该应用程序所在***的依赖库。
应用程序在运行时,将要依赖于某一动态库才能运行,因此为了便于开发者在React-Native下快速的开发程序,因此在React-Native框架下增加应用程序运行的依赖库,即为增加的React-Native下的描述块,在React-Native原有的工程结构中,已包含了React-Native的依赖库,即应用程序在运行时,需要依赖于React-Native的运行,才能进行应用程序的运行,React-Native的运行则需要依赖于自己已构造好并存储在React-Native框架下描述React-Native代码的描述块,***依赖库即为开发应用程序时指定应用程序将要运行的***的代码,其为***代码描述块,该***代码描述块即为***的依赖库,其主要作用是在程序运行时,可调用***代码描述块中***的代码,为应用程序在***中构造一个运行的环境,使应用程序可以在***中正常的运行。
进一步,所述描述块至少包括所述应用程序的源代码块、资源块、***代码块和React-Native依赖库块,且至少所述资源块包含有所述语言描述信息。
在应用程序运行时,必须要包含的组件包括源代码、用于源代码调用的并存储资源的资源块、使应用程序可在指定***上顺利运行存储***代码的***代码块和应用程序在运行时可找到入口信息并依赖于React-Native的运行的React-Native依赖库块,即在应用程序在运行时,需要依赖于React-Native的运行,才能进行应用程序运行的React-Native依赖库块。为了更好的整理应用程序运行时所需的资源,至少在资源块中包含有语言描述信息。
具体的,如下述一段在React-Native基础上开发应用程序的设计:
源代码块为src,资源块为resource,***代码块为index.android.js,React-Native依赖库块为node_modules,语言描述信息为资源块下resource中的strings和string.js,在strings下包含了语言zh.js、en.js、fr.js。
进一步的,所述React-Native依赖库为React-Native运行的业务逻辑。
React-Native依赖库为React-Native运行的业务逻辑,React-Native业务逻辑为支持React-Native运行的代码和数据。
进一步的,所述源代码块包括逻辑描述信息,以用于存储所述应用程序运行的代码。
在源代码块中包含了逻辑描述信息,用于存储开发人员为应用程序的运行编写的代码,设定了应用程序在***中的各种性质,使应用程序可按照开发人员编写的代码进行运行,并在***中具有预设的性质,在上述的应用程序设计中源代码块src中逻辑描述信息为logic。
进一步的,所述源代码块包括界面描述信息,以用于存储所述应用程序交互界面展示的代码。
源代码中包含的界面描述信息,即为UI,UI设计使指对应用程序的人机交互、操作逻辑、界面美观的整体设计,不仅包括了界面在***上显示的界面,还包括用户与界面轻松自由的交互过程。UI设计不仅是让应用程序变得有个性有品位,还要让应用程序的操作变得舒适简单、自由,充分体现应用程序的定位和特点。因此在开发程序过程中,界面设计为开发的重点设计,为了使开发人员可快速的进行界面的设计,因此在源代码块包括有界面描述信息,用于存储应用程序交互界面展示的代码,如上述程序设计中的源代码块src中的界面描述信息ui,当然在界面描述信息中,开发人员还可根据自己的需要在几面描述信息中对界面描述信息不同代码进行划分,如将展示的界面和人机在界面交互的过程分别进行存储。
进一步的,所述源代码块包括插件描述信息,以用于存储所述应用程序在终端界面展示插件的代码。
开发的应用程序在不使用时都会以插件形式存储在终端,以便于用户的使用,为了开发人员可便捷进行插件的设计,在源代码块中包括了插件描述信息,使开发者可针对性的在插件描述信息中编写应用程序在终端界面展示插件的代码,如上述程序设计中的源代码块src中的界面描述信息widget,且在widget描述信息下,可再次进行描述信息的分类,是插件代码编写更为快捷。
进一步的,所述源代码块包括资源描述信息,以用于所述源代码块可通过所述资源描述信息获取所述资源块所包含的资源。
在源代码块中的资源描述信息,用于调用资源块中的资源,在上述程序设计中为源代码块src中R.js,js表示调用资源所采取的方法为JavaScript编写的代码程序,其中在底层规定R=resource,则R.js则可通过JavaScript编写的代码程序调用resource中的资源,具体资源的类型在后文进行描述。
进一步的,所述资源块包括图片描述信息,以用于存储源代码块需调用的图片。
在资源块中对资源的类型进行了分区,其具体可以包括图片描述信息,在其中当然也可以包括其他类型的描述信息,图片描述信息具体可以当做一个图片资源存储库,用于存储应用程序所涉及到的所有图片,例如可以存储界面ui可调用的并需展示在终端中的图片,其具体如上述程序设计中的资源块resourece中的图片描述信息drawable,图片的类型可以是动态的gif、jpg、jpged等等。
进一步的,所述资源块包括值描述信息,以用于存储源代码块需调用的数值。
在资源块中包括用于存储数值类型资源的值描述信息,如上述程序设计中的资源描述块resource中的values,values存储的数值包括尺寸类值、数字等数值类型的数字。
进一步的,所述资源块包括字符对象描述信息,以用于存储源代码块需调用的语言参数。
为了便于应用程序在不同***不同国家的使用,语言描述信息必须存在,其中语言描述信息在资源块中以字符对象描述信息存储,在字符对象下可进行语言的存储,具体语言将在下文进行详述,字符对象中语言用于被源代码块中的R.js调用,使应用程序在转换语言时可通过R.js调用字符对象描述信息中存储的语言具体调用已在上文进行概述。
优选的,所述字符对象描述信息包括至少一个语言参数,且所述语言参数的后缀为“.js”。
在上述字符对象描述信息下存储有语言参数,用于被源代码块中的R.js调用,为了使源代码块中的R.js能顺利调用语言参数,因此,语言参数的后缀为“.js”,则R.js可通过JavaScript所写的方法调用后缀为“.js”的语言参数,如上文中strings中的zh.js、en.js、fr.js,其中在写语言参数时,开发人员可根据应用程序使用的***和国家数目编写多个语言参数。
进一步的,所述资源块包括字符对象描述信息,以用于存储源代码块需调用的语言参数,且所述资源块还包括函数描述信息,以用于所述源代码块可通过该函数描述信息调用所述字符对象描述信息中的语言参数。
如前文所述,在资源块中包含了字符对象描述信息,以用于存储源代码块需调用的语言参数,且源代码块调用字符描述信息中的语言参数时,需通过一定的方法,即通过函数调用字符对象描述信息中的语言参数,因此在所述资源描述块中还包括可调用字符描述信息中的语言参数的函数块。
具体的,如前文程序设计中资源块resource下的string.js,其中,string指向strings中的zh、en、fr等,“.js”则为后缀为“.js”的参数,因此在转换应用程序在界面所展示的语言时,首先是源代码块中通过R.js通过JavaScript所写的方法找到resource中的string.js,而string.js再通过JavaScript所写的方法找到strings下的语言参数,如中文语言zh.js,调用zh.js并通过JavaScript所写的语言转换方法将应用程序在界面所展示的程序转换为中文语言。
进一步的,所述函数为js函数。
前文所述的函数为js函数,js函数即为JavaScript下的函数方法,在JavaScript自带的具体函数包括concat、indexOf、charAt、replace、search,其中,concat将两个或多个字符的文本组合起来,返回一个新的字符串;indexOf返回字符串中一个子串第一处出现的索引(从左到右搜索),如果没有匹配项,返回-1;charAt返回指定位置的字符。replace用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串;search执行一个正则表达式匹配查找,如果查找成功,返回字符串中匹配的索引值,否则返回-1。
进一步的,所述资源块中包含了多个不同类型数据的数据资源存储库,所述源代码块需调用的数据资源以数据的类型映射在所述多个不同类型的数据资源存储库中。
为了方便快捷地开发应用程序和后续方便的整理和删除数据,在应用程序的资源块中,区分了多个不同类型数据的数据资源存储库,用于存储不同类型的数据,如Undefined、Null、Boolean、Number和String等等,将其分别存储在资源块中,方便后续应用程序运行时,源代码块中描述信息下的代码可通过JavaScript语言所写的方法调用数据库中的数据,例如一数据库名称为Undefined用于存储Undefined类型的数据,因此在源代码块中描述信息下的数据需要调用Undefined类型的数据时,先找到名称为Undefined的数据库,再从数据库中调用出Undefined类型的数据。
进一步的,所述描述块中还包括用于检测该应用程序所在***所设置的默认语言的检测块,以用于在创建所述用户界面前,所述应用程序通过所述检测块检测所述***所设置的默认语言,并将所述应用程序在用户界面所展示的语言与所述***所设置的默认语言进行匹配。
应用程序在界面能正确展示***所设置的默认语言,在React-Native下还需包括一个检测块,检测块的作用在于在应用程序在***上创建用户界面前检测应用程序所在***所设置的默认语言,并通过检测块使应用程序将要调用的语言与***所设置的默认语言进行匹配,使得应用程序在创建用户界面时可展示出于***所设置的默认语言一致。
具体的,在React-Native框架下,应用程序根据***所设置默认语言转换自身语言的代码如下所示:
其具体的编写语言为JavaScript,在检测块检测出***设置的默认语言后,通过switch将应用程序的语言与***语言进行匹配,其中language值为代表语言,如***语言language=ZH(中文语言)时,则在case ZH中,language即等于strings下的zh.js,此时,应用程序则通过string.js调用strings中的zh.js,将应用程序在用户界面展示的语言设置为中文语言,require()表示需要调用的语言,在require后缀括号中的值表示,通过string.js调用strings下的zh.js。
进一步的,所述***所设置的默认语言与所述至少一个描述块中的语言描述信息不匹配时,则应用所述应用程序的预设语言。
上前文所述转换语言过程中为应用程序中写入的语言参数可以和***的语言匹配成功,在应用程序中预设值了应用程序在用界面展示的语言,在***语言与应用程序资源块中的语言描述信息下的语言参数匹配不成功时,则应用程序在用户界面上所展示的语言即为应用程序所设置的默认语言。
具体的,例如应用程序所预定义的语言为中文语言,即zh.js,在***语言与应用程序资源块中的语言描述信息下的语言参数匹配不成功时,如前文所述代码,即language值不等于资源描述块下三种语言的任何一种语言时,则通过前文所述的代码中的default语句,在应用程序上输出应用程序所预设置的中文语言。
优选的,所述***代码块用于存放所述应用程序所在***运行的代码,以便于所述***代码可被修改为可用于调用所述应用程序,并使所述应用程序可在所述***上运行。
由于应用程序的开发平台和其运行的***不一致,因此在React-Native下需要有***代码块,在***代码块中存放了应用程序将要运行的***的代码,其主要作用在于可快捷的修改***代码,改变***的环境变量,使应用程序可被指定***调用,并使应用程序可在指定***下正常的运行。
具体的,如前文所述在Windows平台上开发指向安卓***的应用程序,为了使在Windows平台上开发的应用程序可在安卓***上正常的运行,在开发平台上则需要修改指向安卓***的***代码块上修改***代码,为应用程序的正常运行构造一个可供运行的环境,即为应用程序的运行通过安卓***代码块在安卓***上为应用程序提供一定存储空间,并通过***代码块将应用程序开始代码和结束代码可与***代码融合,使应用程序在安卓***上正常运行。
优选的,所述***为安卓***。
安卓***目前占据了大部分的移动终端市场,因此常见开发出的应用程序运行的环境***为安卓***。
优选的,所述***为iOS***。
iOS***自从开发出来以后,受到了消费者的热烈追捧,因此ios也是应用程序运行的目标***之一。
进一步的,React-Native依赖库块为存放所述React-Native运行的代码和数据包。
如前文所述,React-Native依赖库块存放的是React-Native运行的代码和数据包,其主要作用在于应用程序在运行时,需要依赖于React-Native的运行,才能进行应用程序的运行。React-Native其自身为开发应用程序的软件,因此在React-Native底层拥有一段代码供其自身在开发应用程序和后期应用程序时可正常运行。React-Native作为软件,在自身运行时、开发应用程序过程中和后期应用程序的正常运行都会产生一定数据,直接与React-Native运行相关的数据都存储在React-Native依赖库块下的数据包中,以供后期React-Native运行和/或其他程序的调用。
具体的,例如React-Native依赖库块自身占有一定的存储空间,在React-Native通过代码运行产生较多的数据,这些数据将会存储在数据包中,以供React-Native运行使用,在数据的过多时,可通过其他程序和/或自身的删除数据包中无效数据,以释放存储空间继续存储有效数据,当然,数据的删除也可以是用户的手动删除。
本发明还提供了一种应用程序构造装置,如图2所示,包括如下单元:
S10:创建单元,用于创建所述应用程序的工程结构,产生与所述工程结构相关的入口信息及描述信息;
React-native作为开发app的框架,其本身就是一款应用程序,并将其封装成一个软件包,需将其在一个平台上成功安装,才能在React-native的基础上进行应用程序的开发,为了便于应用程序的开发,还会安装支持React-native顺利开发应用程序附带的软件,安装成功其附带程序将会保存在开发平台终端React-native预定义的目录文件夹下,React-native在开发的平台上安装成功后,创建单元S10在开发平台终端会创建一个React-native预定义的目录文件夹,包含了用于开发应用程序的整个框架及应用程序应用环境的代码和React-native本身运行的代码,Facebook开源React-native时,即Facebook创建了写React-native开发应用程序的语言库,使其React-native可以通过一套语言开发针对不同***的应用程序,如在iOS、安卓,在开发出的应用程序可应用于安卓和ios***之上,,且Facebook在开源React-native之初就预定义了React-native的工程结构在开发平台上显示的名称为“Helloword”,即其预定义的工程结构的第一层根目录名称为“Helloword”,也即提前通过JavaScript代码编写了React-native开发平台上的入口信息为“Helloword”,开发人员点击“Helloword”即可进入React-native框架内开发应用程序,其中,“Helloword”也可是其他名称替代,如“React-native”,进入Helloword/React-native后会出现在React-native框架下的基本描述信息,具体基本描述信息内容在后文进行详述。
具体的,例如在Windows平台下开发针对安卓***的应用程序,需要在Windows平台上需要安装的应用程序包括Chocolatey、Python2、Node.js、Yarn、React Native的命令行工具(react-native-cli)、Android Studio,Chocolatey是一个Windows上的包管理器,类似于linux上的yum和apt-get,Python2用于打开命令提示符窗口,Node.js用于提供一个一个Javascript运行环境,用于方便地搭建响应速度快、易于扩展的网络应用,Yarn是用于加速node模块的下载。React Native的命令行工具用于执行创建、初始化、更新项目、运行打包服务(packager)等任务,Android Studio包含了运行和测试React Native应用所需的Android SDK和模拟器。在所有应用程序安装成功后,安装完成后,在Android Studio的欢迎界面中选择Configure|SDK Manager,并在SDK Platforms窗口中,选择Show PackageDetails,然后在Android 6.0(Marshmal low)中勾选Google APIs、Android SDK Platform23、Intel x86Atom System Image、Intel x86Atom_64System Image以及Google APIsIntel x86Atom_64System Image,在SDK Tools窗口中,选择Show Package Details,然后在Android SDK Build Tools中勾选Android SDK Build-Tools 23.0.1,检查并确保ANDROID_HOME环境变量正确地指向了安装Android SDK的路径,此时React-native开发应用程序的框架创建成功,在安装成功React Native的命令行工具后,创建单元S10可通过React-native命令行工具创建为空项目的根目录helloworld/React Native,helloworld/React Native仅为根目录的名称,helloworld/React Native则为React-native的框架下开发应用程序的入口信息,通过上述的安装后helloworld/React Native根目录下包括了index.android.js***描述信息、node_modules为React-native的存储源生代码和依赖库的描述信息,React-native原有框架helloworld/React Native为入口信息,三者共同构成了React-native最基本的工程结构,也即是React-native开发应用程序的基本框架,其具体结构如下:
·react-native
οindex.android.js
οnode_modules
其中,index.android.js表示开发后的应用程序所应用的***为安卓***,index.android.js也可以为index.ios.js,表示开发后的应用程序所应用的***为ios***。
S20:替换单元,用于保留所述工程结构的入口信息,将其原有描述信息替换为多个描述块,每个描述块包含多个描述信息,由此更新原有工程结构;至少一个所述的描述块中,包含多种语言描述信息;
在React-native基础上进行应用程序开发时,必须保留React-native本身的入口信息,以便于在应用程序开发完成运行时可找到正确的入口,并运行程序,同上React-native框架下的基本描述信息主要包括React-native开发的程序将要运行的***的程序代码和React-native应用程序自身的代码及其自身运行所以依赖的数据库,为了更快速高效的开发应用程序,替换单元S20在保留React-native框架下原有的React-native自身的运行代码和***代码描述信息时,将原有的React-native自身的运行代码和***代码描述信息转化为块,同时增加React-native更多开发应用程序过程中所必须的程序设计,同样设定其为描述块,以便于在描述块下可增加更多的与所述描述块对应的描述信息,从而改变原有的React-native工程结构,为了减少开发过程中因为***设置的语言的原因而导致应用程序在不同语言的***环境下,可根据***语言的不同自动转换应用程序在用户界面所展示的语言,在进行应用程序开发的过程中,至少一个描述块中需要包含多种的语言描述信息,以便于进行应用程序语言的转换。
具体的,例如在Windows平台下开发针对安卓***的应用程序,在React-native原有的框架基础上,替换单元S20保留了index.android.js描述信息和node_modules描述信息,并将index.android.js描述信息和node_modules描述信息转换为描述块,同时增加了源代码块src和资源描述块resource,如在helloworld/React Native根目录下增加了源代码块src和资源描述块resource,并分别在源代码块src和资源描述块resource下增加不同描述信息,源代码块下的描述信息主要包括应用程序逻辑的描述信息logic,应用程序在移动终端交互界面的描述信息ui,应用程序在移动终端桌面显示程序的描述信息widget,应用程序资源调用的描述信息R.js。资源描述块中包含了drawable、value、strings等描述信息,在strings描述信息下存储了多种语言描述,如zh.js、en.js、fr.js等等,其中zh.js表示中文语言,en.js表示英语语言、fr.js表示法语语言。
S30:生成单元,用于响应于用户指令生成包含所述更新的工程结构的应用程序,该应用程序适于以所述更新的工程结构创建其用户界面,所述用户界面所采用的语言,为该应用程序所在的***所设置的默认语言,且受限于所述至少一个描述块中与该默认语言相适配的语言描述信息。
基于上述替换单元S20中制成的React-native框架,开发人员在其基础上开发出的应用程序,需先通过生成单元S30将应用程序进行生成或者更新,且在生成或者更新后,形成一个新的基于React-native工程结构的应用程序开发框架,在替换单元S20中限制了在新的React-native工程结构中至少包含了一个语言描述信息,为了减少因为语言而降低开发出的应用程序在其他国家的使用率,增加的语言的描述信息可写入多种语言,并且该语言将和开发出的应用程序使用的***语言进行对应,即开发出的应用程序在安装时,可检测所在***所设置的默认语言,根据***的默认语言确定应用程序在所在***下所显示语言,即应用程序在***中所显示的语言为***设置的默认语言。
具体的,例如上述再Windows平台上开发基于安卓***的应用程序,在原有React-native工程结构下新增加了源代码块和资源描述块,在资源描述块中包括语言描述信息,在写完上述描述块和描述信息后,生成单元S30生成制作好的工程结构,生成包含有源代码块和资源描述块的React-native开发应用程序的框架,且描述信息也分别保存在源代码块和资源描述块中,开发者可在新的React-native框架的基础上对应资源代码块下的描述信息下写入对应和应用程序运行相关的代码,并将源代码块中需要引用过的资源分别写入到资源描述块下的描述信息中,实现了快速的开发应用程序,由于在资源描述块中包括了语言描述信息,可在语言描述信息下写入zh.js、en.js、fr.js等等多种语言,使开发出的应用程序在***上运行时,可根据***所设置的默认语言自动转换应用程序在***上所展示出的语言,例如应用程序检测出其所在***所设置的默认语言为中文,则应用程序调用资源描述块下语言描述信息中的zh.js,使应用程序在***上所展示的语言为中文语言。
进一步的,所述入口信息为预定义React-Native工程结构名称。
入口信息即为存有React-native开发应用程序的所有工程结构的总文件夹的名称。
具体的,如上文所述,入口信息为通过React-native命令行工具创建为空项目的根目录helloworld/React Native,意为文件夹的名称。
进一步的,所述描述块包括所述应用程序依赖库、React-Native的依赖库和该应用程序所在***的依赖库。
应用程序在运行时,将要依赖于某一动态库才能运行,因此为了便于开发者在React-Native下快速的开发程序,因此在React-Native框架下增加应用程序运行的依赖库,即为增加的React-Native下的描述块,在React-Native原有的工程结构中,已包含了React-Native的依赖库,即应用程序在运行时,需要依赖于React-Native的运行,才能进行应用程序的运行,React-Native的运行则需要依赖于自己已构造好并存储在React-Native框架下描述React-Native代码的描述块,***依赖库即为开发应用程序时指定应用程序将要运行的***的代码,其为***代码描述块,该***代码描述块即为***的依赖库,其主要作用是在程序运行时,可调用***代码描述块中***的代码,为应用程序在***中构造一个运行的环境,使应用程序可以在***中正常的运行。
进一步的,在其中一种实施方式中,所述替换单元S20包括:
S21:写入模块,用于写入所述描述块,所述描述块至少包括所述应用程序的源代码块、资源块、***代码块和React-Native依赖库块,且至少所述资源块包含有所述语言描述信息。
在应用程序运行时,必须要包含的组件包括源代码、用于源代码调用的并存储资源的资源块、使应用程序可在指定***上顺利运行存储***代码的***代码块和应用程序在运行时可找到入口信息并依赖于React-Native的运行的React-Native依赖库块,即在应用程序在运行时,需要依赖于React-Native的运行,才能进行应用程序运行的React-Native依赖库块,为了更好的整理应用程序运行时所需的资源,至少在资源块中包含有语言描述信息,因此构造应用程序的基本框架时通过写入模块S21写入至少包括源代码块、资源块、***代码块和React-Native依赖库块等,且至少所述资源块包含有所述语言描述信息,用于分别在源代码块、资源块、***代码块和React-Native依赖库块下写入供应用程序运行的代码。
具体的,如下述一段在React-Native基础上开发应用程序的设计:
通过写入模块S21,在react-native框架下写入源代码块src、资源块resource、***代码块index.android.js、React-Native依赖库块node_modules,其中,语言描述信息为资源块下resource中的strings和string.js,在strings下包含了语言zh.js、en.js、fr.js。
进一步的,所述React-Native依赖库为React-Native运行的业务逻辑。
React-Native依赖库为React-Native运行的业务逻辑,React-Native业务逻辑为支持React-Native运行的代码和数据。
进一步的,在其中一种实施方式中,所述替换单元S20还包括:
S22:存储模块,用于存储所述应用程序运行的代码。
在源代码块中包含了逻辑描述信息,通过存储模块S22存储开发人员为应用程序的运行编写的代码,设定了应用程序在***中的各种性质,使应用程序可按照开发人员编写的代码进行运行,并在***中具有预设的性质,在上述的应用程序设计中源代码块src中逻辑描述信息为logic。
进一步的,在其中一种实施方式中,所述替换单元S20还包括:
S22:存储模块,用于存储所述应用程序交互界面展示的代码。
源代码中包含的界面描述信息,即为UI,UI设计使指对应用程序的人机交互、操作逻辑、界面美观的整体设计,不仅包括了界面在***上显示的界面,还包括用户与界面轻松自由的交互过程。UI设计不仅是让应用程序变得有个性有品位,还要让应用程序的操作变得舒适简单、自由,充分体现应用程序的定位和特点。因此在开发程序过程中,界面设计为开发的重点设计,为了使开发人员可快速的进行界面的设计,因此在源代码块包括有界面描述信息,并通过存储模块S22存储应用程序交互界面展示的代码,如上述程序设计中的源代码块src中的界面描述信息ui,当然在界面描述信息中,开发人员还可根据自己的需要在几面描述信息中对界面描述信息不同代码进行划分,如将展示的界面和人机在界面交互的过程分别进行存储。
进一步的,在其中一种实施方式中,所述替换单元S20还包括:
S22:存储模块,用于存储所述应用程序在终端界面展示插件的代码。
开发的应用程序在不使用时都会以插件形式存储在终端,以便于用户的使用,为了开发人员可便捷进行插件的设计,在源代码块中包括了插件描述信息,通过存储模块S22使开发者可针对性的在插件描述信息中编写应用程序在终端界面展示插件的代码,并存储在存储模块S22,如上述程序设计中的源代码块src中的界面描述信息widget,且在widget描述信息下,可再次进行描述信息的分类,是插件代码编写更为快捷。
进一步的,在其中一种实施方式中,所述替换单元S20还包括:
S22:存储模块,用于所述源代码块可通过所述资源描述信息获取所述资源块所包含的资源。
存储模块S22还可用于存储资源块所包含的资源,并通过源代码块中的资源描述信息,用于调用资源块中的资源,在上述程序设计中为源代码块src中R.js,js表示调用资源所采取的方法为JavaScript编写的代码程序,其中在底层规定R=resource,则R.js则可通过JavaScript编写的代码程序调用resource中的资源,具体资源的类型在后文进行描述。
进一步的,在其中一种实施方式中,所述替换单元S20还包括:
S22:存储模块,用于存储源代码块需调用的图片。
在资源块中对资源的类型进行了分区,其具体可以包括图片描述信息,在其中当然也可以包括其他类型的描述信息,图片描述信息具体可以当做一个图片资源存储库,通过存储模块S22存储应用程序所涉及到的所有图片,例如可以存储界面ui可调用的并需展示在终端中的图片,其具体如上述程序设计中的资源块resourece中的图片描述信息drawable,图片的类型可以是动态的gif、jpg、jpged等等。
进一步的,在其中一种实施方式中,所述替换单元S20还包括:
S22:存储模块,用于存储源代码块需调用的数值。
在资源块中包括用于存储数值类型资源的值描述信息,通过存储模块S22存储应用程序所涉及到数值,如上述程序设计中的资源描述块resource中的values,values存储的数值包括尺寸类值、数字等数值类型的数字。
进一步的,在其中一种实施方式中,所述替换单元S20还包括:
S22:存储模块,用于存储源代码块需调用的语言参数。
为了便于应用程序在不同***不同国家的使用,语言描述信息必须存在,其中语言描述信息在资源块中以字符对象描述信息存储在存储模块S22中,在字符对象下可进行语言的存储,具体语言将在下文进行详述,字符对象中语言用于被源代码块中的R.js调用,使应用程序在转换语言时可通过R.js调用字符对象描述信息中存储的语言具体调用已在上文进行概述。
优选的,所述字符对象描述信息包括至少一个语言参数,且所述语言参数的后缀为“.js”。
在上述字符对象描述信息下存储有语言参数,用于被源代码块中的R.js调用,为了使源代码块中的R.js能顺利调用语言参数,因此,语言参数的后缀为“.js”,则R.js可通过JavaScript所写的方法调用后缀为“.js”的语言参数,如上文中strings中的zh.js、en.js、fr.js,其中在写语言参数时,开发人员可根据应用程序使用的***和国家数目编写多个语言参数。
进一步的,在其中一种实施方式中,如图3所示,所述替换单元S20还包括:
S22:存储模块,用于存储源代码块需调用的语言参数;
如前文所述,在资源块中包含了字符对象描述信息,通过存储模块S22存储源代码块需调用的语言参数,且源代码块调用字符描述信息中的语言参数时,需通过一定的方法,即通过函数调用字符对象描述信息中的语言参数,因此在所述资源描述块中还包括可调用字符描述信息中的语言参数的函数块。
S23:调用模块,用于调用所述语言参数。
如前文所述,调用模块S23用于调用存储在存储模块S22中的语言参数,且源代码块通过调用模块S23调用字符描述信息中的语言参数时,通过前文所述及后文将要详述的方法进行调用。
具体的,如前文程序设计中资源块resource下的string.js,其中,string指向strings中的zh、en、fr等,“.js”则为后缀为“.js”的参数,且“.js”的语言参数存储在存储模块S22中,因此在转换应用程序在界面所展示的语言时,首先源代码块通过调用模块S23下JavaScript所写的方法从R.js找到resource中的string.js,而string.js再通过JavaScript所写的方法找到strings下的语言参数,如中文语言zh.js,调用模块S23调用zh.js并通过JavaScript所写的语言转换方法将应用程序在界面所展示的程序转换为中文语言。
进一步的,所述函数为js函数。
前文所述的函数为js函数,js函数即为JavaScript下的函数方法,在JavaScript自带的具体函数包括concat、indexOf、charAt、replace、search,其中,concat将两个或多个字符的文本组合起来,返回一个新的字符串;indexOf返回字符串中一个子串第一处出现的索引(从左到右搜索),如果没有匹配项,返回-1;charAt返回指定位置的字符。replace用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串;search执行一个正则表达式匹配查找,如果查找成功,返回字符串中匹配的索引值,否则返回-1。
进一步的,在其中一种实施方式中,所述替换单元S20还包括:
S22:存储模块,用于存储所述资源块中包含的多个不同类型数据的数据资源存储库,所述源代码块需调用的数据资源以数据的类型映射在所述多个不同类型的数据资源存储库中。
为了方便快捷地开发应用程序和后续方便的整理和删除数据,在应用程序的资源块中,区分了多个不同类型数据的数据资源存储库,用于存储不同类型的数据,如Undefined、Null、Boolean、Number和String等等,将其分别存储在资源块中,方便后续应用程序运行时,源代码块中描述信息下的代码可通过JavaScript语言所写的方法调用数据库中的数据,例如一数据库名称为Undefined用于存储Undefined类型的数据,因此在源代码块中描述信息下的数据需要调用Undefined类型的数据时,先找到名称为Undefined的数据库,再从数据库中调用出Undefined类型的数据。
进一步的,在其中一种实施方式中,在所述生成单元S30中包括:
S31:检测模块,用于检测该应用程序所在***所设置的默认语言的检测块,以用于在创建所述用户界面前,所述应用程序通过所述检测块检测所述***所设置的默认语言,并将所述应用程序在用户界面所展示的语言与所述***所设置的默认语言进行匹配。
应用程序在界面能正确展示***所设置的默认语言,还需要一个检测模块S31,检测模块S31的作用在于在应用程序在***上创建用户界面前检测应用程序所在***所设置的默认语言,并通过检测模块S31使应用程序将要调用的语言与***所设置的默认语言进行匹配,使得应用程序在创建用户界面时可展示出于***所设置的默认语言一致。
具体的,在React-Native框架下,应用程序根据***所设置默认语言转换自身语言的代码如下所示:
其具体的编写语言为JavaScript,在检测模块S31检测出***设置的默认语言后,通过switch将应用程序的语言与***语言进行匹配,其中language值为代表语言,如***语言language=ZH(中文语言)时,则在case ZH中,language即等于strings下的zh.js,此时,应用程序则通过string.js调用strings中的zh.js,将应用程序在用户界面展示的语言设置为中文语言,require()表示需要调用的语言,在require后缀括号中的值表示,通过string.js调用strings下的zh.js。
进一步的,所述***所设置的默认语言与所述至少一个描述块中的语言描述信息不匹配时,则应用所述应用程序的预设语言。
上前文所述转换语言过程中为应用程序中写入的语言参数可以和***的语言匹配成功,在应用程序中预设值了应用程序在用界面展示的语言,在***语言与应用程序资源块中的语言描述信息下的语言参数匹配不成功时,则应用程序在用户界面上所展示的语言即为应用程序所设置的默认语言。
具体的,例如应用程序所预定义的语言为中文语言,即zh.js,在***语言与应用程序资源块中的语言描述信息下的语言参数匹配不成功时,如前文所述代码,即language值不等于资源描述块下三种语言的任何一种语言时,则通过前文所述的代码中的default语句,在应用程序上输出应用程序所预设置的中文语言。
优选的,所述***代码块用于存放所述应用程序所在***运行的代码,以便于所述***代码可被修改为可用于调用所述应用程序,并使所述应用程序可在所述***上运行。
由于应用程序的开发平台和其运行的***不一致,因此在React-Native下需要有***代码块,在***代码块中存放了应用程序将要运行的***的代码,其主要作用在于可快捷的修改***代码,改变***的环境变量,使应用程序可被指定***调用,并使应用程序可在指定***下正常的运行。
具体的,如前文所述在Windows平台上开发指向安卓***的应用程序,为了使在Windows平台上开发的应用程序可在安卓***上正常的运行,在开发平台上则需要修改指向安卓***的***代码块上修改***代码,为应用程序的正常运行构造一个可供运行的环境,即为应用程序的运行通过安卓***代码块在安卓***上为应用程序提供一定存储空间,并通过***代码块将应用程序开始代码和结束代码可与***代码融合,使应用程序在安卓***上正常运行。
优选的,所述***为安卓***。
安卓***目前占据了大部分的移动终端市场,因此常见开发出的应用程序运行的环境***为安卓***。
优选的,所述***为iOS***。
ios***自从开发出来以后,受到了消费者的热烈追捧,因此ios也是应用程序运行的目标***之一。
进一步的,React-Native依赖库块为存放所述React-Native运行的代码和数据包。
如前文所述,React-Native依赖库块存放的是React-Native运行的代码和数据包,其主要作用在于应用程序在运行时,需要依赖于React-Native的运行,才能进行应用程序的运行。React-Native其自身为开发应用程序的软件,因此在React-Native底层拥有一段代码供其自身在开发应用程序和后期应用程序时可正常运行。React-Native作为软件,在自身运行时、开发应用程序过程中和后期应用程序的正常运行都会产生一定数据,直接与React-Native运行相关的数据都存储在React-Native依赖库块下的数据包中,以供后期React-Native运行和/或其他程序的调用。
具体的,例如React-Native依赖库块自身占有一定的存储空间,在React-Native通过代码运行产生较多的数据,这些数据将会存储在数据包中,以供React-Native运行使用,在数据的过多时,可通过其他程序和/或自身的删除数据包中无效数据,以释放存储空间继续存储有效数据,当然,数据的删除也可以是用户的手动删除。
本发明还提供一种终端,包括处理器,该处理器用于运行程序以执行所述的应用程序构造方法的各个步骤,例如:在上述Windows平台上开发针对安卓***的应用程序,首先安装React-Native运行软件以及其用于开发针对安卓应用程序的其他附带软件,如Node.js、Android Studio、React Native的命令行工具等等,通过React Native的命令行工具在预定义的目录文件夹(如Helloword)下,增加源代码块和资源描述块,且每个描述块下包含多个描述信息,其中至少一个描述块中包含了至少一个所述的描述块中,包含多种语言描述信息,如源代码块下包含logic、ui、widget、R.js,每个描述块下包含了支持应用程序正常运行的代码,资源描述块下包含drawable、value、strings、string.js,在语言描述信息strings下所包含的语言参数包括zh.js、en.js、fr.js,修改***代码块index.Android.js中的代码为应用程序运行创造的环境,根据用户的生成指令,将上述结构生成一个应用程序的软件包,在使用该软件时,应用程序通过检测模块S31检测应用程序所在***所设置的默认语言,并将其通过switch语句与应用程序语言描述信息下的语言参数进行匹配,将应用程序在用户界面上所显示的语言为***的默认语言。
进一步的,本实施例的处理器还可以实现上述实施例的方法的其他步骤,处理器的具体作用和实现方式可参见上述方法部分的实施例,在此不做赘述。
本技术领域技术人员可以理解,本方法在React-native下创建多个描述块生成一个新的基于React-native的应用程序构造框架,在各描述块下可以存放多个描述信息,描述信息下存放了与描述信息相对应的供应用程序运行的代码,并且在至少一个描述块的描述信息中包含了语言描述信息,在语言描述信息下可存放多个语言参数,用于应用程序可适应不同语言的***上,且不必在安装应用程序后再次对语言进行调整,或者开发人员在开发应用程序时,根据应用程序所在***语言的不同,开发多个具有相同功能和性质的,但语言不同的同种应用程序,新的基于React-native的应用程序框架降低了开发人员的难度,提高了开发效率,本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。该处理器可以执行任一本实施例的操作指令。
本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种应用程序构造方法,其特征在于,包括如下步骤:
创建所述应用程序的工程结构,产生与所述工程结构相关的入口信息及描述信息;
保留所述工程结构的入口信息,将其原有描述信息替换为多个描述块,每个描述块包含多个描述信息,由此更新原有工程结构;至少一个所述的描述块中,包含多种语言描述信息;
响应于用户指令生成包含所述更新的工程结构的应用程序,该应用程序适于以所述更新的工程结构创建其用户界面,所述用户界面所采用的语言,为该应用程序所在的***所设置的默认语言,且受限于所述至少一个描述块中与该默认语言相适配的语言描述信息。
2.根据权利要求1所述的应用程序构造方法,其特征在于,所述入口信息为预定义React-Native工程结构名称。
3.根据权利要求1所述的应用程序构造方法,其特征在于,所述描述块包括所述应用程序依赖库、React-Native的依赖库和该应用程序所在***的依赖库。
4.根据权利要求1所述的应用程序构造方法,其特征在于,所述描述块至少包括所述应用程序的源代码块、资源块、***代码块和React-Native依赖库块,且至少所述资源块包含有所述语言描述信息。
5.根据权利要求3或4所述的应用程序构造方法,其特征在于,所述React-Native依赖库为React-Native运行的业务逻辑。
6.一种应用程序构造装置,其特征在于,包括如下单元:
创建单元,用于创建所述应用程序的工程结构,产生与所述工程结构相关的入口信息及描述信息;
替换单元,用于保留所述工程结构的入口信息,将其原有描述信息替换为多个描述块,每个描述块包含多个描述信息,由此更新原有工程结构;至少一个所述的描述块中,包含多种语言描述信息;
生成单元,用于响应于用户指令生成包含所述更新的工程结构的应用程序,该应用程序适于以所述更新的工程结构创建其用户界面,所述用户界面所采用的语言,为该应用程序所在的***所设置的默认语言,且受限于所述至少一个描述块中与该默认语言相适配的语言描述信息。
7.根据权利要求6所述的应用程序构造装置,其特征在于,所述入口信息为预定义React-Native工程结构名称。
8.根据权利要求6所述的应用程序构造装置,其特征在于,所述描述块包括所述应用程序依赖库、React-Native的依赖库和该应用程序所在***的依赖库。
9.根据权利要求6所述的应用程序构造装置,其特征在于,所述替换单元包括:
写入模块,用于写入所述描述块,所述描述块至少包括所述应用程序的源代码块、资源块、***代码块和React-Native依赖库块,且至少所述资源块包含有所述语言描述信息。
10.一种终端,其特征在于,包括处理器,该处理器用于执行权利要求1-5中任意一项所述的应用程序构造方法。
CN201710042545.2A 2017-01-20 2017-01-20 应用程序构造方法和装置 Pending CN106873989A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710042545.2A CN106873989A (zh) 2017-01-20 2017-01-20 应用程序构造方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710042545.2A CN106873989A (zh) 2017-01-20 2017-01-20 应用程序构造方法和装置

Publications (1)

Publication Number Publication Date
CN106873989A true CN106873989A (zh) 2017-06-20

Family

ID=59158518

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710042545.2A Pending CN106873989A (zh) 2017-01-20 2017-01-20 应用程序构造方法和装置

Country Status (1)

Country Link
CN (1) CN106873989A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108132822A (zh) * 2017-12-13 2018-06-08 明算科技(北京)股份有限公司 用户界面元素国际化处理方法及装置
CN109445771A (zh) * 2018-10-25 2019-03-08 北京和普威视科技股份有限公司 一种cs架构下网络层模块代码自动生成工具及方法
CN110580147A (zh) * 2018-06-07 2019-12-17 阿里巴巴集团控股有限公司 一种应用程序的开发方法和装置
CN111488140A (zh) * 2019-01-29 2020-08-04 杭州海康威视数字技术股份有限公司 一种支持多编程语言多编程库的方法、装置和计算机设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1928813A (zh) * 2006-09-22 2007-03-14 华为技术有限公司 一种应用程序人机交互界面的翻译方法及***
CN101114226A (zh) * 2007-08-28 2008-01-30 北京中企开源信息技术有限公司 一种基于模型组件的代码自动生成装置、***及方法
US20140122061A1 (en) * 2007-06-29 2014-05-01 Microsoft Corporation Regular expression word verification
CN104199662A (zh) * 2014-09-01 2014-12-10 浪潮电子信息产业股份有限公司 一种适用于flex项目的多语言支持技术
CN105404508A (zh) * 2015-11-05 2016-03-16 浪潮(北京)电子信息产业有限公司 一种管理界面多语言的支持方法、装置及终端

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1928813A (zh) * 2006-09-22 2007-03-14 华为技术有限公司 一种应用程序人机交互界面的翻译方法及***
US20140122061A1 (en) * 2007-06-29 2014-05-01 Microsoft Corporation Regular expression word verification
CN101114226A (zh) * 2007-08-28 2008-01-30 北京中企开源信息技术有限公司 一种基于模型组件的代码自动生成装置、***及方法
CN104199662A (zh) * 2014-09-01 2014-12-10 浪潮电子信息产业股份有限公司 一种适用于flex项目的多语言支持技术
CN105404508A (zh) * 2015-11-05 2016-03-16 浪潮(北京)电子信息产业有限公司 一种管理界面多语言的支持方法、装置及终端

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
霍华德: "在React项目中使用React-intl实现多语言支持", 《HTTPS://SEGMENTFAULT.COM/A/1190000005824920》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108132822A (zh) * 2017-12-13 2018-06-08 明算科技(北京)股份有限公司 用户界面元素国际化处理方法及装置
CN110580147A (zh) * 2018-06-07 2019-12-17 阿里巴巴集团控股有限公司 一种应用程序的开发方法和装置
CN109445771A (zh) * 2018-10-25 2019-03-08 北京和普威视科技股份有限公司 一种cs架构下网络层模块代码自动生成工具及方法
CN111488140A (zh) * 2019-01-29 2020-08-04 杭州海康威视数字技术股份有限公司 一种支持多编程语言多编程库的方法、装置和计算机设备
CN111488140B (zh) * 2019-01-29 2023-10-27 杭州海康威视数字技术股份有限公司 一种支持多编程语言多编程库的方法、装置和计算机设备

Similar Documents

Publication Publication Date Title
CN107491329B (zh) Docker镜像构建方法、设备、存储介质以及电子装置
CN105487864B (zh) 代码自动生成的方法和装置
US20190369969A1 (en) Dynamically adaptable tool for graphical development of user interfaces
Moore Python GUI Programming with Tkinter: Develop responsive and powerful GUI applications with Tkinter
CN108762743B (zh) 一种数据表操作代码生成方法及装置
CN105354013A (zh) 应用界面渲染方法及装置
CN106873989A (zh) 应用程序构造方法和装置
US20200057654A1 (en) Method and system for mirror image package preparation and application operation
US20190303115A1 (en) Automated source code sample adaptation
CN113064593B (zh) 移动app动态化的方法、装置、计算机设备及存储介质
CN109634684A (zh) 应用程序加载语言的方法、装置、计算机设备及存储介质
US10474482B2 (en) Software application dynamic linguistic translation system and methods
CN114036443A (zh) 页面生成方法及装置
Moore Python GUI Programming with Tkinter: Design and build functional and user-friendly GUI applications
CN114489647A (zh) 一种小程序的组件化构建方法、装置、设备和介质
Uluca Angular for Enterprise-Ready Web Applications: Build and deliver production-grade and cloud-scale evergreen web apps with Angular 9 and beyond
Del Sole Microsoft computer vision APIs distilled: Getting started with cognitive services
CN112835568A (zh) 一种项目构建方法和装置
CN114217789A (zh) 功能组件拓展方法、装置、设备、存储介质及程序产品
Lewis et al. Native mobile development: a cross-reference for iOS and Android
EP3611616A1 (en) Software code optimizer and method
Del Sole Microsoft computer vision apis distilled
CN116185416A (zh) 算子的接口文件生成方法、装置、设备及存储介质
George Mastering Django
KR20040103497A (ko) 그래픽 유저 인터페이스 생성 방법 및 장치

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170620

RJ01 Rejection of invention patent application after publication