动态提供兼容JS脚本内容的方法、装置和终端设备制造方法及图纸

技术编号:18657809 阅读:27 留言:0更新日期:2018-08-11 14:21
本申请实施例提供了一种动态提供兼容JS脚本内容的方法、装置和终端设备,所述方法包括:对获得的JS脚本代码进行语法分析,获得运行所述JS脚本代码所需的兼容列表;将所述兼容列表和用户请求中浏览器标识符进行比对,获得所述浏览器运行所述JS脚本代码所需的最小兼容列表;根据所述最小兼容列表转化为兼容代码,并将所述兼容代码与所述JS脚本代码进行合并响应所述用户请求。本申请实施例能够克服现有兼容不同浏览器的JS脚本加载资源浪费和执行速度缓慢的问题,同时也提高了开发人员的开发效率,降低人工成本。

Dynamically providing methods, devices and terminal devices compatible with JS script content

The present embodiment of the application provides a method, apparatus and terminal device for dynamically providing content of a compatible JS script. The method includes: parsing the acquired JS script code, obtaining a compatible list required to run the JS script code, and comparing the compatible list with the browser identifier in the user request. The minimum compatibility list required by the browser to run the JS script code is obtained; the compatibility code is converted into compatibility code according to the minimum compatibility list, and the compatibility code is combined with the JS script code to respond to the user request. The embodiment of the application can overcome the problems of waste of loading resources and slow execution speed of existing JS scripts compatible with different browsers, and also improve the development efficiency of developers and reduce labor costs.

