发明内容
本申请的一个目的是提供一种用于脚手架的动态路由的方法及设备,解决现有技术中需要一一导入路由,低效繁琐、易出现错误及不便于管理的问题。
根据本申请的一个方面,提供了一种用于脚手架的动态路由的方法,该方法包括:
根据脚手架文件确定页面,并确定所述页面对应的页面目录,其中,所述页面目录下含有路由配置信息;
通过脚手架的预设脚本,根据所述路由配置信息生成所述页面的路由,其中,所述路由配置信息包括路由路径、页面的目录及渲染组件,所述路由路径由根据待配置文件至所述页面的计算路径确定。
进一步地,确定所述页面对应的页面目录,包括:
根据项目配置目录下的路由文件夹确定所述页面对应的路由自动生成的工作目录。
进一步地,所述方法包括:
根据所述路由配置信息更改所述工作目录中的索引脚本文件内容。
进一步地,所述脚手架的预设脚本,包括:与所述页面对应的文件目录的定义规则及路由生成规则,其中,
所述文件目录的定义规则包括:根据单词定义文件类型,根据文件中内容命名所述文件目录及文件名,并以预设符合作为单词分割用于拼接所述文件名;
所述路由生成规则包括:根据文件夹的目录名选取对应的路由生成规则。
进一步地,所述方法包括:
获取所述页面的存放目录,根据配置项将所述存放目录标记为模块目录,所述脚手架的预设脚本跳过所述模块目录的渲染。
进一步地,根据文件夹的目录名选取对应的路由生成规则,包括:
解析所述文件夹的目录名对应的配置,以分析所述页面的目录名,得到分析结果;
根据分析结果判断所述路由路径是否已存在,若否,则进行步骤A:根据预设字符解析所述路径的结构和命名,根据当前目录的子目录或子文件生成路由;
若所述路由路径已存在,则删除所述路由路径,进行步骤A。
进一步地,解析所述文件夹的目录对应的配置还包括:
若所述文件夹的目录包括子目录,则生成路由的配置信息,其中,所述生成路由的配置信息包括:根据配置选项判断路由的类型,以进行重组路由的配置信息。
进一步地,所述方法包括:
在所述文件目录及文件名上进行写配置项和参数,以生成路由路径。
进一步地,所述方法包括:
判断所述脚手架文件是否满足表示一个文件页面,若否,则将所述文件页面中包括的资源与所述脚手架文件存储在同一文件夹内,为所述文件夹生成对应的路由。
根据本申请另一个方面,还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如前述所述的方法。
根据本申请再一个方面,还提供了一种用于脚手架的动态路由的设备,所述设备包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如前述所述方法的操作。
与现有技术相比,本申请通过根据脚手架文件确定页面,并确定所述页面对应的页面目录,其中,所述页面目录下含有路由配置信息;通过脚手架的预设脚本,根据所述路由配置信息生成所述页面的路由,其中,所述路由配置信息包括路由路径、页面的目录及渲染组件,所述路由路径由根据待配置文件至所述页面的计算路径确定;通过根据页面目录动态生成路由,路由的维护转为页面的目录结构维护,从而使得维护更加方便和简单,避免一一导入路由,解决了手工添加路由带来的低效繁琐及易出错的问题。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1示出根据本申请的一个方面提供的一种用于脚手架的动态路由的方法流程示意图,该方法包括:步骤S11和步骤S12,其中,
在步骤S11中,根据脚手架文件确定页面,并确定所述页面对应的页面目录,其中,所述页面目录下含有路由配置信息;在此,基于页面的目录结构,可以根据目录动态生成路由,路由的维护转变成页面的目录结构的维护,从而使得维护更加方便和简单。在此,一个单独的脚手架(vue)文件可被看作为一个页面,确定页面对应的页面目录,所述页面目录下含有路由配置信息,以用于根据目录的结构动态生成路由。接着,在步骤S12中,通过脚手架的预设脚本,根据所述路由配置信息生成所述页面的路由,其中,所述路由配置信息包括路由路径、页面的目录及渲染组件,所述路由路径由根据待配置文件至所述页面的计算路径确定。在此,在配置一个路由时,需要配置路由的路径、名字及组件,其中,路由的路径的生成为路由配置的重点,脚本会根据页面相对于页面目录的路径生成path(路由的路径),如:
/page
|--user
|--list.vue
其中,该页面page对应的path为/user/list,名字(name)为该页面的目录名字list。在渲染组件时,组件有个路径,该路径是路由配置文件到页面的计算路径,组件的打包名也为目录名字list。
进一步地,在步骤S11中,根据项目配置目录下的路由文件夹确定所述页面对应的路由自动生成的工作目录。在本申请一实施例中,在项目配置目录下的路由(router)文件夹为路由自动生成的工作目录,该工作目录是指在router文件夹,通过不同的文件,最终界面生成的路由能够起效;路由的生成文件为scr/conf/router/index.js,路由自动生成规则中,可以自动将页面生成路由,路由的路径(path)根据页面的目录结构生成,页面的命名跟目录的命名也可影响路由的路径的生成。
进一步地,所述方法包括:根据所述路由配置信息更改所述工作目录中的索引脚本文件内容。在此,工作目录中必须含有在路由生成过程中的配置信息文件(config.js),更改工作目录中的索引脚本文件内容(scr/conf/router/index.js)会根据自动化脚本文件(gen-router.js)配置信息自动生成路径的相应的一些配置信息,包括路由的名字、路径等。路由自动生成的工作目录,还可以有其他文件,代表的是手动路由,比如base.js用于存放基础路由,基础路由中包含系统中可能需要的一些基本的路由配置,比如404页面路由,503页面路由等。完整的路由维护,只需要通过定义这些手动路由和更改对应的页面文件目录。
进一步地,所述脚手架的预设脚本,包括:与所述页面对应的文件目录的定义规则及路由生成规则,其中,所述文件目录的定义规则包括:根据单词定义文件类型,根据文件中内容命名所述文件目录及文件名,并以预设符合作为单词分割用于拼接所述文件名;所述路由生成规则包括:根据文件夹的目录名选取对应的路由生成规则。在本申请一实施例中,文件目录的定义规则,在脚手架的预设脚本中先定义规则不同的单词以定义不同的文件类型,目录与文件根据内容命名,并且只能以“-”作为单词分割,每个函数以$_作为前缀,最终拼接成不同的文件名。图2所示为本申请一实施例中在脚手架的预设脚本中定义不同文件类型的代码示意图,在gen-router.js文件对路由配置的部分脚本,路由的生成可以自定义几种类型type,以区别不同表达形式对应不同的路由。通过配置项$t和值为p,如:
/page
|--user_$tp
上述的user目录表示为一个父路由。
进一步地,所述方法包括:获取所述页面的存放目录,根据配置项将所述存放目录标记为模块目录,所述脚手架的预设脚本跳过所述模块目录的渲染。通过配置项$t和值为m,如:
/page
|--user
|--user.vue
|--module_$tm
|--form.vue
|--list.vue
若一个页面很复杂,则将该页面抽出很多自模块,对于一个存放模块目录,可以配置项$t值为m,以示该目录为一个模块目录。上述示例中的module_$tm目录表示一个模块,且会被脚本跳过不做任何事。通过配置项$t且值为i,表示忽略目录或者忽略文件,将不会被脚本渲染成路由。
进一步地,文件夹目录的不同命名对应不同的路由生成规则,具体的为:
解析所述文件夹的目录名对应的配置,以分析所述页面的目录名,得到分析结果;根据分析结果判断所述路由路径是否已存在,若否,则进行步骤A:根据预设字符解析所述路径的结构和命名,根据当前目录的子目录或子文件生成路由;若所述路由路径已存在,则删除所述路由路径,进行步骤A。
在本申请一实施例中,当需要生成不同的路由时,需要修改文件组件的目录格式。在gen-router.js的脚本(脚手架的预设脚本)中,首先解析目录名字上的配置,之后分析页面的目录名,根据-字符解析路径结构和命名,若路径已经存在则需要先删除,遍历每一个由当前目录及子目录组成的节点,根据当前目录的子目录或子文件生成路由。更进一步地,若所述文件夹的目录包括子目录,则生成路由的配置信息,其中,所述生成路由的配置信息包括:根据配置选项判断路由的类型,以进行重组路由的配置信息。在此,当文件有子目录,生成路由的配置,配置主要参照vue-router的配置,生成路由的名字、路由的路径,其中,路由的路径的生成还需要根据路由配置类型type选项,即通过_$tp,_$ti,_$tm等判断路由的类型,以重组路由的配置信息,例如:
//目录
student-grade_id_name_$ti
//文件
student-grade_id_name_$ti.vue
上述的命名中,student-grade表示文件名或者目录名,单词之间用“-”隔开,id、name及$ti表示参数,其中,$ti因为是$开头,因此表示是一个ti的配置项。参数会被用于动态路由中,配置项表示的是特殊的参数,不会用作动态路由中,一般具有特殊的含义,比如标明文件或目录的类型,上述示例中,表示忽略文件或忽略目录,脚本不会因生成有ti就代表其为忽略文件或忽略目录,脚本不会因生成有ti就生成对应标记的页面的路由。
进一步地,所述方法包括:在所述文件目录及文件名上进行写配置项和参数,以生成路由路径。在此,在目录名和文件名上支持写配置项和参数,在目录或文件的命名时,可包括以下三个特殊字符“-”,“_”,“$”,其中,-用于命名单词的区分,_用于每个参数的区分,用于配置动态路由,$开头的参数表示配置项,在参数中,如果以$开头,代表选项,选项能够告诉自定生成脚本一些信息,而不会作为动态路由的参数去设置。
进一步地,所述方法包括:步骤S13,判断所述脚手架文件是否满足表示一个文件页面,若否,则将所述文件页面中包括的资源与所述脚手架文件存储在同一文件夹内,为所述文件夹生成对应的路由。在此,当一个.vue文件不足以表示一个文件页面时,比如该页面还有图片、字体或其他模块时,则将这些资源文件同.vue文件一起放到一个文件夹中,文件夹的文件名同.vue文件的文件名相同,从而可以表达一个页面,比如:
/page
|--login.vue
与以下同样是表示一个登录页面;
/page
|--login
|--login.vue
|--bg.png
|--form.md.vue
再如:
/page
|--user_$tp
|--user.vue
|--layout
|--layout.vue
|--list.vue
上述表示的为一个用户的user模块,包括一个user的页面,一个布局layout页面,一个列表页面,上面对应的路由如图3所示,首先生成模块路径‘/user’,模块渲染的页面是layout.vue,在子路径中,生成一个列表路径‘/list’(渲染的页面为list.vue)和‘/user’(渲染的页面是user.vue),当文件名与目录名相同时,路由的路径(path)会上跳一级。
通过本申请所述的拥有脚手架的动态路由的方法,根据页面目录动态生成路由,路由的维护转为页面的目录结构维护,从而使得维护更加方便和简单,避免一一导入路由,解决了手工添加路由带来的低效繁琐及易出错的问题。
在此,根据本申请另一个方面,还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如前述所述的方法。
在此。根据本申请再一个方面,还提供了一种用于脚手架的动态路由的设备,所述设备包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如前述所述方法的操作,例如,所述计算机可读指令在被执行时使所述处理器执行以下操作:
根据脚手架文件确定页面,并确定所述页面对应的页面目录,其中,所述页面目录下含有路由配置信息;通过脚手架的预设脚本,根据所述路由配置信息生成所述页面的路由,其中,所述路由配置信息包括路由路径、页面的目录及渲染组件,所述路由路径由根据待配置文件至所述页面的计算路径确定。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。