CN116540994A - React项目配置化生成路由的方法、控制装置及存储介质 - Google Patents
React项目配置化生成路由的方法、控制装置及存储介质 Download PDFInfo
- Publication number
- CN116540994A CN116540994A CN202310520393.8A CN202310520393A CN116540994A CN 116540994 A CN116540994 A CN 116540994A CN 202310520393 A CN202310520393 A CN 202310520393A CN 116540994 A CN116540994 A CN 116540994A
- Authority
- CN
- China
- Prior art keywords
- configuration
- component
- file
- page
- route
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 52
- 230000006870 function Effects 0.000 abstract description 21
- 238000011161 development Methods 0.000 abstract description 9
- 238000012423 maintenance Methods 0.000 abstract description 5
- 230000008676 import Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 6
- 238000004806 packaging method and process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000009193 crawling Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000012858 packaging process Methods 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 238000009434 installation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Abstract
本发明涉及一种React项目配置化生成路由的方法、控制装置及存储介质,所述方法包括:获取React项目中具有第一配置组件的页面文件,其中所述第一配置组件作为路由扫描标识;抓取所述具有第一配置组件的页面文件中的配置信息;根据所述配置信息生成对应的路由配置。这种方法消除了手动维护页面配置列表的需求,提高了开发效率和可维护性。减少了项目结构的复杂性,使得项目更易于理解和维护,降低了维护成本。进一步的,在其中使用了高阶组件可以轻松地为页面添加新的功能,提高了项目的可扩展性。
Description
技术领域
本发明涉及计算机技术领域,具体提供一种React项目配置化生成路由的方法、控制装置及存储介质。
背景技术
当前流行的单页面应用(SPA)通过前端路由系统进行页面切换。前端通过监听地址栏变化,使用JavaScript动态渲染不同页面。通常情况下,开发人员需要编写路由配置文件,配置文件主要包括地址、页面组件、代码分割等内容。在React应用中,路由系统采用React-Router,每个页面的路由配置都需要手动添加。
然而,手动编写路由配置文件存在以下问题:
重复性劳动:开发人员为每个页面编写路由配置,实际上只是在复制粘贴模板代码,这种工作缺乏技术含量。
代码冲突:当多个开发人员同时修改同一配置文件时,可能会导致代码冲突,从而增加项目维护成本。
页面组件维护:当页面组件不再需要时,开发人员需要同步手动更新路由配置文件,以保持项目的一致性。
综上所述,现有技术中的前端路由配置方式存在重复性劳动、代码冲突和页面组件维护等问题,导致开发人员需要耗费大量时间编写路由配置和解决冲突。
相应地,本领域需要一种新的生成路由配置的方案来解决上述问题。
发明内容
为了克服上述缺陷,提出了本发明,以提供解决或至少部分地解决现有技术需要逐个进行路由配置的问题。
在第一方面,本发明提供一种React项目配置化生成路由的方法,所述方法包括:获取React项目中具有第一配置组件的页面文件,其中所述第一配置组件作为路由扫描标识;抓取所述具有第一配置组件的页面文件中的配置信息;根据所述配置信息生成对应的路由配置。
作为以上方案的替代或补充,在根据本发明一实施例的方法中,所述配置信息包括页面文件路由路径和/或组件文件路径,其中组件文件路径为页面组件在项目中的路径。
作为以上方案的替代或补充,在根据本发明一实施例的方法中,所述根据所述配置信息生成对应的路由配置,包括:将所述配置信息存储在内存中;基于所述配置信息生成对应的路由配置;或将所述配置信息存储在配置文件中;基于所述配置文件生成对应的路由配置。将所述配置信息存储在配置文件中;基于所述配置文件生成对应的路由配置。
作为以上方案的替代或补充,在根据本发明一实施例的方法中,根据所述路由配置,启动所述React项目。
所述方法还包括:在React项目的webpack的配置文件中添加loader组件,其中所述loader组件指定待处理的文件类型并配置@ra-lib/config-loader库;在React项目中创建第一配置文件,所述第一配置文件用于创建所述第一配置组件;在React项目的页面文件中选择性使用所述第一配置组件;在React项目中创建路由组件,所述路由组件用于根据配置信息设置所述React项目中各页面间的导航关系。
作为以上方案的替代或补充,在根据本发明一实施例的方法中,所述获取React项目项目中具有第一配置组件的页面文件,包括:通过所述@ra-lib/config-loader库遍历React项目中的所有页面文件;判断所遍历的页面文件中是否具有第一配置组件。
作为以上方案的替代或补充,在根据本发明一实施例的方法中,所述抓取所述具有第一配置组件的页面文件中的配置信息,包括:对于具有第一配置组件的页面文件,使用所述loader组件从对应的页面文件中抓取页面文件路由路径和组件文件路径。
作为以上方案的替代或补充,在根据本发明一实施例的方法中,所述对于具有第一配置组件的页面文件,使用所述loader组件从对应的页面文件中抓取页面文件路由路径和组件文件路径,包括:当所述loader组件检测到所述第一配置组件,提取路径属性值和组件文件的相对路径。
作为以上方案的替代或补充,在根据本发明一实施例的方法中,所述React项目的创建和初始化包括:安装@ra-lib/config-loader库、react-router以及react-router-dom库的软件包;初始化React项目;进入React项目目录并暴露项目配置文件。
在第二方面,提供一种控制装置,该控制装置包括处理器和存储装置,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行上述React项目配置化生成路由的方法的技术方案中任一项技术方案所述的React项目配置化生成路由的方法。
在第三方面,提供一种计算机可读存储介质,该计算机可读存储介质其中存储有多条程序代码,所述程序代码适于由处理器加载并运行以执行上述React项目配置化生成路由的方法的技术方案中任一项技术方案所述的React项目配置化生成路由的方法。
本发明上述一个或多个技术方案,至少具有如下一种或多种
有益效果:
在实施本发明的技术方案中,在程序开发阶段,对于前端页面的路由配置,通过使用配置加载器库自动从页面文件中抓取和加载页面配置。这种方法消除了手动维护页面配置列表的需求,提高了开发效率和可维护性。减少了项目结构的复杂性,使得项目更易于理解和维护,降低了维护成本。进一步的,在其中使用了高阶组件可以轻松地为页面添加新的功能,提高了项目的可扩展性。
附图说明
参照附图,本发明的公开内容将变得更易理解。本领域技术人员容易理解的是:这些附图仅仅用于说明的目的,而并非意在对本发明的保护范围组成限制。此外,图中类似的数字用以表示类似的部件,其中:
图1是根据本发明的一个实施例的React项目配置化生成路由的方法的主要步骤流程示意图;
图2是根据本发明的一个实施例的React项目配置化生成路由的方法的次要步骤流程示意图;
图3是根据本发明的一个实施例的React项目配置化生成路由的方法的次要步骤流程示意图;
图4是根据本发明的一个实施例的React项目配置化生成路由的方法的次要步骤流程示意图。
具体实施方式
下面参照附图来描述本发明的一些实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。
在本发明的描述中,“模块”、“处理器”可以包括硬件、软件或者两者的组合。一个模块可以包括硬件电路,各种合适的感应器,通信端口,存储器,也可以包括软件部分,比如程序代码,也可以是软件和硬件的组合。处理器可以是中央处理器、微处理器、图像处理器、数字信号处理器或者其他任何合适的处理器。处理器具有数据和/或信号处理功能。处理器可以以软件方式实现、硬件方式实现或者二者结合方式实现。非暂时性的计算机可读存储介质包括任何合适的可存储程序代码的介质,比如磁碟、硬盘、光碟、闪存、只读存储器、随机存取存储器等等。术语“A和/或B”表示所有可能的A与B的组合,比如只是A、只是B或者A和B。术语“至少一个A或B”或者“A和B中的至少一个”含义与“A和/或B”类似,可以包括只是A、只是B或者A和B。单数形式的术语“一个”、“这个”也可以包含复数形式。
这里先解释本发明涉及到的一些术语。
页面文件:页面文件是网页项目中用于表示特定页面的源代码文件。通常,一个页面文件包含了该页面的HTML结构、CSS样式和JavaScript逻辑。
数据获取:数据获取是指从服务器或其他数据源获取信息的过程。在网页应用程序中,数据获取通常涉及发送请求到服务器,然后接收并处理服务器返回的数据。这些数据可以用于填充页面的内容,或者作为页面逻辑的输入。
页面配置:页面配置是网页项目中用于描述页面特性和行为的元数据,如页面路径、权限要求等。页面配置信息可以用于生成路由规则、控制页面访问权限等。
路由管理:路由管理是一种用于控制网页应用程序中页面之间导航的技术。在一个网页应用程序中,用户可以通过点击链接或输入URL地址来访问不同的页面。路由管理系统负责根据用户的操作或URL来决定显示哪个页面,从而实现页面之间的导航。
参阅附图1,图1是根据本发明的一个实施例的React项目配置化生成路由的方法的主要步骤流程示意图。如图React项目配置化生成路由的方法所示,本发明实施例中的React项目配置化生成路由的方法主要包括下列步骤S10-步骤S50。
步骤S10:完成准备工作。
在本实施例中,当各个组件设置完毕时,则各个组件会根据预设的命令以及组件的特性进行工作,从而完成自动进行抓取和加载页面配置。
一个实施方式中,给出具体的设置方法,以React项目为例,具体包括步骤S101-步骤S106,如图2所示,具体如下:
步骤S101:创建React项目的运行环境。
在本实施例中,React是一个用于构建用户界面的JavaScript库。
一个实施方式中,若需要创建React项目,则需要首先创建好React项目的运行环境。在本实施方式中,使用Node.js v14+。Node.js是一个JavaScript运行时环境,用于允许在服务器端执行JavaScript。如果未安装Node.js,则下载并安装Node.js。在拥有Node.js后,检测是否有名为Yarn的包管理器,若无,则需安装名为Yarn的包管理器。包管理器用于安装、升级、配置和管理项目中的依赖库和框架。若需要安装Yarn,在拥有Node.js的前提下,在计算机终端执行命令:npm i-g yarn。这里使用npm全局安装yarn,npm是Node.js的包管理器。在有Yarn的包管理器后,React项目的运行环境已经创建完毕。
步骤S102:创建React项目。
一个实施方式中,使用create-react-app工具初始化一个React项目。其中,Create-react-app是一个命令行工具,用于快速搭建React应用程序。具体的为,运行命令:npx create-react-app react-model。这将创建一个名为"react-model"的React项目。npx是Node.js的一个包执行器,用于执行本地或远程的Node.js包。在本实施方式中,执行本地已下载的Node.js包,从而初始化一个React项目,从而创建了一个React项目。
步骤S103:暴露项目配置。
在本实施例中,项目配置文件包括Webpack配置、Babel配置和ESLint配置等,分别负责处理项目的打包、代码转换和代码质量检查。
一个实施方式中,初始化项目之后,需要暴露项目的配置文件,在本实施方式中,进入项目目录并执行命令yarn eject使项目暴露配置。在React项目中,"暴露项目配置"意味着将项目内部的配置文件和脚本提取出来,以便对其进行自定义和修改。当使用create-react-app创建一个新的React项目时,许多配置文件和脚本都被隐藏在内部。本步骤是为了简化项目结构并提供一个易于使用的开箱即用的开发环境。
然而,在某些情况下,可能需要自定义项目配置以满足特定需求,例如添加一个新的Webpack loader。为了实现这一点,需要执行yarn eject命令。该命令会将create-react-app的内部配置文件和脚本复制到React的项目目录中。经过上述操作就可以访问和修改这些文件。
需要注意的是,yarn eject是一个不可逆的操作。一旦执行此命令,将无法再回到create-react-app的简化设置。在本实施方式中选择执行yarn eject命令从而暴露项目配置。
暴露项目配置后,将可以访问以下类型的配置文件:
Webpack配置:Webpack是一个用于打包前端资源(如JavaScript、CSS和图片)的工具。配置文件config/webpack.config.js包含了Webpack的配置,例如如何处理不同类型的文件、如何优化打包结果等。
Babel配置:Babel是一个JavaScript编译器,用于将现代的JavaScript代码转换成旧版本浏览器可以理解的代码。配置文件babel.config.js包含了Babel的配置,例如使用哪些插件来处理新的JavaScript特性。
ESLint配置:ESLint是一个用于检查和报告代码质量问题的工具。配置文件.eslintrc文件包含了ESLint的配置,例如启用哪些规则来检查代码、如何处理项目中的不同文件等。
通过暴露和修改这些配置文件,可以更好地控制项目的构建过程,以满足特定需求。在本实施方式中,需要修改Webpack配置,在Webpack配置文件中添加一个新的loader,用于处理页面配置信息。
步骤S104:创建操作页面文件配置信息的软件包。
在本实施例中,在React项目中,操作页面文件的配置信息需要有软件包的支持,通过不同的软件包可以实现不同的功能,在本实施例中软件包包括配置加载器库、处理应用程序的路由和导航库。
一个实施方式中,在项目中安装@ra-lib/config-loader、react-router和react-router-dom。这些库分别用于加载配置、处理应用程序的路由和导航。运行命令:yarn add@ra-lib/config-loader react-router react-router-dom。
为了本领域的技术人员能够更方便的理解本技术方案,其中各个软件包的功能如下:
@ra-lib/config-loader:是一个配置加载器库,用于从页面文件中自动抓取和加载页面配置。因为loader能够在不同地方访问和使用这些配置从而方便后续的对这些页面配置进行集中存储和管理,例如在路由文件中。
react-router:用于React应用程序的路由库,即导航库。路由是指在不同页面之间导航的机制,它能够根据URL或者应用程序的状态来决定显示哪个页面。React Router提供了一系列API和组件,使得在React应用程序中实现路由变得简单。例如,它提供了<Route>、<Switch>、<Link>等组件,用于定义路由规则、选择要显示的页面和创建导航链接。
react-router-dom:这是针对Web应用程序的React Router库,即处理应用程序的路由。React Router的设计可以适用于不同的平台(如Web和原生应用程序)。react-router-dom用于在浏览器环境中使用react-router,提供了针对浏览器环境的特定实现,例如处理浏览器历史记录、处理URL参数等。在Web应用程序中使用React Router时,需要安装并使用react-router-dom。
若没有上述软件包,则需要在平台上安装上述软件包,安装上述软件包需在终端中执行的命令如下:yarn add@ra-lib/config-loader react-router react-router-dom。
步骤S105:添加loader组件。
在本实施例中,在config/webpack.config.js文件中,在module.rules配置中添加一个新的loader配置。Loaders是Webpack的一部分,它们用于在打包过程中对文件进行预处理。在本实施例中,添加一个新的loader组件从而处理页面配置。
一个实施方式中,已经安装了配置加载器库,即@ra-lib/config-loader,但是此时配置加载器库还不能作用于React项目中。在本实施方式中将配置加载器库集成到项目中,使其在Webpack打包过程中生效。在React项目中,用Webpack这个工具来打包资源文件。Webpack的配置文件是config/webpack.config.js,它包含了如何处理项目中各种文件类型的规则。这些规则被称为“loaders”。
Loaders的作用是在Webpack打包过程中对特定类型的文件进行预处理。例如,将ES6语法的JavaScript文件转换成浏览器能理解的ES5语法,或者将Sass文件转换成CSS文件。
在本实施方式中,向module.rules配置添加一个新的loader,用于指定待处理的文件类型以及处理页面配置。具体来说,这个loader的作用是从项目的页面文件(如src/pages/home/index.jsx)中抓取配置信息,如路由路径,并将这些配置信息生成到一个指定的文件中,如src/pages/page-configs.js。这样,就可以在项目的其他地方引用这个文件,从而实现基于页面配置的自动路由管理。
为了实现这个功能,需要在config/webpack.config.js的module.rules中添加一个新的loader配置。这个新的loader配置需要指定要处理的文件类型(如:.jsx文件),并配置@ra-lib/config-loader库来完成页面配置抓取的任务。
需要说明的是,优选的,这个新的loader配置放在现有的JavaScript处理loader配置(例如:babel-loader)之前,以确保的页面配置抓取操作能够在Webpack处理其他JavaScript代码之前进行。这样,就可以确保页面配置信息已经被抓取并生成到指定文件中,然后再进行其他JavaScript文件的打包操作。
总的来说,在项目的Webpack配置文件(config/webpack.config.js)中添加了一个新的loader配置,用于处理页面配置信息。这个新的loader配置会在打包过程中从页面文件中抓取配置信息,并将这些信息生成到一个指定的文件中。这样,就可以在项目的其他地方引用这个文件,从而实现基于页面配置的自动路由管理。
步骤S106:创建第一配置组件。
在本实施例中,第一配置组件作为路由扫描的标识,是一个高阶组件。
一个实施方式中,创建了一个名为src/commons/config-hoc.js的第一配置文件,用于编写高阶组件。高阶组件(Higher-Order Component,简称HOC)是React中一种特殊的组件,它接收一个组件作为输入参数,并返回一个经过修改或扩展的新组件。这样,可以在不改变原始组件代码的情况下,为其添加新的功能或属性。
在本实施例中的React项目中,高阶组件的主要作用是起标识作用。为了实现这个目标,需要编写一个名为config高阶组件的函数。这个函数接收一个组件(如:src/pages/home/index.jsx),然后通过@ra-lib/config-loader库对该组件进行扫描,抓取页面配置信息(如路由路径)。
为了实现这个功能,需要在config-hoc.js文件中编写一个名为config高阶组件的函数。这个函数接收一个组件作为参数,并返回一个新的组件。在新组件的内部,可以将页面配置信息作为属性传递给原始组件。这样,原始组件就可以访问和使用页面配置信息了。
在本实施方式中,首先在src/commons/config-hoc.js文件中创建config高阶组件,其中部分示例代码如下:
import React from'react';
export default function config(Component){
return function ConfigWrappedComponent(props){
return<Component{...props}/>;
};
}
之后,在页面文件中选择性的使用config高阶组件包装页面组件,以src/pages/home/index.jsx为例,其中部分示例代码如下:
import React from'react';
import config from'../../commons/config-hoc';
@config({
path:'/home',
title:'首页',
})
class Home extends React.Component{
//页面内容和逻辑
}
export default Home;
当执行webpack编译过程时,此时已经配置了@ra-lib/config-loader来处理页面文件。config-loader会遍历项目中的所有页面文件,并检查它们是否使用了config高阶组件。如果发现某个页面使用了config高阶组件,config-loader就会从该页面文件中抓取配置信息。
通过这种方式,config高阶组件成为了一种标识符,帮助config-loader找到需要抓取配置信息的页面。同时,由于高阶组件可以包含任意其他功能,这为提供了在不同页面之间共享逻辑的灵活性。
需要说明的是,在编写高阶组件时,使用@ra-lib/config-loader库对组件进行扫描,以便在扫描过程中发现路由配置。这样,当在项目的其他地方引用这个高阶组件时,就可以实现基于页面配置的自动路由管理。
总之,在项目中创建了一个名为config-hoc.js的文件,用于编写一个处理页面配置的高阶组件。这个高阶组件将作为路由扫描的标识,以便在项目中实现基于页面配置的自动路由管理。
步骤S107:创建路由组件。
一个实施方式中,创建一个名为AppRouter的React函数组件。这个组件的主要作用是根据配置信息设置React项目中各页面间的导航关系处理项目中的路由配置,即负责在不同页面之间导航,以及在用户执行操作时显示正确的页面。
使用useRoutes钩子创建路由结构。遍历之前筛选出的路由配置(routes),并使用lazy函数将每个配置中的组件转换为异步加载的组件。这可以提高应用程序的性能,因为组件只有在需要时才会加载。
使用Suspense组件包裹路由元素。当异步组件加载过程中,Suspense组件会显示备用内容(在本例中为“加载中...”文本)。这样,在组件加载时,用户会看到一个占位符,而不是空白页面。最后,将生成的路由结构(element)插入Suspense组件中,用于显示异步加载的页面组件。
综上,src/AppRouter.jsx会根据src/pages/page-configs.js中的配置信息,设置了项目中各个页面之间的导航关系。在项目启动部署在服务器后的用户应用阶段,当用户在应用程序中切换页面时,AppRouter组件会根据路由配置加载并显示正确的页面。
完成上述工作之后即完成了准备工作。
步骤S20:获取React项目项目中具有第一配置组件的页面文件。
在本实施例中,项目为React项目,第一配置组件作为路由扫描标识,即具有标识作用的高阶组件。
一个实施方式中,第一配置文件为步骤S106中的高阶组件,会作为路由扫描的标识。具体的包括步骤S201-S202。
步骤S201:遍历React项目中的所有页面文件。
在本实施例中,使用配置加载器库即@ra-lib/config-loader库遍历React项目中的所有页面文件。
步骤S202:判断页面文件中是否具有第一配置组件。
在本实施例中,使用配置加载器库判断页面文件中是否使用了第一配置组件。
一个实施方式中,使用了名为@ra-lib/config-loader的配置加载器库,其主要作用是在构建过程中遍历项目中的所有页面文件,并检查它们是否使用了特定的高阶组件。在本实施例中,需要关注的是名为config的高阶组件。
当配置加载器库遍历项目中的页面文件时,它会检查每个文件中是否包含config高阶组件。如果发现了config高阶组件,则会执行下一步操作。
步骤S30:抓取具有第一配置组件的页面文件中的配置信息。
在本实施例中,使用配置加载器库抓取具有第一配置组件的页面文件中的配置信息,其中配置信息包括页面文件路由路径和组件文件路径,组件文件路径为页面组件在项目中的相对路径。
一个实施方式中,例如,假设项目中有一个名为src/pages/home/index.jsx的页面文件,文件内容如下:
import React from'react';
import config from'../../commons/config-hoc';
const Home=()=>{
return(
<div>
<h1>Home Page</h1>
</div>
);
};
export default config({
path:'/home',
})(Home);
在这个例子中,使用了config高阶组件,并传递了一个包含path属性的配置对象。当配置加载器库遍历到这个页面文件时,它会检测到config高阶组件,并提取出path属性的值('/home')和页面组件的相对路径('../src/pages/home/index.jsx')。
通过上述方式,配置加载器库可以自动地从项目中的页面文件中提取页面配置信息。这些信息会被用于生成项目的路由配置,从而实现基于页面配置的自动路由管理。这大大简化了项目中路由配置的维护工作,使开发人员能够更专注于页面功能的开发。
步骤S40:根据配置信息生成对应的路由配置。
在本实施例中,配置信息为上述抓取到的配置信息。
一个实施方式中,将配置信息存储在内存中,之后根据配置信息生成对应的路由配置。在本实施方式中将配置根据配置信息得到了包含配置信息的路由配置,即AppRouter组件(src/AppRouter.jsx)。
步骤S50:根据路由配置,启动React项目。
在本实施例中,基于步骤S501-S502将React项目将服务部署至服务器。
步骤S501:将路由配置导入至入口组件文件。
在本实施例中,入口组件文件为App.js文件,将步骤S40中的AppRouter组件导入到App.js文件中,从而当用户访问应用程序时,根据路由配置显示相应的页面。
一个实施方式中,首先,需要导入步骤S40中的src/AppRouter.jsx文件。为此,在App.js文件的顶部,添加以下代码:import AppRouter from'./AppRouter';。这样,可以在App.js文件中使用AppRouter组件。
接下来,在App.js文件中,创建一个包含导航菜单和内容区域的基本结构。在这个例子中,创建了一个名为wrap的div元素,它包含了一个menu无序列表和一个content区域。在menu无序列表中,使用Link组件创建了两个导航链接,分别指向首页和用户管理页面。
在内容区域中,需要使用AppRouter组件。这个组件负责根据路由配置显示相应的页面。在content div元素中,添加<AppRouter/>。
最后,确保将修改后的App组件导出,以便在项目的其他地方(例如index.js)使用它。其中部分代码如下:
import{Link}from'react-router-dom';
importAppRouter from'./AppRouter';
import'./App.css';
function App(){
return(
<div className="wrap">
<ul className="menu">
<li><Link to="/">首页</Link></li>
<li><Link to="/user">用户管理</Link></li>
</ul>
<div className="content">
<AppRouter/>
</div>
</div>
);
}
export defaultApp;
经过上述步骤即将路由配置导入至入口组件文件。
步骤S502:启动React项目将预先设置的路由组件根据所述路由配置加载并显示页面。
在本实施例中,启动项目的开发服务器。开发服务器负责运行项目,并在浏览器中显示应用程序。
一个实施方式中,打开终端或命令提示符,确保当前路径是项目根目录。在终端或命令提示符中,执行yarn start命令。启动项目的开发服务器。开发服务器负责运行项目,并在浏览器中显示应用程序。应用程序已经根据自动化路由配置设置好了路由规则。这意味着当用户在地址栏输入不同的URL或点击应用程序中的导航链接时,路由系统会根据预先设置的路由配置自动切换到相应的页面。
在上述步骤完成之后即实现了自动从页面文件中抓取和加载页面配置。这种方法消除了手动维护页面配置列表的需求,提高了开发效率和可维护性。
以上是程序开发阶段完成的工作。在完成后可以在浏览器中测试应用程序。点击导航菜单中的链接,查看不同页面是否根据路由配置正确显示。例如,点击“首页”链接应该导航到首页,点击“用户管理”链接应该导航到用户管理页面。这些页面应该与之前在src/pages文件夹中创建的页面组件对应。
通过这些步骤,可以确保项目已成功启动,并且基于页面配置的动态路由导航正常工作。这有助于验证整个实现过程的正确性,以及识别和解决潜在问题。
实施例2:
本实施例中的大多数内容均与实施例1中相同,不同之处在于本实施例中不再将配置信息存储在内存中,而是通过步骤S401-S402生成对应的路由配置。
步骤S401:将配置信息存储在配置文件中。
在本实施例中,配置加载器库会提取页面配置信息(例如,路由路径、页面组件的相对路径等),并将这些信息存储在一个配置文件中。
一个实施方式中,配置文件(如src/config/routes.js)包含以下内容:
export default[
{
path:'/home',
component:'../src/pages/home/index.jsx',
},
{
path:'/users',
component:'../src/pages/users/index.jsx',
},
//更多页面配置信息...
];
此配置文件将提供一个集中存储和管理页面配置的地方,配置文件中包含了从项目中的页面文件抓取到的配置信息。
步骤S402:基于配置文件生成对应的路由配置。
在本实施例中,路由配置负责在不同页面之间导航,以及在用户执行操作时显示正确的页面。
一个实施方式中,在React项目中,引入步骤S401中的配置文件,从而生成对应的路由配置。步骤S401中的配置文件src/pages/page-configs.js文件,它包含了所有页面的配置信息。这个文件是通过import pageConfigs from'./pages/page-configs';导入的。在本实施方式中提供部分代码,具体如下:
import{lazy,Suspense}from'react';
import{useRoutes}from'react-router';
import pageConfigs from'./pages/page-configs';//抓取到的页面路由
const routes=pageConfigs.filter(({path})=>!!path);
export default function AppRouter(){
const element=useRoutes(
routes.map(item=>{
const{component}=item;
return { ...item, element: <lazy component={component}/>};
})
);
return(
<Suspense fallback="加载中...">
{element}
</Suspense>
);
}
在上述示例代码中,使用const routes=pageConfigs.filter(({path})=>!!path);筛选出具有路径(path)的路由配置。这样,得到了一个包含有效页面路径的数组,供后续使用。
其中export default functionAppRouter()根据AppRouter组件安装的情况决定是否删去此部分以及其相应的部分。
本领域技术人员能够理解的是,本发明实现上述一实施例的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读存储介质可以包括:能够携带计算机程序代码的任何实体或装置、介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存取存储器、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括电载波信号和电信信号。
进一步,本发明还提供了一种控制装置。在根据本发明的一个控制装置实施例中,控制装置包括处理器和存储装置,存储装置可以被配置成存储执行上述方法实施例的React项目配置化生成路由的方法的程序,处理器可以被配置成用于执行存储装置中的程序,该程序包括但不限于执行上述方法实施例的React项目配置化生成路由的方法的程序。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该控制装置可以是包括各种电子设备形成的控制装置设备。
进一步,本发明还提供了一种计算机可读存储介质。在根据本发明的一个计算机可读存储介质实施例中,计算机可读存储介质可以被配置成存储执行上述方法实施例的React项目配置化生成路由的方法的程序,该程序可以由处理器加载并运行以实现上述React项目配置化生成路由的方法。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机可读存储介质可以是包括各种电子设备形成的存储装置设备,可选的,本发明实施例中计算机可读存储介质是非暂时性的计算机可读存储介质。
进一步,应该理解的是,由于各个模块的设定仅仅是为了说明本发明的装置的功能单元,这些模块对应的物理器件可以是处理器本身,或者处理器中软件的一部分,硬件的一部分,或者软件和硬件结合的一部分。因此,图中的各个模块的数量仅仅是示意性的。
本领域技术人员能够理解的是,可以对装置中的各个模块进行适应性地拆分或合并。对具体模块的这种拆分或合并并不会导致技术方案偏离本发明的原理,因此,拆分或合并之后的技术方案都将落入本发明的保护范围内。
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。
Claims (10)
1.一种React项目配置化生成路由的方法,其特征在于,包括:
获取React项目中具有第一配置组件的页面文件,其中所述第一配置组件作为路由扫描标识;
抓取所述具有第一配置组件的页面文件中的配置信息;
根据所述配置信息生成对应的路由配置。
2.根据权利要求1所述的React项目配置化生成路由的方法,其特征在于,
所述配置信息包括页面文件路由路径和/或组件文件路径,其中组件文件路径为页面组件在项目中的路径。
3.根据权利要求1所述的React项目配置化生成路由的方法,其特征在于,所述根据所述配置信息生成对应的路由配置,包括:
将所述配置信息存储在内存中;
基于所述配置信息生成对应的路由配置;或
将所述配置信息存储在配置文件中;
基于所述配置文件生成对应的路由配置。
4.根据权利要求1-3中任意一项所述的React项目配置化生成路由的方法,其特征在于,所述方法还包括:
根据所述路由配置,启动所述React项目。
5.根据权利要求1-3中任意一项所述的React项目配置化生成路由的方法,其特征在于,所述方法还包括:
在React项目的webpack的配置文件中添加loader组件,其中所述loader组件指定待处理的文件类型并配置@ra-lib/config-loader库;
在React项目中创建第一配置文件,所述第一配置文件用于创建所述第一配置组件;
在React项目的页面文件中选择性使用所述第一配置组件;
在React项目中创建路由组件,所述路由组件用于根据配置信息设置所述React项目中各页面间的导航关系。
6.根据权利要求5所述的React项目配置化生成路由的方法,其特征在于,所述获取React项目中具有第一配置组件的页面文件,包括:
通过所述@ra-lib/config-loader库遍历React项目中的所有页面文件;
判断所遍历的页面文件中是否具有第一配置组件。
7.根据权利要求6所述的React项目配置化生成路由的方法,其特征在于,
所述抓取所述具有第一配置组件的页面文件中的配置信息,包括:
对于具有第一配置组件的页面文件,使用所述loader组件从对应的页面文件中抓取页面文件路由路径和组件文件路径。
8.根据权利要求1或7所述的React项目配置化生成路由的方法,其特征在于,所述React项目的创建和初始化包括:
安装@ra-lib/config-loader库、react-router以及react-router-dom库的软件包;
初始化React项目;
进入React项目目录并暴露项目配置文件。
9.一种控制装置,包括处理器和存储装置,所述存储装置适于存储多条程序代码,其特征在于,所述程序代码适于由所述处理器加载并运行以执行权利要求1至8中任一项所述的React项目配置化生成路由的方法。
10.一种计算机可读存储介质,其中存储有多条程序代码,其特征在于,所述程序代码适于由处理器加载并运行以执行权利要求1至8中任一项所述的React项目配置化生成路由的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310520393.8A CN116540994A (zh) | 2023-05-10 | 2023-05-10 | React项目配置化生成路由的方法、控制装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310520393.8A CN116540994A (zh) | 2023-05-10 | 2023-05-10 | React项目配置化生成路由的方法、控制装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116540994A true CN116540994A (zh) | 2023-08-04 |
Family
ID=87457343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310520393.8A Pending CN116540994A (zh) | 2023-05-10 | 2023-05-10 | React项目配置化生成路由的方法、控制装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116540994A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117348859A (zh) * | 2023-10-11 | 2024-01-05 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种基于vue项目的可视化路由管理方法及系统 |
-
2023
- 2023-05-10 CN CN202310520393.8A patent/CN116540994A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117348859A (zh) * | 2023-10-11 | 2024-01-05 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种基于vue项目的可视化路由管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20050198646A1 (en) | Method, data processing device, computer program product and arrangement for processing electronic data | |
US9524279B2 (en) | Help document animated visualization | |
Boduch et al. | React and React Native: A complete hands-on guide to modern web and mobile development with React. js | |
US20030093420A1 (en) | Method and system for retrieving sharable information using a hierarchically dependent directory structure | |
CN111680253B (zh) | 页面应用数据包生成方法、装置、计算机设备及存储介质 | |
CN112882700A (zh) | iOS应用程序构建方法及装置、电子设备及存储介质 | |
US20050251783A1 (en) | Settings and constraints validation to enable design for operations | |
US8448151B2 (en) | Method for binarizing initial script on operating system and operating method of binary script | |
CN113885849B (zh) | 基于工业互联网平台的应用开发方法、装置及终端设备 | |
Bertoli | React Design Patterns and Best Practices | |
CN113553035A (zh) | 一种通用的前端ui组件库的设计和构建方法 | |
CN116540994A (zh) | React项目配置化生成路由的方法、控制装置及存储介质 | |
CN111752841A (zh) | 单测模拟方法、装置、设备与计算机可读存储介质 | |
US20220300262A1 (en) | Method for constructing, running and implementing cross-platform application, terminal, server and system | |
CN117112060A (zh) | 组件库构建方法、装置、电子设备及存储介质 | |
CN110806891B (zh) | 嵌入式设备软件版本的生成方法及装置 | |
CN113641594B (zh) | 跨端自动化测试方法以及相关装置 | |
CN115658140A (zh) | 一种sdk的打包方法、装置、终端以及存储介质 | |
CN115794214A (zh) | 应用模块元数据管理方法、设备、存储介质及装置 | |
CN109684192A (zh) | 基于数据处理的本地测试方法、设备、存储介质及装置 | |
Thakkar | Building React Apps with Server-Side Rendering: Use React, Redux, and Next to Build Full Server-Side Rendering Applications | |
Thakkar et al. | Introducing react. js | |
CN110110299B (zh) | 文本变换方法、装置以及服务器 | |
JP2021184246A (ja) | 命令変換支援プログラム、命令変換支援方法および情報処理装置 | |
CN116595284B (zh) | 网页系统运行方法、装置、设备、存储介质和程序 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |