CN111427622B - 应用程序中脚本代码的执行方法及装置 - Google Patents

应用程序中脚本代码的执行方法及装置 Download PDF

Info

Publication number
CN111427622B
CN111427622B CN201811583819.XA CN201811583819A CN111427622B CN 111427622 B CN111427622 B CN 111427622B CN 201811583819 A CN201811583819 A CN 201811583819A CN 111427622 B CN111427622 B CN 111427622B
Authority
CN
China
Prior art keywords
application
sub
execution environment
instance
execution
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
Application number
CN201811583819.XA
Other languages
English (en)
Other versions
CN111427622A (zh
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201811583819.XA priority Critical patent/CN111427622B/zh
Publication of CN111427622A publication Critical patent/CN111427622A/zh
Application granted granted Critical
Publication of CN111427622B publication Critical patent/CN111427622B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Abstract

本申请公开了应用程序中脚本代码的执行方法及装置,其中,所述方法包括:通过脚本引擎创建和初始化所述预置框架的框架执行环境,在所述框架执行环境中执行所述预置框架的代码;确定子应用的页面中的脚本代码执行所需的实例执行接口;在接收到执行子应用页面脚本代码的请求后,通过脚本引擎为子应用页面脚本代码创建一实例执行环境,并将实例执行接口注入所述实例执行环境;所述实例执行环境为独立于所述框架执行环境的受限运行环境;在所创建的所述实例执行环境中执行所述子应用页面脚本代码。通过该方法,可以避免子应用页面的业务代码干扰和入侵框架逻辑产生的干扰问题,提升了多个子应用接入平台应用运行时的安全性。

Description

应用程序中脚本代码的执行方法及装置
技术领域
本发明涉及应用脚本技术领域,特别涉及一种应用程序中脚本代码的执行方法及装置。
背景技术
应用程序特别是如今的移动应用的开发工作中,以Web语言实现上层业务内容是普遍使用的开发方式之一,例如使用Html,Css,以及JavaScript语言来实现应用中的上层代码部分,在底层通过框架引擎提供的接口,又可以调用移动设备的各种组件和传感器的功能,实现了一种非常易于开发和升级的应用开发部署模式。对于APP开发者,特别是以前端内容为主的APP的开发者,可以在平台提供的特定开发框架下,在易于编写的页面中实现丰富的业务逻辑和业务内容,通过特定的引擎接口,在应用中又可以实现特定设备特性的访问,在提高了代码的跨平台特性以及内容升级的灵活性的同时,也提高了开发效率,降低了APP的开发成本。
新技术带来新的应用开发模式可以满足新的市场需求。例如,大型平台应用服务的提供者,除了基于自身平台应用为终端用户提供自有服务外,还为开发者提供了高效的开发框架,平台自身的功能模块或者第三方服务应用,都可以通过所提供的开发框架,以非常高效的方式进行开发和部署,并以很好的兼容性和稳定性接入平台主应用。在此开发模式下开发的应用,除了能够实现前述的优势外,还可以依托于应用平台的品牌,用户等优势,实现多方互利的局面,例如,一方面,应用的接入丰富了平台的服务,另一方面又节约了所接入应用的推广成本,更重要的是节约了用户的访问时间,提高了应用的触达效率。基于这种模式的接入应用对象可以称为独立功能子应用,其可以依托于主应用而运行,例如可以从主应用中提供的接口启动,由主应用分配运行环境等,同时,又在功能和运行特性等方面保持一定的独立性。独立功能子应用通常具有易于实现,功能简洁高效,方便使用等特点。
现有技术中,由于对象化的脚本语言其自身的优越特性和各平台广泛的基础支持,例如JavaScript在多系统平台都有广泛的使用,基于对象化脚本语言的独立功能子应用达到了很大的数量。在用户使用的平台客户端中,通常会使用接入其中的多个独立功能子应用,而由于编码缺陷或者一些接口的不当使用等原因,在独立功能子应用运行的过程中,有时会出现对其它独立功能子应用的运行产生干扰的问题,这种干扰现象可能会导致其它独立功能子应用运行不稳定,一些不良代码甚至还可能造成一些关键信息的泄漏,对信息安全产生影响。因此,需要本领域技术人员解决的问题在于,提供一种应用程序中脚本代码的执行方法,提高独立功能子应用运行的抗干扰能力,以及提升应用平台的运行安全性。
发明内容
本发明提供了应用程序中脚本代码的执行方法及装置,能够避免子应用页面的业务代码干扰和入侵框架逻辑产生的干扰问题,提升多子应用接入平台应用运行时的安全性。
本发明提供了如下方案:
一种应用程序中脚本代码的执行方法,所述应用程序中包括至少一个子应用,所述子应用与所述应用程序的功能独立;所述脚本代码包括所述子应用的页面中的脚本代码,所述脚本代码执行过程中使用应用程序中的预置框架提供的实例执行接口;所述方法包括:
通过脚本引擎创建和初始化所述预置框架的框架执行环境,在所述框架执行环境中执行所述预置框架的代码;
确定子应用的页面中的脚本代码执行所需的实例执行接口;
在接收到执行子应用页面脚本代码的请求后,通过脚本引擎为所述子应用页面脚本代码创建一实例执行环境,并将所述实例执行接口注入所述实例执行环境;所述实例执行环境为独立于所述框架执行环境的受限运行环境;
在所创建的所述实例执行环境中执行所述子应用页面脚本代码。
一种应用程序中脚本代码的执行装置,所述应用程序中包括至少一个子应用,所述子应用与所述应用程序的功能独立;所述脚本代码包括所述子应用的页面中的脚本代码,所述脚本代码执行过程中使用应用程序中的预置框架提供的实例执行接口;所述装置包括:
框架环境创建单元,用于通过脚本引擎创建和初始化所述预置框架的框架执行环境,在所述框架执行环境中执行所述预置框架的代码;
执行接口确定单元,用于确定子应用的页面中的脚本代码执行所需的实例执行接口;
实例环境创建单元,用于在接收到执行子应用页面脚本代码的请求后,通过脚本引擎为所述子应用页面脚本代码创建一实例执行环境,并将所述实例执行接口注入所述实例执行环境;所述实例执行环境为独立于所述框架执行环境的受限运行环境;
脚本代码执行单元,用于在所创建的所述实例执行环境中执行所述子应用页面脚本代码。
一种计算机系统,包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,用于执行应用程序中的脚本代码,其中,所述应用程序中包括至少一个子应用,所述子应用与所述应用程序的功能独立;所述脚本代码包括所述子应用的页面中的脚本代码,所述脚本代码执行过程中使用应用程序中的预置框架提供的实例执行接口;所述程序指令具体执行如下操作:
通过脚本引擎创建和初始化所述预置框架的框架执行环境,在所述框架执行环境中执行所述预置框架的代码;
确定子应用的页面中的脚本代码执行所需的实例执行接口;
在接收到执行子应用页面脚本代码的请求后,通过脚本引擎为所述子应用页面脚本代码创建一实例执行环境,并将所述实例执行接口注入所述实例执行环境;所述实例执行环境为独立于所述框架执行环境的受限运行环境;
在所创建的所述实例执行环境中执行所述子应用页面脚本代码。
根据本申请提供的具体实施例,本申请公开了以下技术效果:
通过本申请,可以在应用程序中的子应用页面脚本代码执行时,为其依赖的框架代码创建框架执行环境,并在其中运行预置框架的代码,为子应用页面的脚本代码创建实例执行环境,并在其中执行子应用页面的脚本代码,框架执行环境和实例执行环境相对独立,子应用页面的脚本代码执行所需的实例执行接口通过注入执行环境的方式提供,且实例执行环境为一个受限的运行环境,页面的脚本代码在实例执行环境内以受限的方式运行,其执行过程无法突破实例执行环境,避免了对框架中全局变量的不当访问,从而阻止了子应用页面的业务代码干扰甚至入侵框架逻辑而产生的干扰问题,同时也提升了多子应用接入平台应用运行时的安全性。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的方法原理的示意图;
图2是本申请实施例提供的方法的流程图;
图3是本申请实施例提供的装置的示意图;
图4是本申请实施例提供的系统的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
在应用程序中可以通过页面的脚本代码执行来实现相应的业务功能,平台化的框架结构中,页面中业务脚本代码通常在特定的平台开发框架中编码,以使用适配于平台应用的接口,以及使得开发出的独立功能子应用(简称子应用)更加兼容和稳定的运行在其依赖的平台应用中,以高效的脚本代码实现简洁的功能,便于用户使用。平台应用也可以被视作独立功能子应用的宿主应用,简称主应用,子应用的运行通常在某些方面依赖于主应用,例如通过主应用提供的接口启动,由主应用分配运行环境等,而两者之间通常在业务功能上是独立的。在实际应用中,可以将平台开发框架提供给开发者使用,开发者可以根据开发框架的标准,使用开发框架提供的开发工具,开发可以接入主应用的子应用,开发者可以是平台外的第三方开发者,通过开发平台开发和接入的子应用来为用户提供内容或服务,其所开发的应用可以为可接入主应用的第三方应用,即主应用与子应用可以来自不同的提供方。主应用中通常集成了前端框架代码,以通过前端框架代码的运行为子应用运行提供必要的支持,如在通过调用前端框架的API来启动子应用的执行环境,在其中执行子应用的脚本代码,提供相应的运行接口等。在现有技术中,应用程序中独立功能子应用页面中的脚本代码在运行时,会由脚本引擎为前端框架代码以及页面脚本代码分配共享的上下文执行环境。请参看图1,为本申请实施例提供的方法原理的示意图。
首先如图1中的1(a)所示,在现有技术的实现方法中,子程序页面的脚本代码执行时可以通过脚本引擎分配的一上下文运行环境,而该上下文执行环境通常是框架代码和页面脚本代码所共享的,在先后运行不同的业务时,不同业务页面的脚本代码实例可能会进入同一框架代码所关联的上下文执行环境。而出于代码运行的安全性和稳定性的考虑,在运行的框架代码和页面脚本代码之间需要实现一定的隔离性,以实现框架提供的方法接口可被合理使用的同时,也要保证的框架内部逻辑不受外部干扰,这些干扰包括全局变量的不当访问和非法改写等。
在现有技术中,一种实现隔离的方法是闭包,即通过匿名函数的方式将框架功能提供的接口透出给子应用的页面脚本实例使用,在闭包环境中可以对全局变量的命名进行处理,使闭包内的代码执行时访问不到真实的全局变量,这种方式从变量的层面对共享执行环境中运行的框架代码和页面脚本代码实现一定的隔离,但这种方式首先要枚举全局变量,另外,对于一些特殊的对象,如复用的基础对象原型链无法实现彻底隔离,另外,通过一些特殊手段,页面脚本代码可以绕过封装的API调用,而访问到框架执行环境的真实全局变量。这种访问至少可能导致两方面的问题,其一在其它业务应用的脚本执行时,若依赖相同的接口遭到修改则可能造成运行不稳定,另一方面则可能造成信息泄漏等安全问题。
如图1中的1(b)所示,为本方案的实现原理示意图,本方案从执行环境的层次对框架代码和页面脚本代码进行运行态的隔离,创建互相独立的隔离运行环境来分别执行框架代码和子应用的页面脚本代码,页面脚本代码执行所需的框架接口也可以正常的提供给页面实例使用,实现了框架代码和页面脚本代码实现更好的隔离性的同时,也保证了子应用页面脚本代码的安全稳定的执行。下面详细介绍本申请实施例提供的应用程序中脚本代码的执行方法,其中,应用程序中可以包括至少一个子应用,子应用与应用程序的功能独立;脚本代码可以是子应用的页面中的脚本代码,脚本代码执行过程中使用应用程序中的预置框架提供的实例执行接口。参见图2,为本申请实施例提供的应用程序中脚本代码的执行方法的流程图,如图所示,该方法包括以下步骤:
S210:通过脚本引擎创建和初始化所述预置框架的框架执行环境,在所述框架执行环境中执行所述预置框架的代码;
首先,可以通过脚本引擎创建和初始化执行应用程序中集成的预置框架的框架执行环境,用于执行预置框架的框架代码。如前所述,在本申请实施例提供的方法中,是从执行环境的层次对框架代码和页面脚本代码进行隔离,分别为预置框架的代码和子应用页面的脚本代码创建不同的执行环境。由于预置框架通常集成于平台应用程序,即主程序中,且页面的脚本代码的执行通常依赖于预置框架,或者需要调用前端框架提供的接口实现,例如,子应用脚本代码是在特定开发框架下以该框架的标准编写,则在平台应用中运行该子应用时,其中的脚本代码的运行就需要集成于平台应用中的相应的前端框架的支持,如脚本代码的解释执行,渲染等都需要依赖于前端框架,因此,通常首先通过脚本引擎创建和初始化预置框架的框架执行环境。在创建了框架执行环境后,可以对其进行初始化。
在大部分平台化应用程序中,其中集成的预置框架会为其中的大部分甚至全部功能模块提供支持,因此,创建和初始化预置框架的框架执行环境可以是在主应用程序启动后执行,框架执行环境的生命周期可以与主应用程序的生命周期相同,即随着应用程序的启动而创建,在应用程序结束时释放;当然,根据实际的应用需求,框架执行环境也可以按需创建和分配,例如可以在某个需要预置框架支持的子应用发出启动请求后,创建框架执行环境来支持子程序页面脚本代码的执行。
框架执行环境是独立于子应用页面脚本代码的实例执行环境的,另外,框架执行环境可以是脚本引擎创建的受限运行环境,以实现更好的与实例执行环境的隔离性,例如在脚本引擎中可以创建沙箱运行环境,在这类脚本引擎中,可以创建独立的沙箱环境作为框架执行环境。另外,还可以在脚本引擎为预置框架的代码创建框架执行环境时,加入特定的限制处理,以模拟类似于沙箱的执行环境,当然其仍然独立于实例执行环境。
S220:确定子应用的页面中的脚本代码执行所需的实例执行接口;
创建和初始化预置框架的框架执行环境后,可以确定子应用的页面中的脚本代码执行所需的接口。具体实现时,可以根据预定义来实现,即预定义确定子应用的页面中脚本代码执行所需的接口,这种实现方式下,预定义接口可以包含所有前端的预置框架向实例提供的接口。另一种实施方式下,可以根据子应用的业务类型来确定子应用的页面中的脚本代码执行所需的实例执行接口,例如,可以根据子应用是平台内应用还是第三方应用,来确定向子应用的页面中的脚本代码执行所提供的实例执行接口。另外,在某些实现下,子应用以包的形式实现,子应用脚本代码保存在包文件中,同时,提供有一份子应用所依赖的接口的描述,在向这种子应用提供所需的实例执行接口时,可以首先读取子应用程序包中的依赖接口描述文件,根据依赖接口描述文件中的子应用所依赖的接口的描述,确定子应用的页面中的脚本代码执行所需的实例执行接口。
S230:在接收到执行子应用页面脚本代码的请求后,通过脚本引擎为所述子应用页面脚本代码创建一实例执行环境,并将所述实例执行接口注入所述实例执行环境;所述实例执行环境为独立于所述框架执行环境的受限运行环境;
在接收到执行子应用页面脚本代码的请求后,可以通过脚本引擎为子应用页面脚本代码创建一实例执行环境。首先,实例执行环境首先为独立于框架执行环境的执行环境,例如在图1中,示出了两个Instance实例的上下文执行环境均为独立于框架执行环境的实例执行环境。而且,不同实例执行环境之间是完全独立的。这中独立性可以通过沙箱环境来实现,即通过脚本引擎为子应用页面脚本代码创建独立的沙箱环境,如同为框架代码创建沙箱环境类似,可以通过脚本引擎创建独立的沙箱运行环境作为实例执行环境,当然,也可以通过脚本引擎为子应用页面脚本代码创建实例执行环境时,加入特定的限制,以模拟类似于沙箱的执行环境,作为子应用页面脚本代码的实例执行环境。
实例执行环境的受限性主要通过以下方面实现:在子应用页面脚本代码执行过程中,在实例执行环境内调用接口资源,这样,子应用页面脚本代码执行只在相应的实例执行环境内部运行,并且仅在为其创建的独立的受到隔离的实例执行环境内部的调用接口资源。
原有方式中通过闭包方式为脚本代码执行透出的接口API等,在框架代码和页面脚本实例按照本方法在互相隔离的环境中分别执行的条件下,可以在通过脚本引擎为子应用页面脚本代码创建实例执行环境后,将实例执行接口注入实例执行环境,使页面脚本代码执行的过程中能够且仅能使用实例执行环境中注入的实例执行接口。另外,实例执行环境为独立于框架执行环境的受限运行环境,其中还可以包括独立的全局变量,在子应用页面脚本代码执行的过程中,若产生访问全局变量的请求,则返回实例执行环境中包括独立的全局变量以供访问。这样,即使页面脚本代码执行时实施绕过执行接口获取全局变量的行为,也只是对独立实例执行环境内部的全局变量产生访问行为,行为所产生的不良影响不会波及框架执行环境。当其他业务的子应用页面脚本在另外创建的独立的实例执行环境中执行时,也会采取相同的方式,因而完全会受到其它,尤其是先前运行的子应用页面脚本的影响。也即,在子应用页面脚本代码执行过程中,在调用预置框架提供的实例执行接口时,调用被注入实例执行环境的实例执行接口,来实现相应的功能,而在子应用页面脚本代码执行过程中,在执行访问全局变量的代码时,访问相应实例执行环境内部的所述独立的全局变量,从而避免了前述的“干扰”问题,以及信息泄露带来的安全问题。
具体将实例执行接口注入实例执行环境,可以通过从框架执行环境向实例执行环境传递引用的方式,将实例执行接口注入实例执行环境。当实例执行环境是通过脚本引擎创建的沙箱的形式实现时,可以通过脚本引擎为所述子应用页面脚本代码创建一沙箱环境,并将实例执行接口注入该沙箱环境,进而在该沙箱环境中运行相应的子应用页面脚本代码。
S240:在所创建的所述实例执行环境中执行所述子应用页面脚本代码。
在所创建的实例执行环境中可以执行相应的子应用页面脚本代码。在实例执行环境运行子应用页面脚本代码的过程中,还可以通过从框架执行环境向实例执行环境传递引用的方式,从实例执行环境向实例执行环境发送交互信息,例如返回页面渲染结果,向实例执行环境发送UI事件信息,或某个对象的生命周期信息等。在子应用结束运行后,可以释放相应的实例执行环境所占用的资源。如前所述,在独立的受限的实例执行环境中执行子应用页面脚本代码的过程中,其执行所依赖的实例执行接口可以被注入到实例执行环境中,代码对全局变量的不良访问行为也会别限制在该实例执行环境中,实例执行环境所占用的资源,不良访问造成的对实例执行环境的影响也随之消失,完全不会对后续其它子应用的运行产生影响。子应用页面结束后,可以销毁相应的实例执行环境,即实例执行环境的生命周期与相应子应用的页面的生命周期相同。
以上提供的应用程序中脚本代码的执行方法中,应用程序可以包括移动终端中的应用程序,子应用可以包括移动终端中的应用程序的子应用,脚本代码包括移动终端中的应用程序的子应用页面中的JavaScript脚本代码。当然,这只是一种示例性的应用方式举例,其不应被理解为对本申请提出的方法的限制。
以上对本申请实施例提供的应用程序中脚本代码的执行方法进行了详细的介绍,通过该方法,可以在应用程序中的子应用页面脚本代码执行时,为其依赖的框架代码创建框架执行环境,并在其中运行预置框架的代码,为子应用页面的脚本代码创建实例执行环境,并在其中执行子应用页面的脚本代码,框架执行环境和实例执行环境相对独立,子应用页面的脚本代码执行所需的实例执行接口通过注入执行环境的方式提供,且实例执行环境为一个受限的运行环境,页面的脚本代码在实例执行环境内以受限的方式运行,其执行过程无法突破实例执行环境,避免了对框架中全局变量的不当访问,从而阻止了子应用页面的业务代码干扰和入侵框架逻辑产生的干扰问题以及数据安全问题,提升了多子应用接入平台应用的运行安全性。
与本申请实施例提供的应用程序中脚本代码的执行方法相对应,还提供了一种应用程序中脚本代码的执行装置,请参看图3,为本申请实施例提供的应用程序中脚本代码的执行装置的示意图,其中,应用程序中包括至少一个子应用,子应用与应用程序的功能独立;脚本代码包括子应用的页面中的脚本代码,脚本代码执行过程中使用应用程序中的预置框架提供的实例执行接口。如图3所示,该装置可以包括:
框架环境创建单元310,用于通过脚本引擎创建和初始化所述预置框架的框架执行环境,在所述框架执行环境中执行所述预置框架的代码;
执行接口确定单元320,用于确定子应用的页面中的脚本代码执行所需的实例执行接口;
实例环境创建单元330,用于在接收到执行子应用页面脚本代码的请求后,通过脚本引擎为所述子应用页面脚本代码创建一实例执行环境,并将所述实例执行接口注入所述实例执行环境;所述实例执行环境为独立于所述框架执行环境的受限运行环境;
脚本代码执行单元340,用于在所创建的所述实例执行环境中执行所述子应用页面脚本代码。
其中,在子应用页面脚本代码执行过程中,可以在实例执行环境内调用接口资源。具体的,在子应用页面脚本代码执行过程中,在调用预置框架提供的实例执行接口时,调用被注入实例执行环境的实例执行接口,以实现相应功能。另外,在子应用页面脚本代码执行过程中,在执行访问全局变量的代码时,访问实例执行环境内部的独立的全局变量。
在另一种实现方式下,实例环境创建单元330,可以用于:
通过脚本引擎为子应用页面脚本代码创建一沙箱环境,并将实例执行接口注入沙箱环境。
执行接口确定单元320,具体可以用于,读取子应用程序包中的依赖接口描述文件,根据依赖接口描述文件中的子应用所依赖的接口的描述,确定子应用的页面中的脚本代码执行所需的实例执行接口。
应用程序中脚本代码的执行装置还可以包括:
接口注入单元,用于通过从框架执行环境向实例执行环境传递引用的方式,将实例执行接口注入实例执行环境。
应用程序中脚本代码的执行装置还可以包括:
交互信息处理单元,用于在子应用页面脚本代码在实例执行环境运行的过程中,通过从框架执行环境向实例执行环境传递引用的方式,从实例执行环境向实例执行环境发送交互信息。
在另一种实现方式下,所提供的应用程序中脚本代码的执行装置还可以包括:资源释放单元,用于在子应用结束运行后,释放实例执行环境所占用的资源。
其中,应用程序可以包括移动终端中的应用程序,子应用可以包括移动终端中的应用程序的子应用,脚本代码可以包括移动终端中的应用程序的子应用页面中的JavaScript脚本代码。所创建的框架执行环境也可以为受限运行环境。框架执行环境的生命周期可以与应用程序的生命周期相同;实例执行环境的生命周期可以与相应子应用的页面的生命周期相同。
以上对本申请实施例提供的应用程序中脚本代码的执行装置进行了的介绍,通过该装置,可以在应用程序中的子应用页面脚本代码执行时,为其依赖的框架代码创建框架执行环境,并在其中运行预置框架的代码,为子应用页面的脚本代码创建实例执行环境,并在其中执行子应用页面的脚本代码,框架执行环境和实例执行环境相对独立,子应用页面的脚本代码执行所需的实例执行接口通过注入执行环境的方式提供,且实例执行环境为一个受限的运行环境,页面的脚本代码在实例执行环境内以受限的方式运行,其执行过程无法突破实例执行环境,避免了对框架中全局变量的不当访问,从而阻止了子应用页面的业务代码干扰和入侵框架逻辑产生的干扰问题,提升了多子应用接入平台应用运行时的安全性。
一种计算机系统,其特征在于,包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,用于执行应用程序中的脚本代码,其中,所述应用程序中包括至少一个子应用,所述子应用与所述应用程序的功能独立;所述脚本代码包括所述子应用的页面中的脚本代码,所述脚本代码执行过程中使用应用程序中的预置框架提供的实例执行接口;程序指令具体执行如下操作:
通过脚本引擎创建和初始化所述预置框架的框架执行环境,在所述框架执行环境中执行所述预置框架的代码;
确定子应用的页面中的脚本代码执行所需的实例执行接口;
在接收到执行子应用页面脚本代码的请求后,通过脚本引擎为所述子应用页面脚本代码创建一实例执行环境,并将所述实例执行接口注入所述实例执行环境;所述实例执行环境为独立于所述框架执行环境的受限运行环境;
在所创建的所述实例执行环境中执行所述子应用页面脚本代码。
其中,图4示例性的展示出了电子设备的架构,例如,设备400可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理,飞行器等。
参照图4,设备400可以包括以下一个或多个组件:处理组件402,存储器404,电源组件406,多媒体组件408,音频组件410,输入/输出(I/O)的接口412,传感器组件414,以及通信组件416。
处理组件402通常控制设备400的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件402可以包括一个或多个处理器420来执行指令,以完成本公开技术方案提供的视频播放方法中的当满足预设条件时,生成流量压缩请求,并发送给服务器,其中所述流量压缩请求中记录有用于触发服务器获取目标关注区域的信息,所述流量压缩请求用于请求服务器优先保证目标关注区域内视频内容的码率;根据服务器返回的码流文件播放所述码流文件对应的视频内容,其中所述码流文件为服务器根据所述流量压缩请求对所述目标关注区域之外的视频内容进行码率压缩处理得到的视频文件的全部或部分步骤。此外,处理组件402可以包括一个或多个模块,便于处理组件402和其他组件之间的交互。例如,处理组件402可以包括多媒体模块,以方便多媒体组件408和处理组件402之间的交互。
存储器404被配置为存储各种类型的数据以支持在设备400的操作。这些数据的示例包括用于在设备400上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器404可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件406为设备400的各种组件提供电力。电源组件406可以包括电源管理系统,一个或多个电源,及其他与为设备400生成、管理和分配电力相关联的组件。
多媒体组件408包括在设备400和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件408包括一个前置摄像头和/或后置摄像头。当设备400处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件410被配置为输出和/或输入音频信号。例如,音频组件410包括一个麦克风(MIC),当设备400处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器404或经由通信组件416发送。在一些实施例中,音频组件410还包括一个扬声器,用于输出音频信号。
I/O接口412为处理组件402和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件414包括一个或多个传感器,用于为设备400提供各个方面的状态评估。例如,传感器组件414可以检测到设备400的打开/关闭状态,组件的相对定位,例如所述组件为设备400的显示器和小键盘,传感器组件414还可以检测设备400或设备400一个组件的位置改变,用户与设备400接触的存在或不存在,设备400方位或加速/减速和设备400的温度变化。传感器组件414可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件414还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件414还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件416被配置为便于设备400和其他设备之间有线或无线方式的通信。设备400可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件416经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件416还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,设备400可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器404,上述指令可由设备400的处理器420执行以完成本公开技术方案提供的视频播放方法中的当满足预设条件时,生成流量压缩请求,并发送给服务器,其中所述流量压缩请求中记录有用于触发服务器获取目标关注区域的信息,所述流量压缩请求用于请求服务器优先保证目标关注区域内视频内容的码率;根据服务器返回的码流文件播放所述码流文件对应的视频内容,其中所述码流文件为服务器根据所述流量压缩请求对所述目标关注区域之外的视频内容进行码率压缩处理得到的视频文件。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本申请所提供的应用程序中脚本代码的执行方法及装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。

Claims (14)

1.一种应用程序中脚本代码的执行方法,其特征在于,所述应用程序中包括至少一个子应用,所述子应用与所述应用程序的功能独立;所述脚本代码包括所述子应用的页面中的脚本代码,所述脚本代码执行过程中使用应用程序中的预置框架提供的实例执行接口;所述方法包括:
通过脚本引擎创建和初始化所述预置框架的框架执行环境,在所述框架执行环境中执行所述预置框架的代码;
确定子应用的页面中的脚本代码执行所需的实例执行接口;
在接收到执行子应用页面脚本代码的请求后,通过脚本引擎为所述子应用页面脚本代码创建一实例执行环境,并将所述实例执行接口注入所述实例执行环境;所述实例执行环境为独立于所述框架执行环境的受限运行环境;
在所创建的所述实例执行环境中执行所述子应用页面脚本代码。
2.根据权利要求1所述的方法,其特征在于,在所述子应用页面脚本代码执行过程中,在所述实例执行环境内调用接口资源。
3.根据权利要求2所述的方法,其特征在于,所述在所述子应用页面脚本代码执行过程中,在所述实例执行环境内调用接口资源,包括:
在子应用页面脚本代码执行过程中,在调用预置框架提供的实例执行接口时,调用被注入所述实例执行环境的所述实例执行接口。
4.根据权利要求2所述的方法,其特征在于,所述在所述子应用页面脚本代码执行过程中,在所述实例执行环境内调用接口资源,包括:
在子应用页面脚本代码执行过程中,在执行访问全局变量的代码时,访问所述实例执行环境内部的独立的全局变量。
5.根据权利要求1所述的方法,其特征在于,所述通过脚本引擎为所述子应用页面脚本代码创建一实例执行环境,并将所述实例执行接口注入所述实例执行环境,包括:
通过脚本引擎为所述子应用页面脚本代码创建一沙箱环境,并将所述实例执行接口注入所述沙箱环境。
6.根据权利要求1所述的方法,其特征在于,所述确定子应用的页面中的脚本代码执行所需的实例执行接口,包括:
读取所述子应用程序包中的依赖接口描述文件,根据所述依赖接口描述文件中的子应用所依赖的接口的描述,确定子应用的页面中的脚本代码执行所需的实例执行接口。
7.根据权利要求1所述的方法,其特征在于,所述将所述实例执行接口注入所述实例执行环境,包括:
通过从框架执行环境向实例执行环境传递引用的方式,将所述实例执行接口注入所述实例执行环境。
8.根据权利要求1所述的方法,其特征在于,所述实例执行环境中包括独立的全局变量;所述方法还包括:
在子应用页面脚本代码执行的过程中,若产生访问全局变量的请求,则返回所述实例执行环境中包括独立的全局变量以供访问。
9.根据权利要求1所述的方法,其特征在于,还包括:
在所述子应用页面脚本代码在所述实例执行环境运行的过程中,通过从框架执行环境向实例执行环境传递引用的方式,从实例执行环境向实例执行环境发送交互信息。
10.根据权利要求1所述的方法,其特征在于,还包括:
在所述子应用结束运行后,释放所述实例执行环境所占用的资源。
11.根据权利要求1所述的方法,其特征在于,所述应用程序包括移动终端中的应用程序,所述子应用包括所述移动终端中的应用程序的子应用,所述脚本代码包括移动终端中的应用程序的子应用页面中的JavaScript脚本代码。
12.根据权利要求1所述的方法,其特征在于,所述框架执行环境的生命周期为所述应用程序的生命周期;所述实例执行环境的生命周期为相应子应用的页面的生命周期。
13.一种应用程序中脚本代码的执行装置,其特征在于,所述应用程序中包括至少一个子应用,所述子应用与所述应用程序的功能独立;所述脚本代码包括所述子应用的页面中的脚本代码,所述脚本代码执行过程中使用应用程序中的预置框架提供的实例执行接口;所述装置包括:
框架环境创建单元,用于通过脚本引擎创建和初始化所述预置框架的框架执行环境,在所述框架执行环境中执行所述预置框架的代码;
执行接口确定单元,用于确定子应用的页面中的脚本代码执行所需的实例执行接口;
实例环境创建单元,用于在接收到执行子应用页面脚本代码的请求后,通过脚本引擎为所述子应用页面脚本代码创建一实例执行环境,并将所述实例执行接口注入所述实例执行环境;所述实例执行环境为独立于所述框架执行环境的受限运行环境;
脚本代码执行单元,用于在所创建的所述实例执行环境中执行所述子应用页面脚本代码。
14.一种计算机系统,其特征在于,包括:
一个或多个处理器;以及
与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,用于执行应用程序中的脚本代码,其中,所述应用程序中包括至少一个子应用,所述子应用与所述应用程序的功能独立;所述脚本代码包括所述子应用的页面中的脚本代码,所述脚本代码执行过程中使用应用程序中的预置框架提供的实例执行接口;所述程序指令具体执行如下操作:
通过脚本引擎创建和初始化所述预置框架的框架执行环境,在所述框架执行环境中执行所述预置框架的代码;
确定子应用的页面中的脚本代码执行所需的实例执行接口;
在接收到执行子应用页面脚本代码的请求后,通过脚本引擎为所述子应用页面脚本代码创建一实例执行环境,并将所述实例执行接口注入所述实例执行环境;所述实例执行环境为独立于所述框架执行环境的受限运行环境;
在所创建的所述实例执行环境中执行所述子应用页面脚本代码。
CN201811583819.XA 2018-12-24 2018-12-24 应用程序中脚本代码的执行方法及装置 Active CN111427622B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811583819.XA CN111427622B (zh) 2018-12-24 2018-12-24 应用程序中脚本代码的执行方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811583819.XA CN111427622B (zh) 2018-12-24 2018-12-24 应用程序中脚本代码的执行方法及装置

Publications (2)

Publication Number Publication Date
CN111427622A CN111427622A (zh) 2020-07-17
CN111427622B true CN111427622B (zh) 2023-05-16

Family

ID=71545978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811583819.XA Active CN111427622B (zh) 2018-12-24 2018-12-24 应用程序中脚本代码的执行方法及装置

Country Status (1)

Country Link
CN (1) CN111427622B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858675A (zh) * 2020-07-24 2020-10-30 北京玉符科技服务有限公司 自定义属性编辑器
CN113221097A (zh) * 2021-05-10 2021-08-06 挂号网(杭州)科技有限公司 一种代码执行方法、装置、电子终端及存储介质
CN113282954B (zh) * 2021-05-27 2024-02-23 北京达佳互联信息技术有限公司 基于业务平台的业务执行方法及装置
CN115826980B (zh) * 2022-10-10 2023-07-21 中科三清科技有限公司 数据处理方法、装置、存储介质及电子设备

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6662236B1 (en) * 1998-06-29 2003-12-09 International Business Machines Corporation Runtime object binding in scripting
WO2006042300A2 (en) * 2004-10-12 2006-04-20 Mindego, Inc. System and method for creating, distributing, and executing rich multimedia applications
CN102141917A (zh) * 2011-04-02 2011-08-03 南京天溯自动化控制系统有限公司 基于IronPython脚本语言的多业务联动实现方法
CN102646035A (zh) * 2012-02-17 2012-08-22 南京南瑞继保电气有限公司 基于api接口和脚本定义相结合的可视化代码生成方法
CN103412890A (zh) * 2013-07-19 2013-11-27 北京亿赞普网络技术有限公司 一种网页加载方法和装置
CN103543991A (zh) * 2012-07-09 2014-01-29 百度在线网络技术(北京)有限公司 一种扩展浏览器功能的方法及浏览器系统
EP2907290A1 (en) * 2012-10-10 2015-08-19 Citrix Systems Inc. Policy-based application management
WO2016049413A1 (en) * 2014-09-26 2016-03-31 Microsoft Technology Licensing, Llc Compiler caching for runtime routine redundancy tracking
US9367305B1 (en) * 2015-05-27 2016-06-14 Runnable Inc. Automatic container definition
CN106569900A (zh) * 2016-10-28 2017-04-19 腾讯科技(深圳)有限公司 应用程序处理方法和装置
CN107766050A (zh) * 2017-10-31 2018-03-06 新华三云计算技术有限公司 一种异构应用的部署方法以及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7213175B2 (en) * 2002-01-09 2007-05-01 Microsoft Corporation Methods and systems for managing an application's relationship to its run-time environment
US20080244062A1 (en) * 2007-03-26 2008-10-02 Microsoft Corporation Scenario based performance testing
US8639729B2 (en) * 2010-12-20 2014-01-28 Sap Ag Executing a business process in a framework
CN104253831B (zh) * 2013-06-26 2018-05-11 国际商业机器公司 一种用于在云计算环境中部署应用的方法和系统
US11283866B2 (en) * 2014-07-07 2022-03-22 Citrix Systems, Inc. Providing remote access to applications through interface hooks

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6662236B1 (en) * 1998-06-29 2003-12-09 International Business Machines Corporation Runtime object binding in scripting
WO2006042300A2 (en) * 2004-10-12 2006-04-20 Mindego, Inc. System and method for creating, distributing, and executing rich multimedia applications
CN102141917A (zh) * 2011-04-02 2011-08-03 南京天溯自动化控制系统有限公司 基于IronPython脚本语言的多业务联动实现方法
CN102646035A (zh) * 2012-02-17 2012-08-22 南京南瑞继保电气有限公司 基于api接口和脚本定义相结合的可视化代码生成方法
CN103543991A (zh) * 2012-07-09 2014-01-29 百度在线网络技术(北京)有限公司 一种扩展浏览器功能的方法及浏览器系统
EP2907290A1 (en) * 2012-10-10 2015-08-19 Citrix Systems Inc. Policy-based application management
CN103412890A (zh) * 2013-07-19 2013-11-27 北京亿赞普网络技术有限公司 一种网页加载方法和装置
WO2016049413A1 (en) * 2014-09-26 2016-03-31 Microsoft Technology Licensing, Llc Compiler caching for runtime routine redundancy tracking
US9367305B1 (en) * 2015-05-27 2016-06-14 Runnable Inc. Automatic container definition
CN106569900A (zh) * 2016-10-28 2017-04-19 腾讯科技(深圳)有限公司 应用程序处理方法和装置
CN107766050A (zh) * 2017-10-31 2018-03-06 新华三云计算技术有限公司 一种异构应用的部署方法以及装置

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Xin Huang et al..An open multiple instance learning framework and its application in drug activity prediction problems.Third IEEE Symposium on Bioinformatics and Bioengineering, 2003. Proceedings..2003,全文. *
唐嵩 ; 蒋外文 ; .集成Spring和AJAX技术的银行自助终端应用研究.电子技术与软件工程.2016,(第10期),全文. *
徐隆龙 ; 李莹 ; 白静 ; .移动混合开发框架.计算机系统应用.2014,(第12期),全文. *
杜俊 ; ."互联网+"视野下基于云计算的终身学习平台架构设计.南京广播电视大学学报.2017,(第04期),全文. *
肖伟民 ; 邓浩江 ; 胡琳琳 ; 郭志川 ; .基于容器的Web运行环境轻量级虚拟化方法.计算机应用研究.2017,(第06期),全文. *

Also Published As

Publication number Publication date
CN111427622A (zh) 2020-07-17

Similar Documents

Publication Publication Date Title
CN111427622B (zh) 应用程序中脚本代码的执行方法及装置
CN111026396B (zh) 页面渲染方法、装置、电子设备及存储介质
CN110990075B (zh) 快应用的启动方法、装置、设备及存储介质
CN106406956B (zh) 应用程序的安装方法及装置
CN110874217A (zh) 快应用的界面显示方法、装置及存储介质
CN107423218B (zh) 应用测试方法、装置及终端
CN109117144B (zh) 页面处理方法、装置、终端及存储介质
CN110851108A (zh) 电子设备操作方法、装置、电子设备及存储介质
CN111222014B (zh) 请求处理方法、装置、电子设备及存储介质
CN110851240B (zh) 功能调用方法、装置及存储介质
CN107463372B (zh) 一种数据驱动的页面更新方法和装置
CN111078325B (zh) 应用程序运行方法、装置、电子设备及存储介质
CN116578297A (zh) H5页面的运行方法、装置、电子设备及存储介质
CN107861666B (zh) 桌面应用安装方法及装置
CN113778687B (zh) 内存分配信息处理方法、装置、电子设备及存储介质
CN111104183B (zh) 应用程序运行方法、装置、电子设备及存储介质
CN111338961B (zh) 应用调试方法及装置、电子设备及存储介质
CN109933357B (zh) 应用程序升级方法及装置
CN114117409A (zh) 用户代码的运行方法及装置、电子设备和存储介质
CN112083981A (zh) 一种页面视图组件的创建方法和装置
CN112860625A (zh) 数据获取方法、数据存储方法、装置、设备及存储介质
CN112181406A (zh) 一种渲染引擎的共享方法和装置
CN110865760A (zh) 电子设备操作方法、装置、电子设备及存储介质
CN111597106A (zh) 一种埋点管理方法及装置
CN111008050A (zh) 页面任务执行方法、装置、终端及存储介质

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
GR01 Patent grant
GR01 Patent grant