CN113760762B - 小程序的运行环境模拟方法、电子设备及存储介质 - Google Patents
小程序的运行环境模拟方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113760762B CN113760762B CN202111048267.4A CN202111048267A CN113760762B CN 113760762 B CN113760762 B CN 113760762B CN 202111048267 A CN202111048267 A CN 202111048267A CN 113760762 B CN113760762 B CN 113760762B
- Authority
- CN
- China
- Prior art keywords
- layer
- applet
- simulator
- bridging
- enabling
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3648—Debugging of software using additional hardware
- G06F11/3652—Debugging of software using additional hardware in-circuit-emulation [ICE] arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施方式公开了一种小程序的运行环境模拟方法、装置、电子设备及存储介质。方法包括:在模拟器中编译小程序,其中所述模拟器与真实客户端的运行环境具有相同通信架构;基于所述通信架构和编译结果在所述模拟器中模拟所述小程序的运行。本发明实施方式无需在真实客户端中运行小程序,通过在模拟器中运行小程序,提高了开发效率。而且,模拟器的通信架构与真实客户端保持一致,能够真实地模拟出真实客户端上的运行效果。模拟器还支持模拟多种机型,降低了测试成本。
Description
技术领域
本发明实施方式涉及一种小程序的运行环境模拟方法、电子设备及存储介质。
背景技术
小程序是一种不需要下载安装就可使用的应用,它实现了应用触手可及的需求,还体现了用完即走的理念。随着小程序在工作、生活中各个领域的不断应用,需要开发的小程序数量不断增加。小程序开发工具用于帮助开发者简单和高效地开发和调试小程序,小程序开发工具支持小程序的应用程序接口(Application Programming Interface,API)和页面的开发调试、代码查看、小程序预览和发布等功能。
目前,关于小程序的调试和预览工作均需要在真实客户端上进行,开发效率低下。而且,目前还需要在各种尺寸的真实客户端上执行测试,而无法执行多机型兼容性测试,因此还具有成本高的缺点。
发明内容
本发明实施方式提出一种小程序的运行环境模拟方法、电子设备及存储介质。
本发明实施方式的技术方案如下:
一种小程序的运行环境模拟方法,包括:
在所述模拟器中编译小程序,其中所述模拟器与真实客户端的运行环境具有相同通信架构;
基于所述通信架构和编译结果在所述模拟器中模拟所述小程序的运行。
在示例性实施例中,所述通信架构包括桥接层、逻辑层和视图层;其中所述桥接层为所述模拟器的运行容器,用于模拟所述真实客户端的原生桥接部分;所述逻辑层为所述小程序的逻辑容器,用于模拟所述真实客户端的引擎部分;所述视图层用于模拟所述真实客户端的网页视图部分。
在示例性实施例中,所述基于所述通信架构和编译结果在所述模拟器中模拟所述小程序的运行包括:当所述视图层发起与所述逻辑层的通信过程时,所述视图层发送第一异步消息到所述桥接层,从而由所述桥接层将所述第一异步消息转发给所述逻辑层;当所述逻辑层发起与所述视图层的通信过程时,所述逻辑层发送第二异步消息到所述桥接层,从而由所述桥接层将所述第二异步消息转发给所述视图层。
在示例性实施例中,所述在模拟器中编译小程序包括:使能模拟器的主进程编译所述小程序;
所述基于通信架构和编译结果在模拟器中模拟小程序的运行包括:使能所述模拟器的主进程经由所述桥接层将编译结果发送到所述逻辑层;使能所述逻辑层执行所述编译结果以生成加载指令;使能所述桥接层基于所述加载指令在所述视图层加载小程序的应用页面;使能所述视图层响应在所述应用页面上触发的用户操作。
在示例性实施例中,还包括:当检测到所述小程序的代码发生更新时,使能所述主进程编译所述代码发生更新的小程序;使能所述主进程经由所述桥接层将更新的编译结果发送到所述逻辑层;使能所述逻辑层执行所述更新的编译结果以生成更新的加载指令;使能所述桥接层基于所述更新的加载指令在所述视图层更新小程序的应用页面;使能所述视图层响应在所述更新的应用页面上触发的用户操作。
在示例性实施例中,还包括以下步骤中至少之一:通过变更所述视图层的宽高样式、用户代理属性或像素比,调整所述真实客户端的机型;通过变更所述视图层的变形变换,调整所述真实客户端的百分比缩放属性。
在示例性实施例中,还包括:使能所述桥接层向所述主进程发送应用程序接口数据同步请求消息;使能所述主进程响应于所述应用程序接口数据同步请求消息,向所述桥接层发送应用程序接口数据;使能所述桥接层保存所述应用程序接口数据。
在示例性实施例中,还包括:将所述模拟器的主进程、所述桥接层、所述逻辑层和所述视图层封装为Electron模块;根据嵌入模式或独立窗口模式运行所述Electron模块。
一种小程序的运行环境模拟装置,包括:
编译模块,用于在所述模拟器中编译小程序,其中所述模拟器与真实客户端的运行环境具有相同通信架构;
运行模块,用于基于所述通信架构和编译结果在所述模拟器中模拟所述小程序的运行。
在示例性实施例中,还包括:创建模块,用于创建与真实客户端的运行环境具有相同通信架构的模拟器。
在示例性实施例中,所述通信架构包括桥接层、逻辑层和视图层;其中所述桥接层为所述模拟器的运行容器,用于模拟所述真实客户端的原生桥接部分;所述逻辑层为所述小程序的逻辑容器,用于模拟所述真实客户端的引擎部分;所述视图层用于模拟所述真实客户端的网页视图部分。
在示例性实施例中,运行模块,用于当所述视图层发起与所述逻辑层的通信过程时,所述视图层发送第一异步消息到所述桥接层,从而由所述桥接层将所述第一异步消息转发给所述逻辑层;当所述逻辑层发起与所述视图层的通信过程时,所述逻辑层发送第二异步消息到所述桥接层,从而由所述桥接层将所述第二异步消息转发给所述视图层。
在示例性实施例中,编译模块,用于使能模拟器的主进程编译所述小程序;运行模块,用于使能所述模拟器的主进程经由所述桥接层将编译结果发送到所述逻辑层;使能所述逻辑层执行所述编译结果以生成加载指令;使能所述桥接层基于所述加载指令在所述视图层加载小程序的应用页面;使能所述视图层响应在所述应用页面上触发的用户操作。
在示例性实施例中,编译模块,还用于当检测到所述小程序的代码发生更新时,使能所述主进程编译所述代码发生更新的小程序使能所述主进程经由所述桥接层将更新的编译结果发送到所述逻辑层;运行模块,还用于使能所述逻辑层执行所述更新的编译结果以生成更新的加载指令;使能所述桥接层基于所述更新的加载指令在所述视图层更新小程序的应用页面;使能所述视图层响应在所述更新的应用页面上触发的用户操作。
在示例性实施例中,运行模块,还用于通过变更所述视图层的宽高样式、用户代理属性或像素比,调整所述真实客户端的机型;或,通过变更所述视图层的变形变换,调整所述真实客户端的百分比缩放属性。
在示例性实施例中,运行模块,还用于使能所述桥接层向所述主进程发送应用程序接口数据同步请求消息;使能所述主进程响应于所述应用程序接口数据同步请求消息,向所述桥接层发送应用程序接口数据;使能所述桥接层保存所述应用程序接口数据。
在示例性实施例中,还包括:封装模块,用于将所述模拟器的主进程、所述桥接层、所述逻辑层和所述视图层封装为Electron模块;根据嵌入模式或独立窗口模式运行所述Electron模块。
一种计算机可读存储介质,其上存储有计算机指令,所述指令被处理器执行时可实现如上任一项所述的小程序的运行环境模拟方法的步骤。
一种电子设备,该电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述如上任一项所述的小程序的运行环境模拟方法。
一种计算机程序产品,包括计算机指令,所述计算机指令在被处理器执行时实施如上任一项所述的小程序的运行环境模拟方法。
从上述技术方案可以看出,在本发明实施方式中,采用模拟器运行小程序,而无需在真实客户端上调试小程序,因此提高了开发效率。而且,模拟器的通信架构与真实客户端一致,因此能够真实地模拟出真实客户端上的运行效果。另外,当代码发生更新时,可以实现实时预览、支持代码热更新,提高开发效率。还有,通过变更视图层的相关参数,模拟器还可以支持模拟多种机型,降低了测试成本。
附图说明
为了更清楚地说明本发明实施方式中的技术方案,下面将对实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施方式的小程序的运行环境模拟方法的示范性流程图。
图2是本发明实施方式的模拟器的示范性架构图。
图3本发明实施方式的模拟器通信架构的示范性示意图。
图4本发明实施方式的模拟器的示范性运行示意图。
图5是本发明实施方式的小程序的运行环境模拟装置的示范性结构图。
图6是本发明实施方式中的电子设备的示范性结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
为了描述上的简洁和直观,下文通过描述若干代表性的实施方式来对本发明的方案进行阐述。实施方式中大量的细节仅用于帮助理解本发明的方案。但是很明显,本发明的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本发明的方案,一些实施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”。由于汉语的语言习惯,下文中没有特别指出一个成分的数量时,意味着该成分可以是一个也可以是多个,或可理解为至少一个。
下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
本发明实施方式的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施方式例如能够以除了在这里图示或描述的那些以外的顺序实施。
图1是本发明实施方式的小程序的运行环境模拟方法的示范性流程图。
如图1所示,该方法包括:
步骤101:在模拟器中编译小程序,其中模拟器与真实客户端的运行环境具有相同通信架构。
在一个示例性实施例中,可以在步骤101中实时地创建与真实客户端的运行环境具有相同通信架构的模拟器。在另一个示例性实施例中,可以在步骤101中获取在步骤101之前已经创建好的、与真实客户端的运行环境具有相同通信架构的模拟器。
考虑到与真实客户端保持一致的模拟器,可以更加真实地模拟出真实客户端上的运行效果,因此在在步骤101中使用与真实客户端的运行环境具有相同通信架构的模拟器编译小程序。
类似于真实客户端,该模拟器具有三层通信架构。具体地,模拟器包含视图层、桥接层和逻辑层。在三层通信架构中:桥接层为模拟器的运行容器,用于模拟真实客户端的原生桥接部分;逻辑层为小程序的逻辑容器,用于模拟真实客户端的引擎部分;视图层用于模拟真实客户端的网页视图(WebView)部分。这三层之间通过消息进行通信。
除了三层通信架构之外,还可以在模拟器中创建主进程。主进程可以具有以下用途:
(1)、实现小程序的各类API,以满足小程序应用的功能需求。比如,API可以包括:路由、用户接口(User Interface,UI)、数据存储、地图定位、媒体,等等。
(2)、提供模拟器服务。模拟器服务可以启动(比如,通过Node)模拟器的Web服务,以作为模拟器的运行后台。而且,模拟器服务还可以为模拟器前端(包括视图层、桥接层和逻辑层)调配各种资源。
(3)、提供小程序编译服务。小程序编译服务具有实时编译小程序代码的功能,可以触发模拟器更新小程序页面和处理逻辑。
在模拟器的三层通信架构中,桥接层作为衔接视图层和逻辑层的通信桥梁,需定义统一的消息接收和转发。具体地,当视图层发起与逻辑层的通信过程时,视图层发送第一异步消息到桥接层,从而由桥接层将第一异步消息转发给逻辑层;当逻辑层发起与视图层的通信过程时,逻辑层发送第二异步消息到桥接层,从而由桥接层将所述第二异步消息转发给视图层。另外,桥接层还需要与模拟器的主进程进行双向异步消息通信,以实现API调用以及获取最新的编译结果等。在视图层和逻辑层之间的通信过程中,需要发送异步消息到桥接层,再由桥接层处理后发送给对方。桥接层与主进程的双向异步消息通信可进行Promise化,以方便双方互相调用和获取返回结果。
在一种实施方式中,可以使用Electron技术的WebView控件作为模拟器的运行容器。同时,该WebView控件还实施为模拟器的桥接层,以作为视图层和逻辑层的通信桥梁。
逻辑层是为小程序逻辑提供加载和运行的容器,可以控制小程序页面的展示、交互和运算。逻辑层模拟真实客户端的引擎部分(比如,V8容器)。在桥接层中,可以进一步使用WebView控件以嵌入视图层和逻辑层。在视图层中呈现小程序展示给用户的渲染结果,以模拟真实客户端的网页视图部分。在示例性实施例中,视图层可以包含多个视图,其中每个视图分别对应小程序的不同页面。
图2是本发明实施方式的模拟器的示范性架构图。图3本发明实施方式的模拟器通信架构的示范性示意图。
由图2可见,模拟器包括模拟器前端201和作为后台的模拟器主进程202。模拟器前端201包括桥接层203、视图层204和逻辑层205。其中,桥接层203为视图层204和逻辑层205的运行容器。在桥接层203中,可以使用WebView控件嵌入视图层204和逻辑层205。视图层204展示给用户小程序的最终渲染结果。视图层204中可以包含分别对应小程序不同页面的多个视图。逻辑层205为小程序逻辑提供加载和运行的容器,控制小程序页面的展示、交互和运算。
模拟器主进程202包括API2021、模拟器服务2022和小程序编译服务2023。API2021可以实施为路由、用户接口(User Interface,UI)、数据存储、地图定位、媒体,等等,以满足小程序应用的功能需求。模拟器服务2022可以启动模拟器的Web服务,以作为模拟器的运行后台。模拟器服务2022还可以为视图层204、桥接层203和逻辑层205调配各种资源。小程序编译服务2023提供实时编译小程序的代码的功能。
由图3可见,桥接层203作为视图层204和逻辑层205之间的通信桥梁。而且,桥接层203还作为模拟器主进程202与视图层204之间的通信桥梁以及模拟器主进程202与逻辑层205之间的通信桥梁。桥接层203中定义统一的消息,以接收和转发视图层204和逻辑层205的消息。在示例性实施例中,桥接层203与主进程202进行双向异步消息通信,以实现针对API2021的调用和获取小程序编译服务2023的编译结果,等等。视图层204和逻辑层205之间的通信均需要发送异步消息到桥接层203,再由桥接层203处理后发送给对方。
以上示范性描述了模拟器的三层通信架构的具体实例,本领域技术人员可以意识到,这种描述仅是示范性的,并不用于限定本发明实施方式的保护范围。
在步骤101中,可以由包含在模拟器主进程中的小程序编译服务对小程序执行编译。具体地,小程序编译服务利用编译程序从源语言编写的小程序(一般为代码)中产生目标程序(可直接被计算机运行的机器码集合),将各个目标程序与库函数连接,以形成完整的可执行程序。
步骤102:基于通信架构和编译结果在模拟器中模拟小程序的运行。
在一个实施方式中,步骤102具体包括:使能模拟器的主进程经由桥接层将编译结果发送到逻辑层;使能逻辑层执行编译结果以生成加载指令;使能桥接层基于加载指令在视图层加载小程序的应用页面;使能视图层响应在应用页面上触发的用户操作。
可见,在本发明实施方式中,采用模拟器运行小程序,无需在真实客户端上执行小程序调试,因此提高了开发效率。而且,模拟器的通信架构与真实客户端一致,因此能够真实地模拟出真实客户端上的运行效果。
在一个实施方式中,在步骤102之后,当检测到小程序的代码发生更新时,使能主进程编译代码发生更新的小程序;使能主进程经由桥接层将更新的编译结果发送到逻辑层;使能逻辑层执行更新的编译结果以生成更新的加载指令;使能桥接层基于更新的加载指令在视图层更新小程序的应用页面;使能视图层响应在更新的应用页面上触发的用户操作。
可见,当代码发生更新时,模拟器可以实现实时预览,支持代码热更新,提高开发效率。
在一个实施方式中,还包括通过变更视图层的宽高样式、用户代理属性(UserAgent)或像素比,调整真实客户端的机型。在一个实施方式中,通过变更所述视图层的变形变换,调整真实客户端的百分比缩放属性。
因此,通过变更视图层的相关参数,还可以支持模拟多种机型,从而降低了成本。
另外,不同于模拟器前端中的各层通信均为异步消息通信,为方便开发者使用同步方式调用小程序API,本发明实施方式还实现了一种缓存同步方案。在一个实施方式中,该方法还包括:使能桥接层向主进程发送API数据同步请求消息;使能主进程响应于API数据同步请求消息,向桥接层发送API数据;使能桥接层保存API数据。
具体地,缓存同步的实现方式包括:在桥接层初始化时,桥接层主动向主进程发送消息,以获取并缓存同步API所需的数据到桥接层的内存中,从而实现桥接层中的缓存同步。当API被调用时,桥接层直接从自身内存中获取相应的API数据返回给调用者即可。当API数据发生新增或变更时,桥接层首先更改内存中的缓存数据,同时发送异步消息到主进程同步以更改真实数据,从而保持数据同步。
主进程还可以通过会话(session)API模拟不同网络状态,如WIFI、4G等,而且主进程还可设置网络模拟参数,比如上传/下载速率、RTT往返延迟、是否离线等。在实际应用中,还可以在视图层中增加模拟操作按钮,以模拟真实客户端上的返回、首页、静音等操作。当按钮被点击后,视图层发送消息到桥接层,以由桥接层完成模拟操作。
在一个实施方式中,可以将模拟器的主进程、桥接层、逻辑层和视图层共同封装为Electron模块,并根据嵌入模式或独立窗口模式运行Electron模块。其中:
(1)、在嵌入模式中:将桥接层、逻辑层和视图层封装为组件,该组件可自由嵌入现有Electron桌面端应用的界面指定位置处。同时,现有Electron桌面端应用可以引入模拟器的主进程,通过调用指定接口即可使用模拟器。
(2)、在独立窗口模式中:模拟器的主进程创建Electron的独立窗口。主进程为该独立窗口加载预置的HTML入口文件,并且在该独立窗口中引入模拟器的前端组件(包含桥接层、逻辑层和视图层),即可实现独立窗口运行模式。
可见,本发明实施方式的模拟器既可以作为独立窗口运行,还可以方便的集成到其他基于Electron的工具中(如VSCode等),方便开发者选择满足自身使用需求的运行方式。
基于上述描述,图4本发明实施方式的模拟器的示范性运行示意图。如图4所示,模拟器的示范性运行过程包括:主进程启动服务(包括模拟器服务和小程序编译服务)。模拟器服务作为模拟器的运行后台。小程序编译服务可以编译小程序的代码,还可以监听小程序的代码更新。
(1)、当小程序编译服务编译小程序的代码并首次产生编译结果时,主进程初始化桥接层,桥接层随后创建并初始化逻辑层。逻辑层执行桥接层转发来的编译结果,向桥接层发出加载小程序应用页面(通常为首页)的指令。桥接层接收到该指令后,开始创建并初始化视图层。视图层完成初始化后,加载小程序的应用页面,并响应用户在应用页面上的各种操作。其中:在加载应用页面的过程以及响应用户在应用页面上的操作时,桥接层可以随时调用主进程的各种API。
(2)、当主进程检测到小程序的代码发生更新时,小程序编译服务编译更新后代码,并产生更新的编译结果。逻辑层执行桥接层转发来的、更新的编译结果,向桥接层发出更新的加载指令。桥接层基于更新的加载指令在视图层更新小程序的应用页面。视图层继续响应用户在更新后的应用页面上的操作。其中:在加载更新应用页面的过程以及响应用户在更新后的应用页面上的操作时,桥接层仍然可以调用主进程的各种API。
在图4中描述了模拟器的示范性运行过程,本领域技术人员可以意识到,这种描述仅是示范性的,并不用于限定本发明实施方式的保护范围。
本发明实施方式还提出了小程序的运行环境模拟装置。图5是本发明实施方式的小程序的运行环境模拟装置的示范性结构图。
如图5所示,小程序的运行环境模拟装置500包括:
编译模块502,用于在模拟器中编译小程序,其中所述模拟器与真实客户端的运行环境具有相同通信架构;
运行模块503,用于基于通信架构和编译结果在模拟器中模拟小程序的运行。
在一个实施方式中,运行环境模拟装置500还可以包括:创建模块501,用于创建与真实客户端的运行环境具有相同通信架构的模拟器。
在一个实施方式中,通信架构包括桥接层、逻辑层和视图层;其中桥接层为模拟器的运行容器,用于模拟真实客户端的原生桥接部分;逻辑层为小程序的逻辑容器,用于模拟真实客户端的引擎部分;视图层用于模拟真实客户端的网页视图部分。
在一个实施方式中,运行模块503,用于当视图层发起与逻辑层的通信过程时,视图层发送第一异步消息到桥接层,从而由桥接层将第一异步消息转发给逻辑层;当逻辑层发起与视图层的通信过程时,逻辑层发送第二异步消息到桥接层,从而由桥接层将第二异步消息转发给视图层。
在一个实施方式中,编译模块502,用于使能模拟器的主进程编译小程序;运行模块,用于使能模拟器的主进程经由桥接层将编译结果发送到逻辑层;使能逻辑层执行编译结果以生成加载指令;使能桥接层基于加载指令在视图层加载小程序的应用页面;使能视图层响应在应用页面上触发的用户操作。
在一个实施方式中,编译模块502,还用于当检测到小程序的代码发生更新时,使能主进程编译代码发生更新的小程序使能主进程经由桥接层将更新的编译结果发送到逻辑层;运行模块,还用于使能逻辑层执行更新的编译结果以生成更新的加载指令;使能桥接层基于更新的加载指令在视图层更新小程序的应用页面;使能视图层响应在更新的应用页面上触发的用户操作。
在一个实施方式中,运行模块503,还用于通过变更视图层的宽高样式、用户代理属性或像素比,调整真实客户端的机型;或,通过变更视图层的变形变换,调整真实客户端的百分比缩放属性。
在一个实施方式中,运行模块503,还用于使能桥接层向主进程发送应用程序接口数据同步请求消息;使能主进程响应于应用程序接口数据同步请求消息,向桥接层发送应用程序接口数据;使能桥接层保存应用程序接口数据。
在一个实施方式中,还包括:封装模块504,用于将模拟器的主进程、桥接层、逻辑层和视图层封装为Electron模块;根据嵌入模式或独立窗口模式运行Electron模块。
综上所述,在本发明实施方式中,采用模拟器运行小程序,而无需在真实客户端上调试小程序,因此提高了开发效率。而且,模拟器的通信架构与真实客户端一致,因此能够真实地模拟出真实客户端上的运行效果。另外,当代码发生更新时,可以实现实时预览、支持代码热更新,提高开发效率。还有,通过变更视图层的相关参数,模拟器还可以支持模拟多种机型,降低了测试成本。
本发明实施方式还提供一种计算机可读介质,所述计算机可读存储介质存储指令,所述指令在由处理器执行时可执行如上所述的小程序的运行环境模拟方法中的步骤。实际应用中,所述的计算机可读介质可以是上述实施方式中描述的设备/装置/系统中所包含的,也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或多个程序被执行时,可以实现上述各实施方式描述的小程序的运行环境模拟方法。根据本发明公开的实施方式,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件,或者上述的任意合适的组合,但不用于限制本发明保护的范围。在本发明公开的实施方式中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
如图6所示,本发明实施方式还提供一种电子设备,其中可以集成本发明实施方式实现方法的装置。如图6所示,其示出了本发明实施方式所涉及的电子设备的示范性结构图,具体来讲:
该电子设备可以包括一个或一个以上处理核心的处理器601、一个或一个以上计算机可读存储介质的存储器602以及存储在存储器上并可在处理器上运行的计算机程序。在执行所述存储器602的程序时,可以实现上述运行环境模拟方法。
具体的,实际应用中,该电子设备还可以包括电源603、输入单元604、以及输出单元605等部件。本领域技术人员可以理解,图6中示出的电子设备的结构并不构成对该电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器601是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内的数据,执行服务器的各种功能和处理数据,从而对该电子设备进行整体监控。
存储器602可用于存储软件程序以及模块,即上述计算机可读存储介质。处理器601通过运行存储在存储器602的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器602还可以包括存储器控制器,以提供处理器601对存储器602的访问。
该电子设备还包括给各个部件供电的电源603,可以通过电源管理系统与处理器601逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源603还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元604,该输入单元604可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。该电子设备还可以包括输出单元605,该输出单元605可以用于显示由用户输入的信息或提供给用户的信息以及各种图像用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。
本发明实施方式还提供一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令在被处理器执行时实施如上述任一实施方式所述的方法。
本发明附图中的流程图和框图,示出了按照本发明公开的各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或者代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应该注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同附图中所标准的顺序发生。例如,两个连接地表示的方框实际上可以基本并行地执行,它们有时也可以按照相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或者流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施方式和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施方式和/或权利要求中记载的特征可以进行多种组合和/或结合,所有这些组合和/或结合均落入本发明公开的范围。
本文中应用了具体实施方式对本发明的原理及实施方式进行了阐述,以上实施方式的说明只是用于帮助理解本发明的方法及其核心思路,并不用于限制本发明。对于本领域的技术人员来说,可以依据本发明的思路、精神和原则,在具体实施方式及应用范围上进行改变,其所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (7)
1.一种小程序的运行环境模拟方法,其特征在于,包括:
在模拟器中编译小程序,其中所述模拟器与真实客户端的运行环境具有相同通信架构;
基于所述通信架构和编译结果在所述模拟器中模拟所述小程序的运行;
所述通信架构包括桥接层、逻辑层和视图层;其中所述桥接层为所述模拟器的运行容器,用于模拟所述真实客户端的原生桥接部分;所述逻辑层为所述小程序的逻辑容器,用于模拟所述真实客户端的引擎部分;所述视图层用于模拟所述真实客户端的网页视图部分;
所述在模拟器中编译小程序包括:使能模拟器的主进程编译所述小程序;
基于所述通信架构和编译结果在模拟器中模拟小程序的运行包括:使能所述模拟器的主进程经由所述桥接层将编译结果发送到所述逻辑层;使能所述逻辑层执行所述编译结果以生成加载指令;使能所述桥接层基于所述加载指令在所述视图层加载小程序的应用页面;使能所述视图层响应在所述应用页面上触发的用户操作;
所述运行环境模拟方法还包括:使能所述桥接层向所述模拟器的主进程发送应用程序接口数据同步请求消息;使能所述主进程响应于所述应用程序接口数据同步请求消息,向所述桥接层发送应用程序接口数据;使能所述桥接层保存所述应用程序接口数据;
其中,在所述桥接层初始化时,所述桥接层主动向所述主进程发送消息,以获取并缓存同步所述应用程序接口所需的数据到所述桥接层的内存中,以实现所述桥接层中的缓存同步;当所述应用程序接口被调用时,所述桥接层直接从自身内存中获取相应的应用程序接口数据。
2.根据权利要求1所述的方法,其特征在于,
所述基于所述通信架构和编译结果在所述模拟器中模拟小程序的运行包括:
当所述视图层发起与所述逻辑层的通信过程时,所述视图层发送第一异步消息到所述桥接层,从而由所述桥接层将所述第一异步消息转发给所述逻辑层;
当所述逻辑层发起与所述视图层的通信过程时,所述逻辑层发送第二异步消息到所述桥接层,从而由所述桥接层将所述第二异步消息转发给所述视图层。
3.根据权利要求1所述的方法,其特征在于,还包括:
当检测到所述小程序的代码发生更新时,使能所述主进程编译所述代码发生更新的小程序;
使能所述主进程经由所述桥接层将更新的编译结果发送到所述逻辑层;
使能所述逻辑层执行所述更新的编译结果以生成更新的加载指令;
使能所述桥接层基于所述更新的加载指令在所述视图层更新小程序的应用页面;
使能所述视图层响应在所述更新的应用页面上触发的用户操作。
4.根据权利要求1所述的方法,其特征在于,还包括以下步骤中至少之一:
通过变更所述视图层的宽高样式、用户代理属性或像素比,调整所述真实客户端的机型;
通过变更所述视图层的变形变换,调整所述真实客户端的百分比缩放属性。
5.根据权利要求1-4中任一项所述的方法,其特征在于,还包括:
将所述模拟器的主进程、所述桥接层、所述逻辑层和所述视图层封装为Electron模块;
根据嵌入模式或独立窗口模式运行所述Electron模块。
6.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述指令被处理器执行时可实现权利要求1-5任一项所述的小程序的运行环境模拟方法的步骤。
7.一种电子设备,其特征在于,该电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现权利要求1-5任一项所述的小程序的运行环境模拟方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202111048267.4A CN113760762B (zh) | 2021-09-08 | 2021-09-08 | 小程序的运行环境模拟方法、电子设备及存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202111048267.4A CN113760762B (zh) | 2021-09-08 | 2021-09-08 | 小程序的运行环境模拟方法、电子设备及存储介质 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN113760762A CN113760762A (zh) | 2021-12-07 |
| CN113760762B true CN113760762B (zh) | 2024-03-08 |
Family
ID=78793835
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202111048267.4A Active CN113760762B (zh) | 2021-09-08 | 2021-09-08 | 小程序的运行环境模拟方法、电子设备及存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN113760762B (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN115269043A (zh) * | 2022-07-29 | 2022-11-01 | 携程旅游信息技术(上海)有限公司 | 基于Electron的小程序运行方法、系统、设备和介质 |
Citations (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2018103550A1 (zh) * | 2016-12-05 | 2018-06-14 | 腾讯科技(深圳)有限公司 | 应用程序页面处理方法和装置 |
| CN109117361A (zh) * | 2018-06-21 | 2019-01-01 | 腾讯科技(深圳)有限公司 | 一种小程序的远程调试方法、相关设备及系统 |
| CN109582317A (zh) * | 2018-11-30 | 2019-04-05 | 百度在线网络技术(北京)有限公司 | 用于调试寄宿应用的方法和装置 |
| CN109739770A (zh) * | 2019-01-04 | 2019-05-10 | 百度在线网络技术(北京)有限公司 | 小程序的调试方法及装置 |
| CN110032519A (zh) * | 2019-04-22 | 2019-07-19 | 广州腾讯科技有限公司 | 云函数调试方法、装置、计算机设备及存储介质 |
| CN110032512A (zh) * | 2019-03-28 | 2019-07-19 | 腾讯科技(深圳)有限公司 | 一种小程序的调试方法、相关设备及终端 |
| CN110750463A (zh) * | 2019-10-29 | 2020-02-04 | 百度在线网络技术(北京)有限公司 | 一种小程序测试方法、装置、系统、设备及介质 |
| CN110908904A (zh) * | 2019-11-15 | 2020-03-24 | 北京小米移动软件有限公司 | 调试快应用的方法、调试快应用的装置及电子设备 |
| CN111597113A (zh) * | 2020-05-18 | 2020-08-28 | 北京百度网讯科技有限公司 | 小程序的验证方法、装置、设备及存储介质 |
| CN112286656A (zh) * | 2020-10-21 | 2021-01-29 | 百度在线网络技术(北京)有限公司 | 小程序模拟方法、装置、电子设备和计算机可读存储介质 |
| CN113220374A (zh) * | 2020-01-21 | 2021-08-06 | 腾讯科技(深圳)有限公司 | 软件处理方法和装置 |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1991765A (zh) * | 2005-12-29 | 2007-07-04 | 北京金远见电脑技术有限公司 | 手持终端应用程序的开发装置和方法 |
| CN103176899B (zh) * | 2011-12-26 | 2017-08-25 | 希姆通信息技术(上海)有限公司 | 手机模拟器及在宿主机上模拟手机功能的方法 |
| US20190034318A1 (en) * | 2017-07-26 | 2019-01-31 | Western Digital Technologies, Inc. | Hardware-Software Co-Verification for Debugging Firmware on a Hardware Simulator |
-
2021
- 2021-09-08 CN CN202111048267.4A patent/CN113760762B/zh active Active
Patent Citations (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2018103550A1 (zh) * | 2016-12-05 | 2018-06-14 | 腾讯科技(深圳)有限公司 | 应用程序页面处理方法和装置 |
| CN109117361A (zh) * | 2018-06-21 | 2019-01-01 | 腾讯科技(深圳)有限公司 | 一种小程序的远程调试方法、相关设备及系统 |
| CN109582317A (zh) * | 2018-11-30 | 2019-04-05 | 百度在线网络技术(北京)有限公司 | 用于调试寄宿应用的方法和装置 |
| CN109739770A (zh) * | 2019-01-04 | 2019-05-10 | 百度在线网络技术(北京)有限公司 | 小程序的调试方法及装置 |
| CN110032512A (zh) * | 2019-03-28 | 2019-07-19 | 腾讯科技(深圳)有限公司 | 一种小程序的调试方法、相关设备及终端 |
| CN110032519A (zh) * | 2019-04-22 | 2019-07-19 | 广州腾讯科技有限公司 | 云函数调试方法、装置、计算机设备及存储介质 |
| CN110750463A (zh) * | 2019-10-29 | 2020-02-04 | 百度在线网络技术(北京)有限公司 | 一种小程序测试方法、装置、系统、设备及介质 |
| CN110908904A (zh) * | 2019-11-15 | 2020-03-24 | 北京小米移动软件有限公司 | 调试快应用的方法、调试快应用的装置及电子设备 |
| CN113220374A (zh) * | 2020-01-21 | 2021-08-06 | 腾讯科技(深圳)有限公司 | 软件处理方法和装置 |
| CN111597113A (zh) * | 2020-05-18 | 2020-08-28 | 北京百度网讯科技有限公司 | 小程序的验证方法、装置、设备及存储介质 |
| CN112286656A (zh) * | 2020-10-21 | 2021-01-29 | 百度在线网络技术(北京)有限公司 | 小程序模拟方法、装置、电子设备和计算机可读存储介质 |
Non-Patent Citations (2)
| Title |
|---|
| A new generic simulator for the teaching of assembly programming;D. Camarmas-Alonso等;《2020 IEEE International Conference on Robotics and Automation (ICRA)》;1-9 * |
| 微信小程序的架构与开发浅析;李哲;《福建电脑》;第35卷(第12期);66-69 * |
Also Published As
| Publication number | Publication date |
|---|---|
| CN113760762A (zh) | 2021-12-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN108345531B (zh) | 一种测试方法、装置及系统 | |
| CN113722020A (zh) | 接口调用方法、装置和计算机可读存储介质 | |
| Parada et al. | A model driven approach for android applications development | |
| CN106970873A (zh) | 线上mock测试方法、装置及系统 | |
| CN113805882A (zh) | 应用程序开发的方法、装置、电子设备及存储介质 | |
| CN109582317B (zh) | 用于调试寄宿应用的方法和装置 | |
| CN117785160B (zh) | 一种低代码应用的行为逻辑开发调试方法、系统及装置 | |
| CN108038241A (zh) | 集成web可视化工作流方法、装置、可读存储介质及系统 | |
| CN110750437B (zh) | 一种设备调试方法、装置、设备及系统 | |
| CN113050940A (zh) | 小程序的预览方法、相关装置及计算机程序产品 | |
| US9529572B1 (en) | Composable application session parameters | |
| CN112306844B (zh) | 软件开发系统的接口测试方法、装置、设备及存储介质 | |
| CN104317580B (zh) | 虚拟试验应用集成开发系统 | |
| CN115878095A (zh) | 一种基于逻辑编排的低代码开发方法、装置、设备及介质 | |
| CN117112109A (zh) | 基于可视化界面的微服务编排、微服务调用方法及装置 | |
| CN113760762A (zh) | 小程序的运行环境模拟方法、电子设备及存储介质 | |
| CN117033213A (zh) | 一种页面调试方法、装置、设备及存储介质 | |
| US20110055318A1 (en) | Thin client system with round trip reduction using client side code generation | |
| CN105573741A (zh) | 界面可重构的虚拟应用系统和方法 | |
| CN112612531B (zh) | 应用程序启动方法、装置、电子设备及存储介质 | |
| CN117827343A (zh) | 一种显示界面的换肤方法、装置、车辆和存储介质 | |
| CN117882055A (zh) | 将编辑并继续与热重载组合的源代码编辑 | |
| CN107329755A (zh) | 一种hzphp框架 | |
| CN112783776A (zh) | 一种基于接口路由的测试方法、装置和电子设备 | |
| Gioachin et al. | Debugging large scale applications in a virtualized environment |
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 | ||
| TA01 | Transfer of patent application right |
Effective date of registration: 20240129 Address after: Room 102, floor 1, building 1, No. 2, Chuangye Road, Haidian District, Beijing 100085 Applicant after: Seashell Housing (Beijing) Technology Co.,Ltd. Country or region after: China Address before: 101399 room 24, 62 Farm Road, Erjie village, Yangzhen, Shunyi District, Beijing Applicant before: Beijing fangjianghu Technology Co.,Ltd. Country or region before: China |
|
| TA01 | Transfer of patent application right | ||
| GR01 | Patent grant | ||
| GR01 | Patent grant |