[发明专利]一种更换JS引擎的方法及装置有效
申请号: | 201710150699.3 | 申请日: | 2017-03-14 |
公开(公告)号: | CN106933651B | 公开(公告)日: | 2020-10-16 |
发明(设计)人: | 徐佳宏;朱吕亮;梁达源 | 申请(专利权)人: | 深圳市茁壮网络股份有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F16/958 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
地址: | 518004 广东省*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 更换 js 引擎 方法 装置 | ||
本发明提供的更换JS引擎的方法及装置,在将私有对象外层文件都实现后,并完成目标JS引擎对webcore的桥接后,通过根据目标JS引擎的结构定义各个私有对象的公共接口函数,实现更换JS引擎时私有对象中间层的过渡,并通过调用公共接口函数运行目标JS引擎。定义各个私有对象的公共接口函数,避免了现有技术中需要针对每个私有对象依次创建包含相应私有对象具体实现函数的内层文件,也就是说,避免了对各个私有对象实现函数的再次修改,缩短了更换JS引擎的开发周期,降低了更换JS引擎的开发成本。
技术领域
本发明涉及JS引擎技术领域,更具体的,涉及一种更换JS引擎的方法及装置。
背景技术
浏览器内核主要分为两个模块:一个模块负责解析HTML网页的webcore,而另一个模块的作用是解析JavaScript脚本,我们一般称之为JavaScript引擎。JavaScript引擎简称JS引擎,是一个专门处理JavaScript脚本的虚拟机,目前主要包括jscore和V8两种引擎。
JavaScript中所有事物,包括字符串、数值、数组和函数等都是对象,对象是带有属性和方法的特殊数据类型。JavaScript支持三种对象,内置对象、浏览器私有对象和自定义对象。对象包含两个要素:1.用来描述对象特性的一组数据,也就是若干变量,通常称为属性。2.用来操作对象特性的若干动作,也就是若干函数,通常称为方法。
由于浏览器要适应不同的环境,所以替换JS引擎在所难免,例如从jscore引擎替换到V8引擎,就需要对浏览器模块做一定的修改。对于内置对象,大多数主流的JS引擎已经实现了,替换JS引擎也不必再去实现。但是,浏览器私有对象则不同,主流的JS引擎并没有实现,因为私有对象是根据需求来设计的,所以更换JS引擎后一般都要重新将私有对象实现一遍。
私有对象的实现方法,首先要创建所有私有对象的IDL文件;然后根据私有对象的IDL文件运行Perl脚本,自动生成对象的外层文件JSMyObject.cpp,运行程序时,浏览器的Binding模块就会调用外层文件里的函数;最后创建MyObject.cpp(MyObject表示对象的名称),并在其中实现私有对象的具体内容,供外层文件JSMyObject.cpp使用。
由于浏览器私有对象比较多,如果重新实现,开发周期就比较长,造成更换JS引擎的成本较高。
发明内容
有鉴于此,本发明提供了一种更换JS引擎的方法及装置,构造中间层的公共接口函数,通过调用公共接口函数联结更换后的JS引擎,不需要再次修改私有对象的内容,缩短更换JS引擎的开发周期,降低开发成本。
具体技术方案如下:
一种更换JS引擎的方法,所述方法包括:
生成每个私有对象符合目标JS引擎语法的外层文件;
当浏览器的Binding模块调用各个所述外层文件时,实现目标JS引擎对webcore的桥接;
根据目标JS引擎的结构定义各个所述私有对象的公共接口函数,并将所述公共接口函数的声明写入头文件中;
调用所述头文件中的所述公共接口函数,运行所述目标JS引擎。
优选的,所述生成每个私有对象符合目标JS引擎语法的外层文件,包括:
按所述目标JS引擎中IDL文件的语法规则,对原JS引擎中每个私有对象的IDL文件的语法进行修改,得到多个修改后的IDL文件;
分别将各个所述修改后的IDL文件写入Perl脚本;
运行各个所述Perl脚本,生成各个所述私有对象的外层文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市茁壮网络股份有限公司,未经深圳市茁壮网络股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710150699.3/2.html,转载请声明来源钻瓜专利网。