【技术实现步骤摘要】
动态提供兼容JS脚本内容的方法、装置和终端设备
本申请实施例涉及互联网
,尤其涉及一种动态提供兼容JS脚本内容的方法、装置和终端设备。
技术介绍
随着前端技术的发展,使用JS(JavaScript)的应用发展逐渐变快。面对越来越复杂的应用需要,在JavaScript社区的推动下,JS每年都会推出一些新特性和新功能,为开发人员提供更多的实现能力。但是由于浏览器版本更新周期较长,以及不同浏览器厂商的实现存在不一致之处,导致JS的一些新语言特性和浏览器接口未能在所有浏览器上实现完整支持。因此在大部分浏览器上,为便于开发人员使用JS的一些新语言特性和浏览器接口,需要在JS脚本内容中放置一些兼容代码,以便在检查到浏览器不能原生支持的情况下,通过所述兼容代码提供JS的新语言特性和浏览器接口的支持。通常为了适配大部分的浏览器,避免页面中JS脚本在浏览器中因为使用了新语言特性和浏览器接口而出现异常,开发人员需要将尽可能多的兼容代码放在用户访问页面中。从而实现能够保证大部分浏览器都能正确的运行,但是这会造成JS脚本下载到浏览器的时间更长,增加了用户和服务商的流量负担。并且,JS脚本执行的时间也更长了,界面长时间处于白屏状态,影响用户体验。以及,需要开发人员同过人工分析获得需要的兼容代码,并将所述兼容代码拼接到JS脚本代码中,造成JS脚本的维护成本高。因此,如何实现根据浏览器动态提供兼容JS脚本内容成为现有技术中亟需解决的技术问题。
技术实现思路
本申请实施例提供了一种动态提供兼容JS脚本内容的方法、装置和终端设备,其能够克服现有兼容不同浏览器的JS脚本加载资源浪费和执行速度缓慢的问题,同时也提高了开发人员的开发效率,降低人工成本。根据本申请实施例的一个方面,提供了一种动态提供兼容JS脚本内容的方法,所述方法包括:对获得的JS脚本代码进行语法分析,获得运行所述JS脚本代码所需的兼容列表;将所述兼容列表和用户请求中浏览器标识符进行比对,获得所述浏览器运行所述JS脚本代码所需的最小兼容列表;根据所述最小兼容列表转化为兼容代码,并将所述兼容代码与所述JS脚本代码进行合并响应所述用户请求。根据本申请实施例的另一个方面,还提供了一种动态提供兼容JS脚本内容的装置,所述装置包括:语法分析模块,用于对获得的JS脚本代码进行语法分析,获得运行所述JS脚本代码所需的兼容列表;列表比对模块,用于将所述兼容列表和用户请求中浏览器标识符进行比对,获得所述浏览器运行所述JS脚本代码所需的最小兼容列表;第一代码合并模块,用于根据所述最小兼容列表转化为兼容代码,并将所述兼容代码与所述JS脚本代码进行合并响应所述用户请求。根据本申请实施例的又一个方面,还提供了一种终端设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如上所述的动态提供兼容JS脚本内容的方法对应的操作。根据本申请实施例提供的技术方案,本申请对JS脚本代码运行所需的兼容列表和用户请求中浏览器标识符进行比对,获得所述浏览器运行所述JS脚本代码所需的最小兼容列表。从而根据所述最小兼容列表转化为兼容代码,并将所述兼容代码与所述JS脚本代码进行合并响应所述用户请求。因此,本申请兼容代码为根据浏览器标识符和所述JS脚本代码所需的兼容列表合并产生的最小兼容列表产生,克服了现有兼容不同浏览器的JS脚本加入大量兼容代码,从而造成加载资源浪费和执行速度缓慢的问题。同时本申请无需开发人员分析获得所述兼容代码,也提高了开发人员的开发效率,降低了人工成本。附图说明图1是根据本申请实施例一的一种动态提供兼容JS脚本内容的方法的步骤流程图;图2是根据本申请实施例二的一种动态提供兼容JS脚本内容的方法的步骤流程图;图3是根据本申请实施例二的一种动态提供兼容JS脚本内容的方法的步骤S201的一种实现的步骤流程图;图4是根据本申请实施例二的一种动态提供兼容JS脚本内容的方法的步骤S202的另一种实现的步骤流程图;图5是根据本申请实施例二的一种动态提供兼容JS脚本内容的方法的步骤S204的另一种实现的步骤流程图;图6是根据本申请实施例三的一种动态提供兼容JS脚本内容的方法的步骤流程图;图7是根据本申请实施例四的一种动态提供兼容JS脚本内容的装置的结构图;图8是根据本申请实施例五的一种动态提供兼容JS脚本内容的装置的结构图;图9是根据本申请实施例五的一种动态提供兼容JS脚本内容的装置的代码获得模块的一种实现的结构图;图10是根据本申请实施例五的一种动态提供兼容JS脚本内容的装置的语法分析模块的另一种实现的结构图;图11是根据本申请实施例五的一种动态提供兼容JS脚本内容的装置的第一代码合并模块的另一种实现的结构图;图12是根据本申请实施例六的一种动态提供兼容JS脚本内容的装置的结构图;图13是根据本申请实施例七的一种终端设备的结构框图;图14是根据本申请一具体应用场景的一程序示意图;图15是根据本申请一具体应用场景的浏览器接口示意图。具体实施方式下面结合附图(若干附图中相同的标号表示相同的元素)和实施例,对本申请实施例的具体实施方式作进一步详细说明。以下实施例用于说明本申请,但不用来限制本申请的范围。本领域技术人员可以理解,本申请实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。实施例一参照图1,示出了根据本申请实施例一的一种动态提供兼容JS脚本内容的方法的步骤流程图。值得说明的是,本申请所述步骤S101至S103并不代表其执行的先后顺序。本实施例的动态提供兼容JS脚本内容的方法包括以下步骤:步骤S101:对获得的JS脚本代码进行语法分析,获得运行所述JS脚本代码所需的兼容列表。具体地,所述运行所述JS脚本代码所需的兼容列表为所述JS脚本代码中基于JS新推出的新特性和新功能所采用的一些新语言特性和浏览器接口所需要的兼容代码列表。因此,所述JS脚本代码只有在支持这些新语言特性和浏览器接口的浏览器中才能够运行,否则需要在所述JS脚本代码中加入支持这些新语言特性和浏览器接口的兼容列表转化的兼容代码才能够运行。此外,所述语法分析也可以在开发者本地利用模块打包器webpack,自动化构建工具gulp等构建工具实现。步骤S102:将所述兼容列表和用户请求中浏览器标识符进行比对,获得所述浏览器运行所述JS脚本代码所需的最小兼容列表。浏览器标识符(User-Agent)指的是描述了用户当前浏览器的名称、版本及操作系统等信息的标识符。所述浏览器标识符指示了用户所使用浏览器能够支持的新语言特性和浏览器接口。所述浏览器标识符所标识的各种浏览器版本的功能接口兼容列表,可以采用人工维护。因此,本申请实施例通过比较所述兼容列表和用户请求中浏览器标识符,获得小于所述兼容列表的最小兼容列表。步骤S103:根据所述最小兼容列表转化为兼容代码,并将所述兼容代码与所述JS脚本代码进行合并响应所述用户请求。本申请根据所述最小兼容列表转化为兼容代码,即实现动态生成兼容代码,并将所述兼容代码与所述JS脚本代码进行合并响应所述用户请求。通过本实施例,本本文档来自技高网...

