一种前端编程项目的打包方法及电子设备与流程

文档序号:16855168发布日期:2019-02-12 23:11阅读:480来源:国知局
一种前端编程项目的打包方法及电子设备与流程

本发明涉及计算机技术领域,尤其涉及一种前端编程项目的打包方法及电子设备。



背景技术:

当项目数量较大时,由于大量文件需要解析和处理构建,所以耗时相当长,在开发过程中编辑后等待重新构建耗时也会浪费大量开发时间。

同时中有大量的复用模块,构建时也会被重新编译。

此外,构建时文件读写操作频繁,webpack(模块打包器)是运行在node.js上的单线程模型,不能同时处理多个任务文件转换任务,导致构建速度较慢,构建效率低。

因此,现有技术还有待于改进和发展。



技术实现要素:

鉴于上述现有技术的不足,本发明的目的在于提供一种前端编程项目的打包方法及电子设备,旨在解决现有技术中项目打包方式浪费时间、构建速度慢、效率低等问题。

本发明的技术方案如下:

一种前端编程项目的打包方法,其中,包括步骤:

a、通过模块打包器打包web项目;

b、抽离web项目中网页依赖的基础模块,并将基础模块接入到动态链接库;

c、创建核心调度器,并获取文件处理权;

d、通过所述核心调度器将web项目的不同文件分配给相应的子进程进行处理。

所述的前端编程项目的打包方法,其中,当每一子进程处理完相应的文件时,发送结果至核心调度器。

所述的前端编程项目的打包方法,其中,当所有文件处理完毕后,通知模块打包器文件处理完毕。

所述的前端编程项目的打包方法,其中,所述步骤b中,将基础模块分别打包到单独的动态链接库,配置动态链接库文件。

所述的前端编程项目的打包方法,其中,从动态链接库中获取基础模块。

一种电子设备,其中,包括:

处理器,适于实现各指令,以及

存储设备,适于存储多条指令,所述指令适于由处理器加载并执行:

通过模块打包器打包web项目;

抽离web项目中网页依赖的基础模块,并将基础模块接入到动态链接库;

创建核心调度器,并获取文件处理权;

通过所述核心调度器将web项目的不同文件分配给相应的子进程进行处理。

所述的电子设备,其中,当每一子进程处理完相应的文件时,发送结果至核心调度器。

所述的电子设备,其中,当所有文件处理完毕后,通知模块打包器文件处理完毕。

所述的电子设备,其中,将基础模块分别打包到单独的动态链接库,配置动态链接库文件。

一种非易失性计算机可读存储介质,其中,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行所述的前端编程项目的打包方法。

一种计算机程序产品,其中,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行所述的前端编程项目的打包方法。

有益效果:本发明中,复用的模块只需编译一次,使得常用的第三方模块只要不更改就不会被重新编译,提高构建速度;文件数量多时,使得单线程的javascript发挥了多核cpu的功能,多进程转换文件,大大减少转换文件这一步操作的时间。本发明适用于所有web项目,提高web项目的开发效率和输出质量。

附图说明

图1为本发明一种前端编程项目的打包方法较佳实施例的流程图。

图2为本发明一种电子设备较佳实施例的结构框图。

具体实施方式

本发明提供一种前端编程项目的打包方法及电子设备,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

请参阅图1,图1为本发明一种前端编程项目的打包方法较佳实施例的流程图,如图所示,其包括步骤:

s1、通过模块打包器打包web项目;

s2、抽离web项目中网页依赖的基础模块,并将基础模块接入到动态链接库;

s3、创建核心调度器,并获取文件处理权;

s4、通过所述核心调度器将web项目的不同文件分配给相应的子进程进行处理。

本发明中,复用的模块只需编译一次,使得常用的第三方模块只要不更改就不会被重新编译,提高构建速度;文件数量多时,使得单线程的javascript发挥了多核cpu的功能,多进程转换文件,大大减少转换文件这一步操作的时间。本发明适用于所有web项目,提高web项目的开发效率和输出质量。

具体地,在所述步骤s1中,通过模块打包器打包web项目。

模块打包器(webpack)是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。其用来分析项目结构,找到javascript模块以及其它的一些浏览器不能直接运行的拓展语言(scss,typescript等),并将其转换和打包为合适的格式供浏览器使用。具体可以将多种静态资源js、css、less转换成一个静态文件,从而减少页面的请求。

在所述步骤s2中,抽离web项目中网页依赖的基础模块,并将基础模块接入到动态链接库。

具体地,抽离web项目中网页依赖的第三方基础模块,例如react项目中的react/react-dom,这些模块只要不升级,其内容是不会发生变化的。

另外,还需将基础模块接入到动态链接库。

具体地,将基础模块分别打包到单独的动态链接库,配置动态链接库文件。

本发明中,将基础模块分别打包到单独的动态链接库,生成动态链接库所对应的dll.js文件和manifest.json文件。

然后在项目中导入依赖的动态链接库文件,即上一步生成的dll.js文件。

再配置动态链接库的构建文件,用于为主构建使用。

主构建文件配置动态链接库,通知主构建文件使用了哪些动态链接库。

然后执行主构建文件。

