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

文档序号:9708103阅读:来源:国知局
请实施例中可以定 义数据结构,包括loader和module两个数据结构定义。如图4所示为loader和module 两个数据结构的示意图。每次use都会产生一个loader实例,这个loader会监控当次use 所加载的模块集合,当这个模块集合全部加载完毕后就会触发该次use对应的回调函数.
[0093] 同样单个模块也可能在多次use调用中,即单个模块可能对应于多个loader实 例,当单个模块加载完毕后会通知其对应的所有loader实例检查是否其所有的模块已经 加载完毕。
[0094] 具体地,如图5所示为用户模块批量加载的实施流程示意图,如图所示,批量加载 可以包括如下步骤:
[0095] 步骤501、确定要加载的用户模块集合module ;
[0096] 步骤502、执行加载并生成loader实例;
[0097] 步骤503、执行并行批量用户模块加载;
[0098] 步骤504、判断单个模块是否加载完毕;
[0099] 步骤505、当单个模块加载完毕后通知该模块所属loader实例集合;
[0100] 步骤506、loader实例集合收到通知后检测集合内的用户模块是否均加载完毕;
[0101] 步骤507、当用户模块集合module中的用户模块均加载完毕后,调用fη回调结束。
[0102] 实施中,单个模块的加载接口是对客户端终端系统与服务器端跨终端架构进行统 一后形成的。
[0103] 具体实施中,由于在客户端和服务器端上模块的具体加载行为是不同的,所以要 实现跨终端的代码共享,必须形成统一的模块加载接口。形成过程如下:
[0104] 在客户端(终端系统)是通过动态生成指向模块脚本地址的script节点来加载 对应的模块脚本,代码示例如下:
[0105]
[0106] 在nodejs服务器端可以使用vm模块来动态执行从本地文件读取的代码,代码示 例如下:
[0107]
[0108] 其中add为框架提供的注册模块的函数。
[0109] 最终形成了一致的加载单个模块API :
[0110] getScript (modUrl,success,error) ;// 生成单个模块加载接口
[0111] 将客户端和服务器端统一了模块加载API,一方面解决了现有技术对nodejs服务 器端支持不完善的问题,另一方面,结合定义了用户模块代码格式使得开发人员编写的模 块能够更好地实现上传和加载,能够更快更方便的被运用,实现了代码的共享。
[0112] 其中,单个模块的加载接口可位于客户端终端系统或者服务器跨终端架构。
[0113] 具体实施中,单个模块的加载API可以位于终端系统也可以位于跨终端架构中, 其目的是统一单个模块的加载接口,使用该API可以从跨终端架构中更加方便的加载用户 模块,更好的实现代码共享。
[0114] 实施中,在将确定的要加载的用户模块加载到发出请求的终端系统中之前,还可 以包括:
[0115] 根据生成的模块依赖表来加载模块。
[0116] 具体地,由于向跨终端架构上请求模块加载的请求连接数可能很多,因此,需要对 加载进行优化。下面举例说明:
[0117] 假如不做优化,当终端系统调用a模块,即use ([ 'a'])时,由于a模块依赖于b、 c模块,那么在实际运行中,就会导致先发布出a. js的请求,在a. js下载到终端系统时再分 别加载b. js,c. js,一共是3个串行的请求。
[0118] 在本申请实施例中通过生成模块依赖表来将3个串行请求变成1个,大大提升了 模块加载速度,具体实现为 :
[0119] 提取模块依赖表并分析用户模块代码:
[0120]
[0121] 将该段代码加入到应用配置文件中,那么当调用use进行模块加载时会递归分析 加载模块的所有依赖,并生成一个combo模块依赖表,从而可以一并将a模块以及其所依赖 的所有模块的代码下载到用户端执行。
[0122] 为了描述的方便,以上所述方法的各部分及功能在实施本申请时可以在同一个或 多个软件或硬件中实现。
[0123] 图6为本申请实施例中跨终端架构的模块上传方法的使用流程示意图,如图所 示,可以包括步骤:
[0124] 步骤601、定义用户模块代码格式;
[0125] 步骤602、根据定义的用户模块代码格式编写用户模块;
[0126] 步骤603、将所述用户模块上传至跨终端架构。
[0127] 实施中,定义的用户模块代码格式可以与服务器端代码格式相同。
[0128] 具体地,定义的用户模块代码格式同服务器端nodejs格式相同:使用require声 明需要的其他模块,使用module, exports导出当前模块的功能。
[0129] 实施中,将所述用户模块上传至跨终端架构后,可以将用户模块的代码加上函数 封装。
[0130] 具体地,开发者将按照定义的模块代码格式编写好用户模块之后,上传至跨终端 架构,跨终端架构接收该上传的用户模块,并且要将该用户模块代码格式转化为架构需要 的代码格式。这个时候,跨终端架构通过在用户模块的代码前后加上一个函数封装,来将该 用户模块转化为架构可用的模块,即完成了将用户定义的模块注册到架构中。
[0131] 跨终端架构提供了模块转化工具,用于产生将用户模块的代码用一个函数封装后 的代码,将require、module等变量以函数参数的方式注册到跨终端架构中。该模块转化工 具可以在线也可以以离线的方式来对用户模块代码进行转化。
[0132] 另外,该函数封装的作用除了将用户模块注册到架构中,转化为跨终端架构可用 的模块,还可以控制用户模块的代码的执行时机。
[0133] 图7为跨终端架构的模块接收方法的实施流程示意图,如图所示,具体实施中,可 以如下:
[0134] 步骤701、终端系统访问所述跨终端架构;
[0135] 步骤702、终端系统对跨终端架构发出加载用户模块的请求;
[0136] 步骤703、接收跨终端架构发出的查询指令,并上报应用程序编程接口情况及标准 应用程序编程接口支持能力;
[0137] 步骤704、接收跨终端架构响应用户模块加载请求加载的用户模块。
[0138] 具体实施中,当终端系统需要加载某些功能模块时,首先,要访问跨终端架构,并 且向跨终端架构发出加载用户模块(需要用到的功能模块)的请求。在终端系统访问跨终 端架构时,跨终端架构会对终端系统进行查询,判断其类型及其所能支持的标准应用程序 编程接口,后根据终端系统的情况,进行有区别的响应其请求进行用户模块的加载。
[0139] 实施中,接收到跨终端架构发出的查询指令时,可以查询终端系统是否缺失标准 应用程序编程接口或终端系统的应用程序编程接口与标准应用程序编程接口是否有差异。
[0140] 实施中,在接收到跨终端架构发出的查询指令时,可以查询终端系统是否支持标 准应用程序编程接口。
[0141] 实施中,接收跨终端架构响应用户模块加载请求加载的用户模块后,可以进一步 包括:
[0142] 运行加载到终端系统的用户模块。
[0143] 下面结合一个具体的实施示例来进行说明。
[0144] 首先,开发者按照定义的用户模块代码格式nodejs格式编写用户模块,将编写好 的用户模块上传至跨终端架构中,跨终端架构接收该上传的用户模块,并且用模块转化工 具对该用户模块进行函数封装,转化为跨终端架构可用的模块。其次,终端系统当需要加载 模块时,访问跨终端架构,并提出加载用户模块的请求。然后,跨终端架构接收到该请求后 对终端系统进行查询,若为旧版的IE浏览器,则
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1