【技术保护点】
1.一种动态提供兼容JS脚本内容的方法,其特征在于,所述方法包括:对获得的JS脚本代码进行语法分析,获得运行所述JS脚本代码所需的兼容列表;将所述兼容列表和用户请求中浏览器标识符进行比对,获得所述浏览器运行所述JS脚本代码所需的最小兼容列表;根据所述最小兼容列表转化为兼容代码,并将所述兼容代码与所述JS脚本代码进行合并响应所述用户请求。

【技术特征摘要】
1.一种动态提供兼容JS脚本内容的方法,其特征在于,所述方法包括:对获得的JS脚本代码进行语法分析,获得运行所述JS脚本代码所需的兼容列表;将所述兼容列表和用户请求中浏览器标识符进行比对,获得所述浏览器运行所述JS脚本代码所需的最小兼容列表;根据所述最小兼容列表转化为兼容代码,并将所述兼容代码与所述JS脚本代码进行合并响应所述用户请求。2.根据权利要求1所述的方法,其特征在于,所述对获得的JS脚本代码进行语法分析,获得运行所述JS脚本代码源代码所需的兼容列表之前还包括:根据针对访问页面的所述用户请求获得所述JS脚本代码。3.根据权利要求2所述的方法,其特征在于,所述根据针对访问页面的所述用户请求获得所述JS脚本代码包括:获得所述访问页面上的script标签,所述script标签为JS文件链接作为参数拼接成的链接;通过解析所述script标签对应的JS文件链接参数,获得所述JS脚本代码。4.根据权利要求1所述的方法,其特征在于,所述对获得的JS脚本代码进行语法分析,获得运行所述JS脚本代码源代码所需的兼容列表包括:对获得的JS脚本代码进行语法分析,解析成抽象语法树;分析所述抽象语法树,获取其中使用到的新语言特性和浏览器接口,得出运行所述JS脚本代码源代码所需的兼容列表。5.根据权利要求1所述的方法,其特征在于,所述根据所述最小兼容列表转化为兼容代码,并将所述兼容代码与所述JS脚本代码进行合并响应所述用户请求包括:根据所述最小兼容列表,转化为Polyfill兼容代码;使用Combo技术,将所述Polyfill兼容代码与所述JS脚本代码进行合并响应所述用户请求。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:如所述用户请求中浏览器标识符无法识别,则将运行所述JS脚本代码所需的兼容列表转化为兼容代码,并将所述兼容代码与所述JS脚本代码进行合并响应所述用户请求。7.根据权利要求6所述的方法,其特征在于,所述如所述用户请求中浏览器标识符无法识别,则将运行所述JS脚本代码所需的兼容列表转化为兼容代码,并将所述兼容代码与所述JS脚本代码进行合并响应所述用户请求还包括:利用在合并的所述兼容代码与所述JS脚本代码中插入的统计代码,收集所述浏览器运行时需要兼容的接口列表更新所述浏览器标识符,以供下次用户请求识别。8.一种动态提供兼容JS脚本...

【专利技术属性】
技术研发人员:陈汉钗黄文浩
申请(专利权)人:广州市动景计算机科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1