跨终端架构的模块上传方法、请求方法以及加载方法_2

文档序号:9708103阅读:来源:国知局
终端系统上报的应用程序编程接口情况及标准应用程序编程接口 支持能力,在跨终端架构可用的模块中,确定要加载的用户模块;
[0050] 实施中,由于对于不同的终端系统其上的应用程序接口有可能与标准应用程序编 程接口存在差异,或者缺失标准应用程序编程接口,再或者该终端系统不支持标准应用程 序编程接口,所以想要实现跨终端代码共享就需要根据不同的终端系统做差异化处理。因 此,在获得终端系统上报的应用程序编程接口情况和标准应用程序编程接口支持能力后, 可以在跨终端可用的模块中确定该终端系统要加载的用户模块。
[0051] 步骤105、将确定的要加载的用户模块通过统一的模块加载接口,加载到发出请求 的终端系统中。
[0052] 实施中,本申请实施例提供了统一的模块加载接口,即客户端与服务器端采用同 样的模块加载接口。将客户端与服务器端的模块加载接口进行统一可以克服现有技术中 YUI架构对服务器端支持不完善的问题。具体地,确定好终端系统要加载的用户模块后,通 过统一的模块加载接口将该用户模块加载到发出请求的终端系统中。
[0053] 在优选的实施例中,该定义的用户模块代码格式可以与服务器端nodejs格式相 同,即使用require声明需要的其他模块,使用module, exports导出当前模块的功能。例 如:
[0054]
[0055]
[0056] 其中require表示在当前模块中导入其他模块(进而使用其功能),module, exports则表示导出当前模块的功能供其他模块使用。这样定义的作用是给开发者提供了 一种模块编写的格式,采用该格式编写模块就可以统一跨终端代码共享,为开发者在此基 础上开发完善跨终端系统提供了可能。
[0057] 实施中,该转化工具可以是将用户模块的代码加上函数封装。
[0058] 具体地,开发者将按照定义的模块代码格式编写好用户模块之后,上传至跨终端 架构,跨终端架构接收该上传的用户模块,并且要将该用户模块代码格式转化为架构需要 的代码格式。这个时候,跨终端架构通过在用户模块的代码前后加上一个函数封装,来将该 用户模块转化为架构可用的模块,即完成了将用户定义的模块注册到架构中。代码示例如 下:
[0059] add (function (require, exports, module) {
[0060] //user module code
[0061] }) ;//转化为跨终端架构可用的模块
[0062] 跨终端架构提供了模块转化工具,用于产生将用户模块的代码用一个函数封装后 的代码,将require、module等变量以函数参数的方式注册到跨终端架构中。该模块转化工 具可以在线也可以以离线的方式来对用户模块代码进行转化。
[0063] 在优选的实施例中,将确定的要加载的用户模块加载到发出请求的终端系统中 时,可以对缺失标准应用程序编程接口或其上应用程序编程接口,以及与标准应用程序编 程接口有差异的终端系统,通过提供别名的机制来补全该终端系统的应用程序编程接口。
[0064] 也即,标准应用编程接口是标准规定客户端浏览器提供的应用程序编程接口,单 个模块加载接口是本方案提供的应用程序编程接口,如果某个客户端浏览器(例如IE6)没 有实现标准规定的应用程序编程接口,那么本申请实施例中就会加载对应的模块补全该浏 览器的应用程序编程接口。
[0065] 具体地,如图2所示,在实际运用中,开发者希望用户模块的代码能够不经过任何 修改运行在终端系统中,但是,现实中往往各个终端系统存在着差异,例如旧版的IE浏览 器,其缺失很多标准API,甚至其上提供的API和标准API有差异。此时,本申请实施例中通 过提供别名的机制来实现在不同的终端系统中加载不同的模块,调用不同的功能。
[0066] 例如,可以通过统一的dom模块、event/dom模块,来进行浏览器平台相关的dom操 作和事件绑定操作:
[0067]
[0068] 经过上述操作后,标准浏览器平台只载入dom/base以及event/dom/base模块,而 在旧版的IE浏览器平台则会载入dom/base、dom/IE、event/dom/base、event/IE模块,影 响该行为的配置为:
[0069]
[0070] 即相同的模块名在不同的平台对应于不同的实现模块。
[0071] 图2为缺失标准应用程序编程接口或其上应用程序编程接口与标准应用程序编 程接口有差异的终端系统加载用户模块的加载示意图。如图2所示,缺失标准应用程序编 程接口或其上应用程序编程接口与标准应用程序编程接口有差异的终端系统在加载用户 模块时,包括步骤:
[0072] 步骤201、确定要加载的用户模块为dom模块;
[0073] 步骤202、通过对终端系统的查询结果,判断终端系统是否为旧版的IE浏览器;
[0074] 步骤203、当终端系统不为旧版的IE浏览器时,执行加载dom/base ;
[0075] 步骤204、当终端系统为旧版的IE浏览器时,执行加载dom/base、dom/IE。
[0076] 实施中,将确定的要加载的用户模块加载到发出请求的终端系统中时,可以对支 持标准应用程序编程接口的终端系统,使用预注册模块的方法,返回空实现或加载用户模 块。
[0077] 具体地,如图3所示,在实际运用中,触屏应用场景下需要引入一些手势事件处理 模块用于处理多点操作,所谓手势事件是指触屏机器(例如I〇S\Adriod触屏手机、平板等) 可以通过一个手指拖放图标,两个手指放大图片等操作,这里手指的操作就会给程序发出 事件,程序响应事件进行图标位置改变或者放大图片等操作。由于对于一些终端系统并不 支持手势事件处理模块,此时,可以使用预注册模块的方法返回空实现。例如:对于多点触 摸放大事件pinch,在不支持触摸的平台对于该模块直接返回空实现,而对于支持触摸的平 台才进行进一步远程模块加载。代码示例如下:
[0078]
[0079] 即对不支持触摸的平台,使用空实现模块代替多点触摸放大事件pinch,这样就实 现了对终端系统的区别化处理。
[0080] 提供别名的机制和使用预注册空实现模块的方法,对不同的终端系统地差异进行 了功能整合,相比较YUI系统侧重于传统客户端pc浏览器、对于触屏浏览器以及node js服 务器端支持不完善的问题有较好的解决。
[0081] 图3为不支持标准应用程序编程接口的终端系统加载用户模块的加载示意图。如 图3所示,不支持标准应用程序编程接口的终端系统在加载用户模块时,包括步骤:
[0082] 步骤301、通过对终端系统的查询结果,判断终端系统是否支持触摸;
[0083] 步骤302、若不支持触摸,则注册空实现模块;
[0084] 步骤303、确定要加载的用户模块为pinch模块;
[0085] 步骤304、查询跨终端架构中是否存在空实现模块;
[0086] 步骤305、当不存在空实现模块时,执行加载pinch模块;
[0087] 步骤306、当存在空实现模块或者模块加载完毕后,返回用户代码。
[0088] 实施中,将确定的要加载的用户模块加载到发出请求的终端系统中可以通过单个 模块的加载接口进行加载。
[0089] 具体实施中,通过单个模块的加载接口加载用户模块时,具体的加载代码为:
[0090] use (modules, fn).
[0091] 其中modules为需要加载的模块名数组,fn为当模块数组加载完毕后要调用的回 调函数。所谓回调函数,在本申请实施例中是指,当模块加载完毕后后续要执行的函数。
[0092] 可见,由单个模块的加载接口可以实现模块的批量加载。本申
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1