由于要对不同的文件进行转换操作,比如样式文件sass转换为css,es6语法的js要转换为es5的,即是将编写的文件转换为浏览器能够运行的文件。需要许多loader来进行处理,改变webpack单线程。

进一步,从动态链接库中获取基础模块。

在所述步骤s3中,创建核心调度器,并获取文件处理权。

在linux中内核提供了两个调度器:主调度器和周期性调度器,两个调度器结合起来称为核心调度器。

主调度器是直接的,比如进程打算睡眠或出于其他原因放弃cpu,schedule函数。

周期性调度器是通过周期性的机制,以固定的频率运行,不时的检测是否有必要,scheduler_tick查看当前进程是否运行太长时间,如果是,将进程的tif_need_resched置位,然后再中断返回时,调用schedule,进行进程切换操作。

所述核心调度器共有6种调度策略(即调度算法),用于对不同类型的进程进行调度,或者支持某些特殊的功能。其中,sched_normal和sched_batch调度普通的非实时进程;sched_fifo和sched_rr和sched_deadline则采用不同的调度策略调度实时进程;sched_idle则在系统空闲时调用idle进程。

而依据其调度策略的不同实现了5个调度器类,一个调度器类可以用一种或者多种调度策略调度某一类进程,也可以用于特殊情况或者调度特殊功能的进程。

调度器不限于调度进程,还可以调度更大的实体,比如实现组调度。这种情况下,调度器不直接操作进程,而是处理可调度实体,因此需要一个通用的数据结构描述这个调度实体,即seched_entity结构,其实际上就代表了一个调度对象,可以为一个进程,也可以为一个进程组。

linux中针对当前可调度的实时和非实时进程,定义了类型为seched_entity的3个调度实体:sched_dl_entity采用edf算法调度的实时调度实体;sched_rt_entity采用roound-robin或者fifo算法调度的实时调度实体rt_sched_class;sched_entity采用cfs算法调度的普通非实时进程的调度实体。

如果要将cpu分配给与当前活动进程不同的另一个进程,都会直接调用主调度器函数schedule,从系统调用返回后,内核也会检查当前进程是否设置了重调度标志tlf_nedd_resched。

例如,前述的周期性调度器的scheduler_tick就会设置该标志,如果是这样则内核会调用schedule,该函数假定当前活动进程一定会被另一个进程取代;chedule就是主调度器的函数,在内核中的许多地方,如果要将cpu分配给与当前活动进程不同的另一个进程,都会直接调用主调度器函数schedule。

该主调度器函数schedule按如下方式进行工作:

确定当前就绪队列,并在保存一个指向当前(仍然)活动进程的task_struct指针;

检查死锁,关闭内核抢占后调用__schedule完成内核调度;

恢复内核抢占,然后检查当前进程是否设置了重调度标志tlf_nedd_resched,如果该进程被其他进程设置了tif_need_resched标志,则函数重新执行进行调度。

在所述步骤s4中,通过所述核心调度器将web项目的不同文件分配给相应的子进程进行处理。

即,统一分配不同文件转换loader处理子进程。即统一分配给空闲的子进程进行处理。

进一步,当每一子进程处理完相应的文件时,发送结果至核心调度器。

核心调度器会统计全部文件是否处理完,当所有文件处理完毕后,通知模块打包器文件处理完毕。

本发明中,需要先查询是否存在空闲的子进程,如果当前没有空闲的子进程,则需要将待处理的文件加入到等待队列,当检测到存在空闲的子进程时,则将待处理的文件交由空闲的子进程处理。

具体地,将待处理的文件按次序加入到等待队列,当检测到存在空闲的子进程时,则将先加入等待队列的文件交由空闲的子进程进行处理,确保文件按先后顺序执行。

本发明中,复用的模块只编译一次,使得常用的第三方模块只要不更改就不会被重新编译,提高构建速度;文件数量多时,使得单线程的javascript发挥了多核cpu的功能,多进程转换文件,大大减少转换文件这一步操作的时间;本发明适用于所有web项目,提高web项目的开发效率,和输出质量。

请参阅图2,本发明还提供一种电子设备10,其包括:

处理器110,适于实现各指令,以及

存储设备120,适于存储多条指令,所述指令适于由处理器加载并执行:

通过模块打包器打包web项目;

抽离web项目中网页依赖的基础模块,并将基础模块接入到动态链接库;

创建核心调度器,并获取文件处理权;

通过所述核心调度器将web项目的不同文件分配给相应的子进程进行处理。

所述处理器110可以为通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、单片机、arm(acornriscmachine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器还可以是任何传统处理器、微处理器或状态机。处理器也可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp核、任何其它这种配置。

存储设备120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的前端编程项目的打包方法对应的程序指令。处理器通过运行存储在存储设备中的非易失性软件程序、指令以及单元,从而执行前端编程项目的打包方法的各种功能应用以及数据处理,即实现上述方法实施例中的前端编程项目的打包方法。

进一步,当每一子进程处理完相应的文件时,发送结果至核心调度器。

进一步,当所有文件处理完毕后,通知模块打包器文件处理完毕。

关于上述电子设备10的具体技术细节在前面的方法中已有详述,故不再赘述。

本发明还提供一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行所述的前端编程项目的打包方法。

本发明还提供一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行所述的前端编程项目的打包方法。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1