abpVNext 如何在vue3中使用angular代理的依賴注入
? ? ? ? ?abp最方便的莫過于它提供了一套完整的腳手架,給新手以方向,給老手以時間。在眾多方便的功能中莫過于生成angular的proxy代理(js代理無類型提示),如何在vue3中使用typescript的proxy呢。
? ? ? ? 本文主要設計三個知識點。
符號鏈接
替換核心實現(xiàn)
首先符號鏈接功能可參考pnpm的實現(xiàn)方式,源文件在其他項目中,并不在根目錄中,我們可通過符號鏈接,讓編譯器認為在根目錄中。通過angular生成的proxy在angular目錄中(必須在angular根目錄里面才能生成typescrpt代理),以下為生成代理及符號鏈接的命令。
此時,proxy文件夾已經(jīng)在vue3根目錄下,可以通過tsc的路徑引用添加快捷路徑,由于proxy問價夾里面包含了@abp/ng.core和@angular/core的引用,所以需要通過tsc和webpack進行替換。
tsconfig.json
package.json
代碼中出現(xiàn)的mockAbp和mockNg是@abp/ng.core和@angular/core的替換實現(xiàn)。

這里主要說兩個文件rest.service.ts和injectable.ts文件,其他文件可以從源碼直接復制,
rest.service.ts主要實現(xiàn)了http請求,代碼如下。主要進行了實現(xiàn)替換,注意angular版本為返回為Observable,這里返回為Promise,也可修改為返回Observable,在vue3中類型提示為Promise,同時下面代碼接入了部分angular的interceptor功能,以實際情況調(diào)整。
injectable.ts主要實現(xiàn)了vue3的依賴注入功能,需要獲取vue3的app全局實例,這樣才能實現(xiàn)全局注入,這里需要更改服務類名稱,因為在打包的時候會丟失這些信息。
以上步驟完成后,在vue文件中即可注入以上服務,如下所示。