代码在线编辑方法、装置、客户端、服务器和存储介质与流程

文档序号:28624470发布日期:2022-01-22 13:51阅读:104来源:国知局
代码在线编辑方法、装置、客户端、服务器和存储介质与流程

1.本公开涉及互联网技术领域,尤其涉及一种代码在线编辑方法、装置、客户端、服务器和存储介质。


背景技术:

2.在应用开发过程中,可能需要多个研发人员协同开发。在多人协同开发模式下,需要研发人员将大量的代码文件下载到本地,在本地对代码文件进行多次修改,并在修改完代码文件后,将更新后的代码文件上传到服务器。
3.然而上述离线更新代码文件的方式,不仅增加了研发人员的工作量,而且还降低了开发效率。


技术实现要素:

4.本公开旨在至少在一定程度上解决相关技术中的技术问题之一。
5.为此,本公开提出了如下技术方案:
6.本公开第一方面实施例提出了一种代码在线编辑方法,应用于客户端,包括:
7.向服务器发送第一代码文件的链接;其中,所述链接用于确定所述第一代码文件的标识,并查询所述标识对应的各所述候选代码文件,根据各候选代码文件的文件内容生成第一目标页面;
8.接收所述服务器返回的所述第一目标页面并展示;
9.向所述服务器发送第一操作信息,其中,所述第一操作信息用于从各所述候选代码文件中确定目标代码文件,并对所述目标代码文件的文件内容进行编辑,以利用编辑后的所述目标代码文件的文件内容对所述第一目标页面进行更新;
10.接收所述服务器发送的更新后的所述第一目标页面并展示。
11.本公开第二方面实施例提出了另一种代码在线编辑方法,应用于服务器,包括:
12.接收客户端发送的第一代码文件的链接;
13.根据所述链接,确定所述第一代码文件的标识,并查询所述标识对应的各候选代码文件;
14.根据各所述候选代码文件的文件内容,生成第一目标页面;
15.向所述客户端返回第一目标页面;
16.接收所述客户端发送的第一操作信息,响应于所述第一操作信息,从各所述候选代码文件中确定目标代码文件,并对所述目标代码文件的文件内容进行编辑,以利用编辑后的所述目标代码文件的文件内容对所述第一目标页面进行更新;
17.向所述客户端发送更新后的第一目标页面。
18.本公开第三方面实施例提出了一种代码在线编辑装置,应用于客户端,包括:
19.发送模块,用于向服务器发送第一代码文件的链接;其中,所述链接用于确定所述第一代码文件的标识,并查询所述标识对应的各候选代码文件,根据各所述候选代码文件
的文件内容生成第一目标页面;
20.接收模块,用于接收所述服务器返回的所述第一目标页面并展示;
21.所述发送模块,还用于向所述服务器发送第一操作信息,其中,所述第一操作信息用于从各所述候选代码文件中确定目标代码文件,并对所述目标代码文件的文件内容进行编辑,以利用编辑后的所述目标代码文件的文件内容对所述第一目标页面进行更新;
22.所述接收模块,还用于接收所述服务器发送的更新后的所述第一目标页面并展示。
23.本公开第四方面实施例提出了另一种代码在线编辑装置,应用于服务器,包括:
24.接收模块,用于接收客户端发送的第一代码文件的链接;
25.查询模块,用于根据所述链接,确定所述第一代码文件的标识,并查询所述标识对应的各候选代码文件;
26.生成模块,用于根据各所述候选代码文件的文件内容,生成第一目标页面;
27.发送模块,用于向所述客户端返回第一目标页面;
28.所述接收模块,还用于接收所述客户端发送的第一操作信息;
29.确定模块,用于响应于所述第一操作信息,从各所述候选代码文件中确定目标代码文件,并对所述目标代码文件的文件内容进行编辑,以利用编辑后的所述目标代码文件的文件内容对所述第一目标页面进行更新;
30.所述发送模块,还用于向所述客户端发送更新后的第一目标页面。
31.本公开第五方面实施例提出了一种客户端,包括:处理器;用于存储所述处理器的可执行指令的存储器;其中,所述处理器被配置为调用并执行所述存储器存储的可执行指令,以实现如本公开第一方面实施例提出的代码在线编辑方法。
32.本公开第六方面实施例提出了一种服务器,包括:处理器;用于存储所述处理器的可执行指令的存储器;其中,所述处理器被配置为调用并执行所述存储器存储的可执行指令,以实现如本公开第二方面实施例提出的代码在线编辑方法。
33.本公开第七方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本公开第一方面实施例提出的代码在线编辑方法,或者,实现如本公开第二方面实施例提出的代码在线编辑方法。
34.本公开第八方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,执行如本公开第一方面实施例提出的代码在线编辑方法,或者,执行如本公开第二方面实施例提出的代码在线编辑方法。
35.本公开的技术方案,通过客户端向服务器发送第一代码文件的链接;其中,链接用于确定第一代码文件的标识,并查询标识对应的各候选代码文件,根据各候选代码文件的文件内容生成第一目标页面;接收服务器返回的第一目标页面并展示;向服务器发送第一操作信息,其中,第一操作信息用于从各候选代码文件中确定目标代码文件,并对目标代码文件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新;接收服务器发送的更新后的第一目标页面并展示。由此,可以实现在线更新代码文件内容,可以降低研发人员的工作量,提升开发效率。
36.本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
37.本公开上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
38.图1为本公开一实施例所提供的代码在线编辑方法的流程示意图;
39.图2为本公开实施例中的第一目标页面示意图一;
40.图3为本公开另一实施例所提供的代码在线编辑方法的流程示意图;
41.图4为本公开实施例中的第一目标页面示意图二;
42.图5为本公开另一实施例所提供的代码在线编辑方法的流程示意图;
43.图6为本公开实施例中的第二目标页面示意图;
44.图7为本公开实施例的应用场景示意图;
45.图8为现有的搜索页面示意图;
46.图9为本公开另一实施例所提供的代码在线编辑方法的流程示意图;
47.图10为本公开另一实施例所提供的代码在线编辑方法的流程示意图;
48.图11为本公开实施例中客户端渲染得到的各一级文件夹示意图;
49.图12为本公开实施例中客户端渲染得到的搜索文件树示意图;
50.图13为本公开另一实施例所提供的代码在线编辑方法的流程示意图;
51.图14为本公开实施例中客户端的显示界面示意图一;
52.图15为本公开实施例中客户端的显示界面示意图二;
53.图16为本公开另一实施例所提供的代码在线编辑方法的流程示意图;
54.图17为本公开实施例中客户端的显示界面示意图三;
55.图18为本公开实施例中客户端的显示界面示意图四;
56.图19为本公开另一实施例所提供的代码在线编辑方法的流程示意图;
57.图20为本公开一实施例所提供的代码在线编辑装置的结构示意图;
58.图21为本公开另一实施例所提供的代码在线编辑装置的结构示意图;
59.图22示出了适于用来实现本公开实施方式的示例性电子设备的框图。
具体实施方式
60.下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
61.下面参考附图描述本公开实施例的代码在线编辑方法、装置、客户端、服务器和存储介质。
62.图1为本公开一实施例所提供的代码在线编辑方法的流程示意图。
63.如图1所示,该代码在线编辑方法可以由客户端执行,可以包括以下步骤:
64.步骤101,向服务器发送第一代码文件的链接;其中,该链接用于确定第一代码文件的标识,并查询标识对应的各候选代码文件,根据各候选代码文件的文件内容生成第一目标页面。
65.在本公开实施例中,第一代码文件的链接可以携带第一代码文件的文件名称、文件路径等信息。比如,该链接可以为gerrit链接。
66.在本公开实施例中,客户端可以向服务器发送第一代码文件的链接,相应的,服务器在接收到该链接后,可以根据该链接确定第一代码文件的标识,并查询第一代码文件的标识对应的各候选代码文件,根据各候选代码文件的文件内容生成第一目标页面。
67.举例而言,以第一代码文件的标识为第一代码文件的文件名称进行示例性说明,同一代码文件对应的各次历史修改记录(或称为提交历史记录或祖先修改记录)对应的文件名称可以相同,可以根据gerrit链接,获取同一文件名称的各代码文件,作为候选代码文件,根据各候选代码文件的文件内容生成第一目标页面。
68.作为一种示例,对于某一代码文件,假设服务器上仅保存该代码文件对应的两个历史修改记录,则服务器生成的第一目标页面可以如图2所示,区域21和区域22中分别显示一个代码文件的文件内容。
69.步骤102,接收服务器返回的第一目标页面并展示。
70.在本公开实施例中,服务器在生成第一目标页面后,可以向客户端返回该第一目标页面,相应的,客户端在接收到该第一目标页面后,可以展示该第一目标页面。
71.作为一种示例,以链接为gerrit链接进行示例,服务器可以通过mitexteditor打开第一代码文件的gerrit链接,后台自动调用gerrit rest api(application programming interface,应用程序接口)的plugins接口,从gitlie上获取到有关该第一代码文件的所有的提交历史记录,并且将第一代码文件的所有提交历史记录,整理为格式化易读的方式展现到页面上,以便于用户从中选择一个代码文件。生成的页面可以如图2所示。
72.需要说明的是,图2中,提交历史记录中主要包含以下5种信息:
73.第一,此次提交的commit id,它是git提交中的唯一标示元素;
74.第二,此次提交的作者(author);
75.第三,提交的时间(date);
76.第四,有关此次提交的详细描述信息(比如解决了什么问题,解决问题的方法等详细描述信息);
77.第五,提交到gerrit服务器上的change id,该id是gerrit服务器上的标示元素。
78.其中,可以采用mitexteditor中的monaco editor模板渲染页面。
79.步骤103,向服务器发送第一操作信息,其中,第一操作信息用于从各候选代码文件中确定目标代码文件,并对目标代码文件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新。
80.可以理解的是,第一目标页面上展示的为同一代码文件对应的各次历史修改记录(即每个候选代码文件为一次历史修改记录),用户可以根据需求从多个候选代码文件中选择一个代码文件作为最终所需的代码文件,本公开中记为目标代码文件,并根据自身需求,确定是否对目标代码文件进行更新。
81.在本公开实施例中,客户端在展示该第一目标页面后,若监测到用户触发了第一操作信息,则可以向服务器发送该第一操作信息,相应的,服务器在接收到该第一操作信息后,可以响应于该第一操作信息,从各候选代码文件中确定目标代码文件,并对目标代码文件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新。
82.步骤104,接收服务器发送的更新后的第一目标页面并展示。
83.在本公开实施例中,服务器对第一目标页面进行更新后,可以向客户端发送更新后的第一目标页面,相应的,客户端可以接收服务器发送的更新后的第一目标页面,并展示该更新后的第一目标页面。由此,可以实现在线更新代码文件内容,可以降低研发人员的工作量,提升开发效率。
84.本公开实施例的代码在线编辑方法,通过客户端向服务器发送第一代码文件的链接;其中,该链接用于确定第一代码文件的标识,并查询标识对应的各候选代码文件,根据各候选代码文件的文件内容生成第一目标页面;接收服务器返回的第一目标页面并展示;向服务器发送第一操作信息,其中,第一操作信息用于从各候选代码文件中确定目标代码文件,并对目标代码文件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新;接收服务器发送的更新后的第一目标页面并展示。由此,可以实现在线更新代码文件内容,可以降低研发人员的工作量,提升开发效率。
85.为了清楚说明上述实施例,本公开还提供一种代码在线编辑方法。
86.图3为本公开另一实施例所提供的代码在线编辑方法的流程示意图。
87.如图3所示,该代码在线编辑方法可以由客户端执行,可以包括以下步骤:
88.步骤301,向服务器发送第一代码文件的链接;其中,链接用于确定第一代码文件的标识,并查询标识对应的各候选代码文件,根据各候选代码文件的文件内容生成第一目标页面。
89.步骤301的执行过程可以参见上述实施例中步骤101的执行过程,在此不做赘述。
90.步骤302,接收服务器返回的第一目标页面并展示,其中,第一目标页面包括多个区域,每个区域用于展示一个候选代码文件的文件内容,且每个区域展示有选取控件。
91.作为一种示例,第一目标页面可以如图2所示,图2以第一目标页面包括两个区域,分别为区域21和22进行示例,其中,区域21中的选取控件为“local(本地)”控件211,区域22中的选取控件为“remote(远程)”控件221。
92.步骤303,监测针对多个区域所展示的选取控件的触发操作。
93.步骤304,根据多个区域中执行触发操作的目标区域,生成第一操作信息,其中,第一操作信息包含目标区域的标识;目标区域的标识用于根据目标区域中展示的候选代码文件的文件内容,确定目标代码文件。
94.在本公开实施例中,客户端可以对每个区域所展示的选取控件,监测触发操作,在监测到针对多个区域所展示的选取控件的触发操作的情况下,可以根据多个区域中执行触发操作的目标区域,生成第一操作信息。
95.步骤305,发送第一操作信息,其中,第一操作信息用于从各候选代码文件中确定目标代码文件,并对目标代码文件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新。
96.在本公开实施例中,服务器在接收到第一操作信息时,可以响应于该第一操作信息,根据目标区域的标识,目标区域中展示的候选代码文件作为目标代码文件,即服务器可以根据目标区域的标识,确定目标区域中展示的候选代码文件的文件内容,根据目标区域中展示的候选代码文件的文件内容,确定目标代码文件,例如,目标区域中展示的为代码文件1的文件内容,则目标代码文件即为该代码文件1。并且,服务器还可以根据该第一操作信
息,对目标代码文件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新。
97.作为一种示例,如图2所示,用户可以通过点击区域21中的“local(本地)”控件211,来选取区域21中展示的候选代码文件,作为目标代码文件,或者,用户可以通过点击区域22中的“remote(远程)”控件221,来选取区域22中展示的候选代码文件,作为目标代码文件。在用户选取一个区域中的目标代码文件后,用户可以对该区域中的目标代码文件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新。
98.在本公开实施例的一种可能的实现方式中,为了便于用户获知当前所采用的目标代码文件,服务器还可以根据该第一操作信息,将目标区域中的选取控件置为高亮状态。
99.作为一种示例,如图2所示,服务器在打开gerrit链接时,后台自动调用gerrit rest api的get diff接口,从而获取到代码文件前后修改的差异,服务器后台根据差异自动判断当前选用的是区域21中的代码文件还是区域22中的代码文件,并将“local”控件211或“remote”控件221置为高亮状态。
100.例如,某一研发人员在之前选用的代码文件为区域21中的代码文件,服务器可以保存该代码文件的哈希值,从而在向客户端返回第一目标页面时,该第一目标页面中区域21中的选取控件可以置为高亮状态。
101.如果本次研发人员选择的是区域22中的选取控件,服务器通过计算该区域22中的代码文件的哈希值,将确定区域22中的代码文件的哈希值与之前保存的哈希值不同,则可确定研发人员重新选取了一个代码文件,可以将重新选取的区域22中的选取控件置为高亮状态。
102.需要说明的是,当用户点击非高亮状态的选取控件时,被点击的选取控件将变为高亮状态,代表当前选择的是该选取控件所在区域中的代码文件(即目标代码文件),与此同时,后台可以通过调用gerrit rest api的edit接口,将高亮状态的选取控件所在区域中的目标代码文件置为编辑(edit)状态,并通过gerrit get content接口从gerrit服务器上获取上述目标代码文件的文件内容,然后再调用gerrit edit change edit接口将所选用的目标代码文件的文件内容保存到gerrit服务器。由于目标代码文件在gerrit服务器上是edit状态,用户可以对该目标代码文件进行任意修改。
103.步骤306,接收服务器发送的更新后的第一目标页面并展示。
104.步骤306的执行过程可以参见上述实施例的执行过程,在此不做赘述。
105.在本公开实施例的一种可能的实现方式中,第一目标页面还可以展示有上传控件和/或取消控件,当用户选择该上传控件时,客户端可以向服务器发送针对上传控件的触发操作;其中,针对上传控件的触发操作,用于触发服务器保存更新后的目标代码文件,而当用户选择该取消控件时,客户端可以向服务器发送针对取消控件的触发操作;其中,针对取消控件的触发操作,用于触发服务器将更新后的目标代码文件的文件内容恢复为更新前的目标代码文件的文件内容。
106.作为一种示例,如图2所示,当用户选择目标代码文件并对目标代码文件进行修改后,想将该目标代码文件提交到gerrit服务器,此时,如图4所示,mitexteditor会弹出如区域41中显示的上传控件(即publish按钮)以及如区域42中显示的取消控件(即delete按钮)。当用户点击该publish按钮时,后台可以调用gerrit rest api的edit publish接口,
将此次edit的所有修改(即更新后的目标代码文件)提交到gerrit服务器。而当用户决定此次修改不再需要时,则可以点击delete按钮,此时后台可以调用gerrit rest api的edit delete接口,将此次所有文件的修改全部恢复成原状。
107.作为一种应用场景,以后端使用python flask框架,前端使用jquery的浏览器端在线修改代码进行示例,属于web架构中的b/s架构,前后端交互使用的ajax(asynchronous javascript and xml,创建交互式web应用程序而无需牺牲浏览器兼容性的流行方法)技术,采用了前后端分离。
108.当研发人员在本地执行代码合并操作时,或者执行代码挑选操作时,如果确定两个代码文件存在冲突,而该研发人员又无法解决冲突时,则该研发人员可以将存在冲突的任意一个代码文件的gerrit链接提交到gerrit服务器,根据gerrit服务器上的提交历史记录自动查询该代码文件(二进制文件)的祖先修改记录(该祖先修改记录中包括另一个冲突的代码文件),由解决冲突的工程师在页面上选择一个代码文件作为最终的代码文件,该解决冲突的工程师还可以对选择的代码文件进行在线编辑或修改。
109.由此,可以实现合理利用gerrit服务器上的一些接口,如获取文件内容、编辑文件、保存文件、推送文件等,实现了二进制代码文件的选择与提交。并且,在多人协同开发模式下,无需将大量代码文件下载到本地进行修改,可以实现在线对代码文件进行修改,提高开发效率,节约开发成本。
110.需要说明的是,在软件代码领域,存在着大量需要将两个代码文件合并的场景,然而,在代码合并场景中,不同的代码文件经常会产生冲突,需要由研发人员来解决冲突。相关技术中,由研发人员下载各代码文件,并对不同的代码文件进行逐条比对,操作非常繁琐,效率较低。
111.为了解决上述问题,本公开中,可以在线比对不同代码文件,并在线解决冲突。下面结合图5,对上述过程进行详细说明。
112.图5为本公开另一实施例所提供的代码在线编辑方法的流程示意图。
113.如图5所示,在上述任一实施例的基础上,该代码在线编辑方法还可以包括以下步骤:
114.步骤501,向服务器发送代码文件查询请求,代码文件查询请求用于获取第二代码文件和第三代码文件。
115.在本公开实施例中,客户端可以向服务器发送代码文件查询请求,以从服务器查询第二代码文件和第三代码文件。
116.步骤502,接收服务器返回的第二目标页面并展示,其中,第二目标页面中展示有第二代码文件的第一文件内容和第三代码文件的第二文件内容。
117.在本公开实施例中,服务器可以响应于上述代码文件查询请求,获取第二代码文件和第三代码文件,并根据第二代码文件的第一文件内容和第三代码文件的第二文件内容,生成第二目标页面,并向客户端返回该第二目标页面,相应的,客户端在接收到该第二目标页面时,可以展示该第二目标页面。
118.步骤503,对比第二目标页面中第一文件内容和第二文件内容,以确定第一文件内容中不同于第二文件内容的第一部分,和/或,确定第二文件内容中不同于第一文件内容的第二部分。
119.在本公开实施例中,客户端可以对比第二目标页面中的第一文件内容和第二文件内容,以确定第一文件内容中不同于第二文件内容的第一部分,和/或,确定第二文件内容中不同于第一文件内容的第二部分。
120.步骤504,对第二目标页面中第一文件内容中的第一部分进行标记,和/或,对第二目标页面中第二文件内容中的第二部分进行标记。
121.在本公开实施例中,客户端可以对第二目标页面中第一文件内容中的第一部分进行标记,和/或,对第二目标页面中第二文件内容中的第二部分进行标记。例如,第一部分和第二部分可以分别通过红绿色显示或高亮显示,以使研发人员可以快速定位存在冲突的代码内容,并解决。
122.进一步地,在对第一部分和/或第二部分进行标记后,还可以由研发人员对第一部分和/或第二部分进行修改,将修改后的第一部分和/或第二部分,与第一文件内容和第二文件内容中的相同部分进行合并,得到合并代码文件内容。
123.步骤505,向服务器发送第二操作信息,其中,第二操作信息用于触发服务器对标记后的第一部分和/或第二部分进行修改;将修改后的第一部分和/或第二部分,与第一文件内容和第二文件内容中的相同部分进行合并,得到合并代码文件内容,并利用合并代码文件内容对第二目标页面进行更新。
124.在本公开实施例中,研发人员可以根据经验,对第一部分和/或第二部分进行修改,以解决冲突的代码内容。具体地,客户端在监测到用户触发的第二操作信息后,可以向服务器发送该第二操作信息,相应的,服务器在接收到该第二操作信息后,可以响应于该第二操作信息,对标记后的第一部分和/或第二部分进行修改,并将修改后的第一部分和/或第二部分,与第一文件内容和第二文件内容中的相同部分进行合并,得到合并代码文件内容,并利用合并代码文件内容对第二目标页面进行更新。
125.步骤506,接收服务器发送的更新后的第二目标页面并展示。
126.在本公开实施例中,服务器对第二目标页面进行更新后,可以向客户端发送更新后的第二目标页面,相应的,客户端可以接收服务器发送的更新后的第二目标页面,并展示该更新后的第二目标页面。
127.在本公开实施例的一种可能的实现方式中,服务器还可以对合并代码文件内容进行保存。
128.在本公开实施例的一种可能的实现方式中,为了便于研发人员查看各代码文件内容,更新后的第二目标页面可以包括第一区域和第二区域,第一文件内容和第二文件内容可以展示在第一区域中,合并代码文件内容可以展示在第二区域中。
129.作为一种示例,第二目标页面可以如图6所示,该第二目标页面可以分为区域61和区域62,区域61中展示了第一文件内容和第二文件内容,区域62展示了合并代码文件内容。区域61中可以自动对比第一文件内容和第二文件内容的差异,上述差异可以高亮为红绿色显示,使得研发人员可以快速定位存在冲突的代码内容,并解决,区域62中的合并代码文件内容,可以由研发人员根据需求修改并且保存。
130.作为一种应用场景,以客户端为编辑器客户端进行示例,如图7所示,客户端可以向在线编辑器服务器发送代码文件查询请求,以请求代码文件内容,在线编辑器服务器可以从代码服务器请求下载代码文件并缓存,代码服务器可以向在线编辑服务器返回代码文
件的文件内容以及相关信息,在线编辑器服务器根据文件内容生成第二目标页面,该第二目标页面上展示有代码文件内容,相应的,客户端可以展示第二目标页面。在研发人员修改第二目标页面中的文件内容后,可以选择是否保存,若选择保存,则客户端可以通过在线编辑器服务器,将修改后的合并代码文件上传至代码服务器。
131.由此,研发人员可以无需下载代码文件,直接通过在线修改代码文件,可以降低研发人员的操作,提升开发效率。并且,客户端通过自动对比不同代码文件的文件内容,并标记差异之处,可以方便研发人员快速定位存在冲突的代码内容并解决,进一步提升开发效率。
132.需要说明的是,相关技术中,常规的搜索框只支持单一条件搜索,无法满足用户多功能搜索需求。如果用户具有多种搜索需求,则一般通过添加多个搜索框实现,比如,如图8所示,在购物订单页面,用户只能在指定搜索框内搜索已购买商品或订单详情,比如用户可以在区域81中的搜索框中搜索已购买商品,在区域82中的搜索框中搜索订单详情,页面设计较为冗余复杂,且不清晰,并且用户操作也极为不便。
133.为了解决上述问题,本公开中,可以实现在一个搜索框中,同时实现url和文件的多条件搜索。下面结合图9和图16,对上述过程进行详细说明。
134.图9为本公开另一实施例所提供的代码在线编辑方法的流程示意图。
135.如图9所示,在上述任一实施例的基础上,该代码在线编辑方法还可以包括以下步骤:
136.步骤901,获取在搜索框中输入的url信息,并向服务器发送搜索请求,其中,搜索请求中包括url信息,用于确定搜索文件树的信息。
137.在本公开实施例中,客户端可以获取用户在搜索框中输入的url(uniform resource locator,统一资源定位符)信息,并向服务器发送搜索请求,其中,搜索请求中可以包括上述url信息,相应的,服务器在接收到上述搜索请求后,可以根据搜索请求中的url信息,用于确定搜索文件树的信息,即获取与搜索请求中的url信息匹配的搜索文件树的信息。
138.步骤902,接收服务器返回的搜索文件树的信息。
139.步骤903,根据搜索文件树的信息进行渲染,得到搜索文件树的展示内容。
140.在本公开实施例中,搜索文件树的展示内容,可以包括该搜索文件树中的各级文件夹和/或各级文件夹下的各文件和各子文件夹。
141.在本公开实施例中,客户端可以接收服务器返回的搜索文件树的信息,并根据搜索文件树的信息进行渲染,得到搜索文件树的展示内容。由此,可以实现在搜索框中输入url信息,以搜索得到搜索文件树的展示内容,满足用户的实际搜索需求。
142.应当理解的是,如果服务器向客户端一次返回搜索文件树中的所有文件夹和各文件夹下的各文件和各子文件夹,在搜索文件树中的文件较多的情况下,可能导致前端崩溃。
143.为了避免上述情况,服务器向客户端返回的搜索文件树的信息中可以仅包括一级文件夹的目录,从而客户端可以仅对一级文件夹的目录进行渲染,得到各一级文件夹。下面结合图10,对上述过程进行详细说明。
144.图10为本公开另一实施例所提供的代码在线编辑方法的流程示意图。
145.如图10所示,在上述图1至图5任一实施例的基础上,该代码在线编辑方法还可以
包括以下步骤:
146.步骤1001,获取在搜索框中输入的url信息,并向服务器发送搜索请求,其中,搜索请求中包括url信息,用于确定搜索文件树的信息,其中,搜索文件树的信息包括:一级文件夹的目录,一级文件夹与url信息携带的目标id匹配。
147.在本公开实施例中,客户端可以获取用户在搜索框中输入的url信息,并向服务器发送搜索请求,其中,搜索请求中可以包括上述url信息,相应的,服务器在接收到上述搜索请求后,可以对搜索请求中的url信息进行解析,以确定url信息携带的目标id,并确定与目标id匹配的一级文件夹,并确定一级文件夹的目录。
148.需要说明的是,对于用户而言,可能不知道如何查询url信息下的所有文件,因此,在本公开实施例的一种可能的实现方式中,为了便于用户获知如何查询搜索文件树,可以在客户端的显示页面,比如在搜索框中展示url信息对应的设定格式,从而用户只需根据该设定格式,输入对应的url信息即可。
149.举例而言,在开发场景下,如果研发人员想要查询服务器中保存的某一笔修改下的所有代码文件,其中,每笔修改可以通过change id标识,则用户只需根据该设定格式,输入对应的change id即可查询change id下的所有代码文件。
150.步骤1002,接收服务器返回的一级文件夹的目录。
151.步骤1003,对一级文件夹的目录进行渲染,得到各一级文件夹。
152.在本公开实施例中,客户端可以接收服务器返回的一级文件夹的目录,并对一级文件夹的目录进行渲染,得到各一级文件夹。
153.需要说明的是,在前端渲染出一级文件夹的情况下,如果用户想要获取一级文件夹中的各子文件,则可以继续加载一级文件夹下的各文件和各子文件夹。
154.在本公开实施例的第一种可能的实现方式中,可以监测用户对各一级文件夹的查询操作,响应于该查询操作,向服务器发送资源查询请求,其中,资源查询请求中包括执行查询操作的目标一级文件夹的标识,相应的,服务器在接收到该资源查询请求时,可以响应于该资源查询请求,根据目标一级文件夹的标识,查询目标一级文件夹下的各文件和各子文件夹,并向客户端返回目标一级文件夹下的各文件和各子文件夹,相应的,客户端在接收到该目标一级文件夹下的各文件和各子文件夹后,可以对目标一级文件夹下的各文件和各子文件夹进行渲染,以得到搜索文件树。
155.作为一种示例,前端渲染出一级文件夹可以如图11所示,在前端渲染出一级文件夹的情况下,如果用户想要获取一级文件夹中的各子文件,则用户每打开一个一级文件夹,前端就会访问后端,以获取并加载该一级文件夹下的各子文件和各子文件夹的数据,前端可以渲染上述数据得到搜索文件树并显示。例如,用户点击图11中的首个一级文件夹frameworks,则加载的该一级文件夹frameworks下的各文件和各子文件夹可以如图12中的区域1201所示。
156.由此,在不增加前端元素的情况下,动态地向前端返回一级文件夹中的数据,可以避免一次返回的文件数量过多,而造成前端崩溃的情况。即本公开中,利用懒加载的思想,当一些数据不使用时,无需对其进行加载,可以避免资源的浪费,当需要使用这些数据时,再去后端获取数据加载到前端界面进行显示。
157.在本公开实施例的第二种可能的实现方式中,客户端还可以周期性地从服务器获
取一级文件夹中的部分文件和/或部分子文件夹,并对部分文件和/或部分子文件夹进行渲染,以得到搜索文件树。
158.例如,上述第一种可能的实现方式中的资源查询请求可以标记为第一资源查询请求,客户端可以周期性地向服务器发送第二资源查询请求,其中,该第二资源查询请求中可以包括某一个一级文件夹的标识,服务器在接收到该第二资源查询请求后,可以响应于该第二资源查询请求,根据上述一级文件夹的标识,查询该一级文件夹中的部分文件和/或部分子文件夹,并向客户端返回该一级文件夹中的部分文件和/或部分子文件夹,相应的,客户端在接收到该一级文件夹中的部分文件和/或部分子文件夹后,可以对该一级文件夹中的部分文件和/或部分子文件夹进行渲染,以得到搜索文件树。
159.作为一种示例,可以先加载一级文件夹,再采集定时器定时的方式,每隔一段时间加载部分文件夹,以避免一次返回的文件数量过多,而造成前端崩溃的情况。
160.本公开实施例的代码在线编辑方法,通过服务器向客户端返回的搜索文件树的信息中仅包括一级文件夹的目录,可以避免服务器一次向客户端返回的数据量较大而造成前端崩溃的情况。
161.在本公开实施例的一种可能的实现方式中,为了降低用户操作,改善用户的使用体验,服务器也可以将与url信息携带的目标id匹配的所有文件夹和文件一次返回至客户端,从而客户端可以直接对上述所有文件夹和文件进行渲染,以得到搜索文件树。下面结合图13,对上述过程进行详细说明。
162.图13为本公开另一实施例所提供的代码在线编辑方法的流程示意图。
163.如图13所示,在上述图1至图5任一实施例的基础上,该代码在线编辑方法还可以包括以下步骤:
164.步骤1301,获取在搜索框中输入的url信息,并向服务器发送搜索请求,其中,搜索请求中包括url信息,用于确定搜索文件树的信息;其中,搜索文件树的信息包括:与url信息携带的目标id匹配的各文件夹及各文件夹下的各文件和各子文件夹。
165.在本公开实施例中,客户端可以获取用户在搜索框中输入的url信息,并向服务器发送搜索请求,其中,搜索请求中可以包括上述url信息,相应的,服务器在接收到上述搜索请求后,可以对搜索请求中的url信息进行解析,以确定url信息携带的目标id,并确定与目标id匹配的各文件夹及各文件夹下的各文件和各子文件夹。
166.步骤1302,接收服务器返回的与url信息携带的目标id匹配的各文件夹及各文件夹下的各文件和各子文件夹。
167.步骤1303,对与目标id匹配的各文件夹及各文件夹下的各文件和各子文件夹进行渲染,得到搜索文件树。
168.在本公开实施例中,客户端可以接收服务器返回的与url信息携带的目标id匹配的各文件夹及各文件夹下的各文件和各子文件夹,并对与目标id匹配的各文件夹及各文件夹下的各文件和各子文件夹进行渲染,得到搜索文件树。
169.作为一种示例,在开发场景下,如果研发人员想要查询gerrit服务器中保存的某一笔修改下的所有代码文件,比如搜索gerrit服务器上的某个change id下的所有代码文件,例如change id为1212034,则研发人员可以在如图14所示的搜索框中输入设定格式的url(图14中记为change url),该url的最后为change id。
170.搜索完成时,如图15所示,可以在客户端的显示界面的左侧生成搜索文件树,展示搜索内容,当用户双击展开对应的change id(搜索文件树的最上方显示的1212034),显示该change id下的所有文件列表,点击左侧搜索文件树中的某个文件时,可以在右侧加载该文件的具体文件内容。
171.本公开实施例的代码在线编辑方法,通过服务器将与url信息携带的目标id匹配的所有文件夹和文件一次返回至客户端,用户可以直接查看与目标id匹配的所有文件,而无需继续从服务器获取其他子文件夹和子文件,可以降低用户在查看搜索文件树时的等待时长。
172.在本公开实施例的一种可能的实现方式中,用户还可以在搜索框中输入搜索关键词,来查询搜索文件树中的文件。下面结合图16,对上述过程进行详细说明。
173.图16为本公开另一实施例所提供的代码在线编辑方法的流程示意图。
174.如图16所示,在上述任一实施例的基础上,该代码在线编辑方法还可以包括以下步骤:
175.步骤1601,获取在搜索框中输入的搜索关键词。
176.在本公开实施例中,当用户想要查询搜索文件树中的某个文件时,可以在搜索框中输入搜索关键词,该搜索关键词例如可以为文件名。
177.步骤1602,将搜索关键词与搜索文件树中的各文件的文件名进行匹配,以确定文件名与搜索关键词匹配的目标文件。
178.在本公开实施例中,可以将搜索关键词与搜索文件树中的各文件的文件名进行匹配,并判断是否存在文件名与搜索关键词匹配的目标文件。在搜索文件树中未存在与搜索关键词匹配的目标文件的情况下,可以隐藏搜索文件树中的各文件夹和各文件,例如,可以仅展示图15中的change id。而在搜索文件树中存在与搜索关键词匹配的目标文件的情况下,可以执行步骤1603。
179.步骤1603,对目标文件进行标记。
180.在本公开实施例中,在搜索文件树中存在与搜索关键词匹配的目标文件的情况下,可以对目标文件进行标记,以使用户快速定位所需文件。
181.作为一种示例,如图17所示,用户可以在搜索框中输入“ma”,客户端可以将“ma”与change id下的所有文件的文件名进行匹配,匹配的目标文件可以高亮显示。
182.在本公开实施例的一种可能的实现方式中,用户还可以根据自身需求,查看某个目标文件的文件内容。具体地,客户端可以监测对标记后的目标文件的触发操作,并响应于对标记后的目标文件的触发操作,在显示界面中展示目标文件对应的文件内容。
183.作为一种可能的实现方式,客户端的显示界面可以包括第一可视区域和第二可视区域,搜索文件树可以展示在第一可视区域中,目标文件对应的文件内容可以展示在第二可视区域中。
184.作为一种示例,如图18所示,第一可视区域可以为区域1801,第二可视区域可以为1802,用户可以点击区域1801中的目标文件的文件名,在区域1802中显示目标文件的文件内容,且搜索框中可以展示有目标文件的文件名(即manifest)。
185.综上,搜索框可同时实现url和文件的多条件搜索,当用户在搜索框中输入url时,后端可以访问gerrit接口获取数据,并将数据返回给前端进行渲染,展示搜索文件树。当用
户搜索文件时,可以根据用户在搜索框中输入的搜索关键词,从搜索文件树中获取与搜索关键词匹配的文件,并高亮显示匹配的文件,在没有匹配到文件的情况下,可以隐藏搜索文件树中的全部文件。由此,可以实现在一个搜索框内搜索带目录结构类型的url链接,同时支持搜索关键词,以筛选目录结构下的文件并高亮显示,即在不增加搜索框数量的前提下,实现一个搜索框同时满足不同条件的搜索,简洁方便,提高用户满意度。
186.上述为客户端执行的各方法实施例,本公开还提供了由服务器执行的方法实施例。
187.图19为本公开另一实施例所提供的代码在线编辑方法的流程示意图。
188.如图19所示,该代码在线编辑方法可以由服务器执行,可以包括以下步骤:
189.步骤1901,接收客户端发送的第一代码文件的链接。
190.在本公开实施例中,第一代码文件的链接可以携带第一代码文件的文件名称、文件路径等信息。比如,该链接可以为gerrit链接。
191.步骤1902,根据链接,确定第一代码文件的标识,并查询标识对应的各候选代码文件。
192.在本公开实施例中,客户端可以向服务器发送第一代码文件的链接,相应的,服务器在接收到该链接后,可以根据该链接确定第一代码文件的标识,并查询第一代码文件的标识对应的各候选代码文件。
193.举例而言,以第一代码文件的标识为第一代码文件的文件名称进行示例性说明,同一代码文件对应的各次历史修改记录(或称为提交历史记录或祖先修改记录)对应的文件名称可以相同,可以获取同一文件名称的各代码文件,作为候选代码文件。
194.步骤1903,根据各候选代码文件的文件内容,生成第一目标页面。
195.在本公开实施例中,服务器可以根据各候选代码文件的文件内容生成第一目标页面。
196.作为一种示例,对于某一代码文件,假设服务器上仅保存该代码文件对应的两个历史修改记录,则服务器生成的第一目标页面可以如图2所示,区域21和区域22中分别显示一个代码文件的文件内容。
197.步骤1904,向客户端返回第一目标页面。
198.在本公开实施例中,服务器在生成第一目标页面后,可以向客户端返回该第一目标页面,相应的,客户端在接收到该第一目标页面后,可以展示该第一目标页面。
199.步骤1905,接收客户端发送的第一操作信息,响应于第一操作信息,从各候选代码文件中确定目标代码文件,并对目标代码文件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新。
200.可以理解的是,第一目标页面上展示的为同一代码文件对应的各次历史修改记录(即每个候选代码文件为一次历史修改记录),用户可以根据需求从多个候选代码文件中选择一个代码文件作为最终所需的代码文件,本公开中记为目标代码文件,并根据自身需求,确定是否对目标代码文件进行更新。
201.在本公开实施例中,客户端在展示该第一目标页面后,若监测到用户触发了第一操作信息,则可以向服务器发送该第一操作信息,相应的,服务器在接收到该第一操作信息后,可以响应于该第一操作信息,从各候选代码文件中确定目标代码文件,并对目标代码文
件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新。
202.步骤1906,向客户端发送更新后的第一目标页面。
203.在本公开实施例中,服务器对第一目标页面进行更新后,可以向客户端发送更新后的第一目标页面,相应的,客户端可以接收服务器发送的更新后的第一目标页面,并展示该更新后的第一目标页面。由此,可以实现在线更新代码文件内容,可以降低研发人员的工作量,提升开发效率。
204.在本公开实施例的一种可能的实现方式中,第一目标页面可以包括多个区域,每个区域用于展示一个候选代码文件的文件内容,且每个区域展示有选取控件;第一操作信息中包含目标区域的标识,目标区域是监测针对多个区域所展示的选取控件的触发操作,根据多个区域中执行触发操作的区域确定的。服务器可以根据目标区域的标识,确定目标区域中展示的候选代码文件的文件内容;根据目标区域中展示的候选代码文件的文件内容,确定目标代码文件。
205.在本公开实施例的一种可能的实现方式中,服务器还可以响应于第一操作信息,将目标区域中的选取控件置为高亮状态。
206.在本公开实施例的一种可能的实现方式中,第一目标页面还可以展示有上传控件和/或取消控件,服务器还可以接收客户端发送的针对上传控件的触发操作,并响应于针对上传控件的触发操作,保存更新后的目标代码文件;或者,接收客户端发送的针对取消控件的触发操作,并响应于针对取消控件的触发操作,将更新后的目标代码文件的文件内容恢复为更新前的目标代码文件的文件内容。
207.在本公开实施例的一种可能的实现方式中,服务器还可以接收客户端发送的代码文件查询请求,并响应于代码文件查询请求,获取第二代码文件和第三代码文件;根据第二代码文件的第一文件内容和第三代码文件的第二文件内容,生成第二目标页面;向客户端返回第二目标页面;其中,第二目标页面用于展示,并对比第一文件内容和第二文件内容,以确定第一文件内容中不同于第二文件内容的第一部分,和/或,确定第二文件内容中不同于第一文件内容的第二部分,并对第一文件内容中的第一部分进行标记,和/或,对第二文件内容中的第二部分进行标记。
208.在本公开实施例的一种可能的实现方式中,服务器还可以接收客户端发送的第二操作信息,并响应于第二操作信息,对标记后的第一部分和/或第二部分进行修改;将修改后的第一部分和/或第二部分,与第一文件内容和第二文件内容中的相同部分进行合并,得到合并代码文件内容;利用合并代码文件内容对第二目标页面进行更新;向客户端发送的更新后的第二目标页面。
209.在本公开实施例的一种可能的实现方式中,服务器还可以保存合并代码文件内容。
210.在本公开实施例的一种可能的实现方式中,更新后的第二目标页面包括第一区域和第二区域,第一文件内容和第二文件内容展示在第一区域中,合并代码文件内容展示在第二区域中。
211.在本公开实施例的一种可能的实现方式中,服务器还可以接收客户端发送的搜索请求信息,其中,搜索请求信息中包括在搜索框中输入的url信息;响应于搜索请求信息,根
据url信息,确定搜索文件树的信息;向客户端返回搜索文件树的信息,其中,搜索文件树的信息用于渲染得到搜索文件树的展示内容。
212.在本公开实施例的一种可能的实现方式中,服务器可以对url信息进行解析,以确定url信息携带的目标id;确定与目标id匹配的一级文件夹;将一级文件夹的目录,确定为搜索文件树的信息。
213.在本公开实施例的一种可能的实现方式中,服务器还可以接收客户端发送的第一资源查询请求,其中,第一资源查询请求中包括执行查询操作的目标一级文件夹的标识;根据目标一级文件夹的标识,查询目标一级文件夹下的各文件和各子文件夹;向客户端发送目标一级文件夹下的各文件和各子文件夹,其中,目标一级文件夹下的各文件和各子文件夹,用于渲染得到搜索文件树。
214.在本公开实施例的一种可能的实现方式中,服务器还可以获取客户端周期性发送的第二资源查询请求,其中,第二资源查询请求中包括一级文件夹的标识;响应于第二资源查询请求,根据一级文件夹的标识,查询一级文件夹中的部分文件和/或部分子文件夹;向客户端返回一级文件夹中的部分文件和/或部分子文件夹,其中,部分文件和/或部分子文件夹用于渲染得到搜索文件树。
215.在本公开实施例的一种可能的实现方式中,服务器可以对url信息进行解析,以确定url信息携带的目标id;确定与目标id匹配的各文件夹及各文件夹下的各文件和各子文件夹;将匹配的各文件夹及各文件夹下的各文件和各子文件夹,确定为搜索文件树的信息。
216.需要说明的是,前述图1至图16对客户端侧执行的方法实施例的解释说明,也适用于对服务器侧执行的方法实施例,其实现原理类似,此处不做赘述。
217.本公开实施例的代码在线编辑方法,通过根据客户端发送的第一代码文件的链接,确定第一代码文件的标识,并查询标识对应的各候选代码文件;根据各候选代码文件的文件内容,生成第一目标页面;向客户端返回第一目标页面;接收客户端发送的第一操作信息,响应于第一操作信息,从各候选代码文件中确定目标代码文件,并对目标代码文件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新;向客户端发送更新后的第一目标页面。由此,可以实现在线更新代码文件内容,可以降低研发人员的工作量,提升开发效率。
218.与上述图1至图16实施例提供的代码在线编辑方法相对应,本公开还提供一种代码在线编辑装置,由于本公开实施例提供的代码在线编辑装置与上述图1至图16实施例提供的代码在线编辑方法相对应,因此在代码在线编辑方法的实施方式也适用于本公开实施例提供的代码在线编辑装置,在本公开实施例中不再详细描述。
219.图20为本公开一实施例所提供的代码在线编辑装置的结构示意图。
220.如图20所示,该代码在线编辑装置2000,应用于客户端,可以包括:发送模块2001和接收模块2002。
221.其中,发送模块2001,用于向服务器发送第一代码文件的链接;其中,链接用于确定第一代码文件的标识,并查询标识对应的各候选代码文件,根据各候选代码文件的文件内容生成第一目标页面。
222.接收模块2002,用于接收服务器返回的第一目标页面并展示。
223.发送模块2001,还用于向服务器发送第一操作信息,其中,第一操作信息用于从各
候选代码文件中确定目标代码文件,并对目标代码文件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新。
224.接收模块2002,还用于接收服务器发送的更新后的第一目标页面并展示。
225.在本公开实施例的一种可能的实现方式中,第一目标页面包括多个区域,每个区域用于展示一个候选代码文件的文件内容,且每个区域展示有选取控件;该代码在线编辑装置2000还可以包括:
226.第一监测模块,用于对多个区域所展示的选取控件,监测触发操作。
227.生成模块,用于根据多个区域中执行触发操作的目标区域,生成第一操作信息,其中,第一操作信息包含目标区域的标识;目标区域的标识用于根据目标区域中展示的候选代码文件的文件内容,确定目标代码文件。
228.在本公开实施例的一种可能的实现方式中,第一操作信息还用于将目标区域中的选取控件置为高亮状态。
229.在本公开实施例的一种可能的实现方式中,第一目标页面还展示有上传控件和/或取消控件,发送模块2001,还用于:向服务器发送针对上传控件的触发操作;其中,针对上传控件的触发操作,用于触发服务器保存更新后的目标代码文件;或者,向服务器发送针对取消控件的触发操作;其中,针对取消控件的触发操作,用于触发服务器将更新后的目标代码文件的文件内容恢复为更新前的目标代码文件的文件内容。
230.在本公开实施例的一种可能的实现方式中,发送模块2001,还用于向服务器发送代码文件查询请求,代码文件查询请求用于获取第二代码文件和第三代码文件。
231.接收模块2002,还用于接收服务器返回的第二目标页面并展示,其中,第二目标页面中展示有第二代码文件的第一文件内容和第三代码文件的第二文件内容。
232.该代码在线编辑装置2000,还可以包括:
233.确定模块,用于对比第二目标页面中第一文件内容和第二文件内容,以确定第一文件内容中不同于第二文件内容的第一部分,和/或,确定第二文件内容中不同于第一文件内容的第二部分。
234.第一标记模块,用于对第二目标页面中第一文件内容中的第一部分进行标记,和/或,对第二目标页面中第二文件内容中的第二部分进行标记。
235.在本公开实施例的一种可能的实现方式中,发送模块2001,还用于向服务器发送第二操作信息,其中,第二操作信息用于触发服务器对标记后的第一部分和/或第二部分进行修改;将修改后的第一部分和/或第二部分,与第一文件内容和第二文件内容中的相同部分进行合并,得到合并代码文件内容,并利用合并代码文件内容对第二目标页面进行更新。
236.接收模块2002,还用于接收服务器发送的更新后的第二目标页面并展示。
237.在本公开实施例的一种可能的实现方式中,更新后的第二目标页面包括第一区域和第二区域,第一文件内容和第二文件内容展示在第一区域中,合并代码文件内容展示在第二区域中。
238.在本公开实施例的一种可能的实现方式中,该代码在线编辑装置2000还可以包括:
239.获取模块,用于获取在搜索框中输入的url信息。
240.发送模块2001,还用于向服务器发送搜索请求,其中,搜索请求中包括url信息,用
于确定搜索文件树的信息。
241.接收模块2002,还用于接收服务器返回的搜索文件树的信息。
242.第一渲染模块,用于根据搜索文件树的信息进行渲染,得到搜索文件树的展示内容。
243.在本公开实施例的一种可能的实现方式中,搜索文件树的信息包括:一级文件夹的目录,其中,一级文件夹与url信息携带的目标id匹配;第一渲染模块,具体用于:对一级文件夹的目录进行渲染,得到各一级文件夹。
244.在本公开实施例的一种可能的实现方式中,该代码在线编辑装置2000还可以包括:
245.第二监测模块,用于监测对各一级文件夹的查询操作。
246.发送模块2001,还用于响应于查询操作,向服务器发送资源查询请求;其中,资源查询请求中包括执行查询操作的目标一级文件夹的标识,用于查询目标一级文件夹下的各文件和各子文件夹。
247.接收模块2002,还用于接收服务器返回的目标一级文件夹下的各文件和各子文件夹。
248.第二渲染模块,用于对目标一级文件夹下的各文件和各子文件夹进行渲染,以得到搜索文件树。
249.在本公开实施例的一种可能的实现方式中,获取模块,还用于周期性地从服务器获取一级文件夹中的部分文件和/或部分子文件夹。
250.该代码在线编辑装置2000,还可以包括:
251.第三渲染模块,用于对部分文件和/或部分子文件夹进行渲染,以得到搜索文件树。
252.在本公开实施例的一种可能的实现方式中,搜索文件树的信息包括:与url信息携带的目标id匹配的各文件夹及各文件夹下的各文件和各子文件夹;第一渲染模块,具体用于:对与目标id匹配的各文件夹及各文件夹下的各文件和各子文件夹进行渲染,得到搜索文件树。
253.在本公开实施例的一种可能的实现方式中,获取模块,还用于获取在搜索框中输入的搜索关键词。
254.该代码在线编辑装置2000,还可以包括:
255.匹配模块,用于将搜索关键词与搜索文件树中的各文件的文件名进行匹配,以确定文件名与搜索关键词匹配的目标文件。
256.第二标记模块,用于对目标文件进行标记。
257.在本公开实施例的一种可能的实现方式中,该代码在线编辑装置2000还可以包括:
258.隐藏模块,用于响应于搜索文件树中未存在与搜索关键词匹配的目标文件,则隐藏搜索文件树中的各文件夹和各文件。
259.在本公开实施例的一种可能的实现方式中,该代码在线编辑装置2000还可以包括:
260.第三监测模块,用于监测对标记后的目标文件的触发操作。
261.第一展示模块,用于响应于对标记后的目标文件的触发操作,在界面中展示目标文件对应的文件内容。
262.在本公开实施例的一种可能的实现方式中,界面包括第一可视区域和第二可视区域,搜索文件树展示在第一可视区域中,目标文件对应的文件内容展示在第二可视区域中。
263.在本公开实施例的一种可能的实现方式中,该代码在线编辑装置2000还可以包括:
264.第二展示模块,用于展示url信息对应的设定格式。
265.本公开实施例的代码在线编辑装置,通过客户端向服务器发送第一代码文件的链接;其中,链接用于确定第一代码文件的标识,并查询标识对应的各候选代码文件,根据各候选代码文件的文件内容生成第一目标页面;接收服务器返回的第一目标页面并展示;向服务器发送第一操作信息,其中,第一操作信息用于从各候选代码文件中确定目标代码文件,并对目标代码文件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新;接收服务器发送的更新后的第一目标页面并展示。由此,可以实现在线更新代码文件内容,可以降低研发人员的工作量,提升开发效率。
266.与上述图19实施例提供的代码在线编辑方法相对应,本公开还提供一种代码在线编辑装置,由于本公开实施例提供的代码在线编辑装置与上述图19实施例提供的代码在线编辑方法相对应,因此在代码在线编辑方法的实施方式也适用于本公开实施例提供的代码在线编辑装置,在本公开实施例中不再详细描述。
267.图21为本公开另一实施例所提供的代码在线编辑装置的结构示意图。
268.如图21所示,该代码在线编辑装置2100,应用于服务器,可以包括:接收模块2101、查询模块2102、生成模块2103、发送模块2104以及确定模块2105。
269.其中,接收模块2101,用于接收客户端发送的第一代码文件的链接。
270.查询模块2102,用于根据链接,确定第一代码文件的标识,并查询标识对应的各候选代码文件。
271.生成模块2103,用于根据各候选代码文件的文件内容,生成第一目标页面。
272.发送模块2104,用于向客户端返回第一目标页面。
273.接收模块2101,还用于接收客户端发送的第一操作信息。
274.确定模块2105,用于响应于第一操作信息,从各候选代码文件中确定目标代码文件,并对目标代码文件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新。
275.发送模块2104,还用于向客户端发送更新后的第一目标页面。
276.在本公开实施例的一种可能的实现方式中,第一目标页面包括多个区域,每个区域用于展示一个候选代码文件的文件内容,且每个区域展示有选取控件;第一操作信息中包含目标区域的标识,目标区域是对多个区域所展示的选取控件,监测触发操作,根据多个区域中执行触发操作的区域确定的。
277.确定模块2105,具体用于:根据目标区域的标识,确定目标区域中展示的候选代码文件的文件内容;根据目标区域中展示的候选代码文件的文件内容,确定目标代码文件。
278.在本公开实施例的一种可能的实现方式中,该代码在线编辑装置2100还可以包括:
279.设置模块,用于响应于第一操作信息,将目标区域中的选取控件置为高亮状态。
280.在本公开实施例的一种可能的实现方式中,第一目标页面还展示有上传控件和/或取消控件,接收模块2101,还用于:接收客户端发送的针对上传控件的触发操作,并响应于针对上传控件的触发操作,保存更新后的目标代码文件;或者,接收客户端发送的针对取消控件的触发操作,并响应于针对取消控件的触发操作,将更新后的目标代码文件的文件内容恢复为更新前的目标代码文件的文件内容。
281.在本公开实施例的一种可能的实现方式中,接收模块2101,还用于接收客户端发送的代码文件查询请求,并响应于代码文件查询请求,获取第二代码文件和第三代码文件。
282.生成模块2103,还用于根据第二代码文件的第一文件内容和第三代码文件的第二文件内容,生成第二目标页面。
283.发送模块2104,还用于向客户端返回第二目标页面;其中,第二目标页面用于展示,并对比第一文件内容和第二文件内容,以确定第一文件内容中不同于第二文件内容的第一部分,和/或,确定第二文件内容中不同于第一文件内容的第二部分,并对第一文件内容中的第一部分进行标记,和/或,对第二文件内容中的第二部分进行标记。
284.在本公开实施例的一种可能的实现方式中,接收模块2101,还用于接收客户端发送的第二操作信息,并响应于第二操作信息,对标记后的第一部分和/或第二部分进行修改。
285.该代码在线编辑装置2100,还可以包括:
286.合并模块,用于将修改后的第一部分和/或第二部分,与第一文件内容和第二文件内容中的相同部分进行合并,得到合并代码文件内容。
287.更新模块,用于利用合并代码文件内容对第二目标页面进行更新。
288.发送模块2104,还用于向客户端发送的更新后的第二目标页面。
289.在本公开实施例的一种可能的实现方式中,该代码在线编辑装置2100还可以包括:
290.保存模块,用于保存合并代码文件内容。
291.在本公开实施例的一种可能的实现方式中,更新后的第二目标页面包括第一区域和第二区域,第一文件内容和第二文件内容展示在第一区域中,合并代码文件内容展示在第二区域中。
292.在本公开实施例的一种可能的实现方式中,接收模块2101,还用于接收客户端发送的搜索请求信息,其中,搜索请求信息中包括在搜索框中输入的url信息。
293.确定模块2105,还用于响应于搜索请求信息,根据url信息,确定搜索文件树的信息。
294.发送模块2104,还用于向客户端返回搜索文件树的信息,其中,搜索文件树的信息用于渲染得到搜索文件树的展示内容。
295.在本公开实施例的一种可能的实现方式中,确定模块2105,具体用于:对url信息进行解析,以确定url信息携带的目标id;确定与目标id匹配的一级文件夹;将一级文件夹的目录,确定为搜索文件树的信息。
296.在本公开实施例的一种可能的实现方式中,接收模块2101,还用于接收客户端发送的第一资源查询请求,其中,第一资源查询请求中包括执行查询操作的目标一级文件夹
的标识。
297.查询模块2102,还用于根据目标一级文件夹的标识,查询目标一级文件夹下的各文件和各子文件夹。
298.发送模块2104,还用于向客户端发送目标一级文件夹下的各文件和各子文件夹,其中,目标一级文件夹下的各文件和各子文件夹,用于渲染得到搜索文件树。
299.在本公开实施例的一种可能的实现方式中,接收模块2101,还用于获取客户端周期性发送的第二资源查询请求,其中,第二资源查询请求中包括一级文件夹的标识。
300.查询模块2102,还用于响应于第二资源查询请求,根据一级文件夹的标识,查询一级文件夹中的部分文件和/或部分子文件夹。
301.发送模块2104,还用于向客户端返回一级文件夹中的部分文件和/或部分子文件夹,其中,部分文件和/或部分子文件夹用于渲染得到搜索文件树。
302.在本公开实施例的一种可能的实现方式中,确定模块2105,具体用于:对url信息进行解析,以确定url信息携带的目标id;确定与目标id匹配的各文件夹及各文件夹下的各文件和各子文件夹;将匹配的各文件夹及各文件夹下的各文件和各子文件夹,确定为搜索文件树的信息。
303.本公开实施例的代码在线编辑装置,通过服务器根据客户端发送的第一代码文件的链接,确定第一代码文件的标识,并查询标识对应的各候选代码文件;根据各候选代码文件的文件内容,生成第一目标页面;向客户端返回第一目标页面;接收客户端发送的第一操作信息,响应于第一操作信息,从各候选代码文件中确定目标代码文件,并对目标代码文件的文件内容进行编辑,以利用编辑后的目标代码文件的文件内容对第一目标页面进行更新;向客户端发送更新后的第一目标页面。由此,可以实现在线更新代码文件内容,可以降低研发人员的工作量,提升开发效率。
304.为了实现上述实施例,本公开还提出一种客户端,包括:处理器;用于存储所述处理器的可执行指令的存储器;其中,所述处理器被配置为调用并执行所述存储器存储的可执行指令,以实现如本公开前述图1至图16任一实施例提出的代码在线编辑方法。
305.为了实现上述实施例,本公开还提出一种服务器,包括:处理器;用于存储所述处理器的可执行指令的存储器;其中,所述处理器被配置为调用并执行所述存储器存储的可执行指令,以实现如本公开前述图19实施例提出的代码在线编辑方法。
306.为了实现上述实施例,本公开还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本公开任一实施例提出的代码在线编辑方法。
307.为了实现上述实施例,本公开还提出一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,执行如本公开任一实施例提出的代码在线编辑方法。
308.图22示出了适于用来实现本公开实施方式的示例性电子设备的框图。该电子设备可以包括上述任一实施例的客户端或服务器。图22显示的电子设备22仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
309.如图22所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
310.总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industry standard architecture;以下简称:isa)总线,微通道体系结构(micro channel architecture;以下简称:mac)总线,增强型isa总线、视频电子标准协会(video electronics standards association;以下简称:vesa)局域总线以及外围组件互连(peripheral component interconnection;以下简称:pci)总线。
311.电子设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
312.存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(random access memory;以下简称:ram)30和/或高速缓存存储器32。电子设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图22未显示,通常称为“硬盘驱动器”)。尽管图22中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(compact disc read only memory;以下简称:cd-rom)、数字多功能只读光盘(digital video disc read only memory;以下简称:dvd-rom)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施例的功能。
313.具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本公开所描述的实施例中的功能和/或方法。
314.电子设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该电子设备12交互的设备通信,和/或与使得该电子设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,电子设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(local area network;以下简称:lan),广域网(wide area network;以下简称:wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与电子设备12的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
315.处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的方法。
316.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任
一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
317.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
318.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本公开的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本公开的实施例所属技术领域的技术人员所理解。
319.在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
320.应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
321.本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
322.此外,在本公开各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
323.上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描
述了本公开的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本公开的限制,本领域的普通技术人员在本公开的范围内可以对上述实施例进行变化、修改、替换和变型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1