本技術涉及計算機,具體涉及一種前端鉤子動態注入方法、裝置、電子設備和可讀存儲介質。
背景技術:
1、當前,前端架構中前端各服務之間共用同一套基礎功能,在前端基礎服務之上其他各個前端業務服務又需要個性化定制。相關技術中的實踐模式傾向于在基礎服務中直接嵌入過多的業務特殊邏輯,這不僅對基礎服務的代碼整潔性和可維護性造成了影響,還導致了各業務服務間不必要的代碼重復和復雜的條件判斷邏輯。上述直接嵌入邏輯方式的代碼混亂限制了基礎功能與業務特殊處理邏輯的清晰分離與統一管理,迫使開發者不斷在基礎服務中增加業務專屬屬性,導致各個前端業務服務之間的邏輯互斥問題也日益凸顯,降低了開發效率。
技術實現思路
1、本技術提供了一種前端鉤子動態注入方法、裝置、電子設備和可讀存儲介質,能夠建立前端基礎服務與各個業務服務的聯系,提高開發效率。
2、本技術實施例的技術方案如下:
3、第一方面,本技術實施例提供了一種前端鉤子動態注入方法,應用于前端服務器,所述方法包括:
4、在前端基礎服務中配置入口文件,所述入口文件包括注入的目標對象信息;
5、獲取前端業務服務配置的訪問路徑;
6、根據所述訪問路徑加載對應的前端業務服務,所述前端業務服務包括鉤子函數,所述鉤子函數用于響應跨所述前端基礎服務的業務信息;
7、將預設的鉤子動態鏈接庫注入所述前端基礎服務中,并啟動所述鉤子動態鏈接庫,以將所述鉤子函數注入所述目標對象信息對應的所述前端基礎服務中;
8、接收前端業務提交請求,將所述前端基礎服務和所述前端業務服務提交。
9、在上述技術方案中,首先在前端基礎服務中配置入口文件,入口文件包括注入的目標對象信息,通過配置入口文件指示目標對象信息,提供了其他服務添加位置,能夠避免邏輯互斥問題;獲取前端業務服務配置的訪問路徑,以便后續獲取前端業務服務;根據訪問路徑加載對應的前端業務服務,前端業務服務包括鉤子函數,鉤子函數用于響應跨前端基礎服務的業務信息,通過鉤子函數定義前端業務服務,以便能夠嵌入至前端基礎服務中;將預設的鉤子動態鏈接庫注入前端基礎服務中,并啟動鉤子動態鏈接庫,以將鉤子函數注入目標對象信息對應的前端基礎服務中,通過鉤子動態鏈接庫將前端業務服務嵌入前端基礎服務中,使得各個前端業務服務清晰分離,不僅能夠統一管理,還能夠減少代碼的冗余和邏輯混亂,從而提高開發效率;接收前端業務提交請求,將前端基礎服務和前端業務服務提交,以便進行前端應用。
10、在本技術一些實施例中,根據所述訪問路徑加載對應的前端業務服務,所述前端業務服務包括鉤子函數,所述鉤子函數用于響應跨所述前端基礎服務的業務信息,包括:
11、利用預設的動態導入和可選鏈式操作符加載所述訪問路徑對應的前端業務服務;
12、將所述鉤子函數存儲至所述前端基礎服務的對象中,并通過預設的訪問接口讀取所述前端業務服務。
13、在上述技術方案中,在加載前端業務服務的過程中,預設的動態導入表示在程序運行時根據需要動態地加載模塊或資源。利用動態導入加載前端業務服務,并在此過程中,利用可選鏈式操作符加載訪問路徑對應的前端業務服務能夠對訪問路徑進行驗證,保證獲取前端業務服務的安全性。將加載的前端業務服務中的鉤子函數存儲至前端基礎服務創建的對象中,并通過預設的訪問接口讀取前端業務服務,以便后續通過動態鏈接庫建立前端基礎業務與前端業務服務之間的聯系。
14、在本技術一些實施例中,所述利用預設的動態導入和可選鏈式操作符加載所述訪問路徑對應的前端業務服務,包括:
15、利用所述可選鏈式操作符對所述訪問路徑進行驗證,在所述可選鏈式操作符的返回值為正常的情況下,利用預設的動態導入加載所述訪問路徑對應的前端業務服務。
16、在上述技術方案中,可選鏈式操作符能夠安全地訪問深層嵌套對象的屬性或方法,而不需要顯式地驗證每一層是否存在。通過可選鏈式操作符對訪問路徑進行驗證,并返回返回值,,有利于后續根據返回值進行業務判斷。在可選鏈式操作符的返回值為正常的情況下,表明該訪問路徑存在且正確,能夠從訪問路徑獲取到相應的前端業務服務,利用預設的動態導入加載訪問路徑對應的前端業務服務。通過加載前端業務服務,以便后續建立前端基礎服務與各個前端業務服務之間的聯系。
17、在本技術一些實施例中,在所述利用所述可選鏈式操作符對所述訪問路徑進行驗證之后,所述方法還包括:
18、在所述選鏈式操作符的返回值為非正常的情況下,所述訪問路徑無法獲取所述前端業務服務。
19、在上述技術方案中,在可選鏈式操作符的返回值為非正常的情況下,表明該訪問路徑可能不存在,或者文件不存在,不能夠從訪問路徑獲取到相應的前端業務服務,訪問路徑無法獲取前端業務服務。通過進行驗證,能夠保證嵌入的安全性和系統的穩定性。
20、在本技術一些實施例中,所述鉤子函數的定義過程包括:
21、對所述鉤子函數進行實例化應用定義,得到函數邏輯;
22、利用預設的內置鉤子將所述函數邏輯進行封裝,得到所述鉤子函數。
23、在上述技術方案中,鉤子函數是一種在特定時間點被自動調用的函數,用于攔截或擴展程序中的某些操作,通常用于框架、庫或操作系統中,以提供擴展性和自定義行為的能力,通過鉤子函數可以將各個前端業務服務嵌入至前端基礎服務中。首先構建鉤子函數,可以采用javascript語言進行設定,通過vue.js定義函數中的選項,進行實例化應用的定義,以實現在不同的階段別前端頁面調用。通過進行函數定義,得到函數邏輯,該函數邏輯為實現功能的邏輯,通過執行該函數邏輯,能夠實現相應的實例應用功能。再利用預設的內置鉤子函數將得到的函數邏輯進行封裝,實現鉤子的封裝和調整,得到鉤子函數。通過對鉤子函數進行定義和封裝,以便后續使用鉤子函數建立前端業務之間的聯系。
24、在本技術一些實施例中,所述將預設的鉤子動態鏈接庫注入所述前端基礎服務中,并啟動所述鉤子動態鏈接庫,以將所述鉤子函數注入所述目標對象信息對應的所述前端基礎服務中,包括:
25、利用所述前端基礎服務中預設的加載接口加載所述鉤子動態鏈接庫,得到所述鉤子函數的地址,所述預設的加載接口為ffi-napi接口;
26、加載所述鉤子動態鏈接庫,啟動所述鉤子動態鏈接庫,以將所述鉤子函數注入所述目標對象信息對應的所述前端基礎服務中。
27、在上述技術方案中,通過ffi-napi接口加載鉤子動態鏈接庫,首先在前端項目中安裝配置ffi-napi和ref-napi,可以使用ffi-napi來加載鉤子動態鏈接庫并定義如何調用其中的函數,得到鉤子函數的地址,根據鉤子函數的地址,調用鉤子函數,以運行前端業務服務。加載鉤子動態鏈接庫,啟動鉤子動態鏈接庫,以將鉤子函數注入目標對象信息對應的前端基礎服務中,以運行前端業務服務。能夠避免邏輯不清,進行統一管理。
28、在本技術一些實施例中,在所述前端基礎服務中配置入口文件之前,所述方法還包括:
29、對所述注入的目標對象信息進行權限驗證,在具有注入權限的情況下,所述目標對象信息指示注入對象;
30、在不具有注入權限的情況下,對所述注入權限進行調整。
31、在上述技術方案中,在前端基礎服務中配置入口文件之前,可以對注入的目標對象信息進行權限驗證,在不具有注入權限的情況下,表明該進程或者模塊的權限較低,或者該進程或者模塊不具有運行權限,可以對注入權限進行調整。可以通過獲取進程的權限,以管理員的身份運行程序,對該進程進行權限調整,以便能夠實現其他前端業務服務的嵌入操作。或者根據注入需求,在不具有注入權限的情況下,也可以不對注入權限進行調整,注入失敗,該進程或者模塊不設置注入代碼。
32、第二方面,本技術實施例提供了一種前端鉤子動態注入裝置,應用于前端服務器,所述裝置包括:
33、文件配置模塊,用于在前端基礎服務中配置入口文件,所述入口文件包括注入的目標對象信息;
34、路徑獲取模塊,用于獲取前端業務服務配置的訪問路徑;
35、服務加載模塊,用于根據所述訪問路徑加載對應的前端業務服務,所述前端業務服務包括鉤子函數,所述鉤子函數用于響應跨所述前端基礎服務的業務信息;
36、注入模塊,用于將預設的鉤子動態鏈接庫注入所述前端基礎服務中,并啟動所述鉤子動態鏈接庫,以將所述鉤子函數注入所述目標對象信息對應的所述前端基礎服務中;
37、業務提交模塊,用于接收前端業務提交請求,將所述前端基礎服務和所述前端業務服務提交。
38、第三方面,本技術實施例提供了一種電子設備,包括處理器、存儲器、用戶接口、通信總線及網絡接口,所述處理器、所述存儲器、所述用戶接口及所述網絡接口分別與所述通信總線連接,所述存儲器用于存儲指令,所述用戶接口和網絡接口用于給其他設備通信,所述處理器用于執行所述存儲器中存儲的指令,以使所述電子設備執行如第一方面提供的任意一項所述的方法。
39、第四方面,本技術實施例提供了一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有指令,當所述指令被執行時,執行上述第一方面提供的任意一項所述的方法。
40、綜上所述,本技術實施例中提供的一個或多個技術方案,至少具有如下技術效果或優點:
41、1、由于采用了首先在前端基礎服務中配置入口文件,入口文件包括注入的目標對象信息,通過配置入口文件指示目標對象信息,提供了其他服務添加位置,能夠避免邏輯互斥問題;獲取前端業務服務配置的訪問路徑,以便后續獲取前端業務服務;根據訪問路徑加載對應的前端業務服務,前端業務服務包括鉤子函數,鉤子函數用于響應跨前端基礎服務的業務信息,通過鉤子函數定義前端業務服務,以便能夠嵌入至前端基礎服務中;將預設的鉤子動態鏈接庫注入前端基礎服務中,并啟動鉤子動態鏈接庫,以將鉤子函數注入目標對象信息對應的前端基礎服務中,通過鉤子動態鏈接庫將前端業務服務嵌入前端基礎服務中,使得各個前端業務服務清晰分離,不僅能夠統一管理,還能夠減少代碼的冗余和邏輯混亂,從而提高開發效率;接收前端業務提交請求,將前端基礎服務和前端業務服務提交,以便進行前端應用運行。所以,有效解決了相關技術中各個前端業務服務之間的邏輯互斥問題,降低了開發效率的問題。
42、2、通過可選鏈式操作符對訪問路徑進行驗證,保證了程序運行的安全性和可靠性。