手擼一款VS Code Host管理插件

做web開發的同學不論前端還是後端應該都基本用過host工具,用於管理開發,測試,預生產等等各種環境的host配置。這裡分享一下自己手擼一款VS Code host文件管理插件的相關內容。

什麼是Host

Hosts是一個沒有擴展名的系統文件,可以用記事本等工具打開,其作用就是將一些常用的網址域名與其對應的IP地址建立一個關聯“數據庫”,當用戶在瀏覽器中輸入一個需要登錄的網址時,系統會首先自動從Hosts文件中尋找對應的IP地址,一旦找到,系統會立即打開對應網頁,如果沒有找到,則系統會再將網址提交DNS域名解析服務器進行IP地址的解析。

為什麼需要Host管理工具

開發&測試過程中經常需要在不同的環境中切換,如果沒有一個較好的管理工具,人力手動更新hosts文件效率低而且不好維護。所以在開發過程中有這樣一個工具能夠一定程度的提升開發&測試效率。

Host管理工具需要哪些功能

根據目前常用的host管理工具來看,需要具備如下幾個主要功能

  1. 新增Host文件
  2. 刪除Host文件
  3. 選中Host文件,更改同步到系統Host文件
  4. 取消選中Host文件,更改同步到系統Host文件
  5. 編輯Host文件,保存時同步到系統Host文件

技術選型

綜合上訴分析可以看出其核心主要集中在文件操作,GUI交互方面只需要文件的簡單管理和編輯即可,VS Code 完美切合上述訴求(實現簡單輕量、跨平臺),故此處選擇基於vscode定製插件的方式實現host管理功能。當然,如果熟悉其他的GUI技術,通過其他如windows系列的各種GUI庫、QT、electron + (vue|react|angular)等均可以實現該功能,相對來講插件的形式最輕量,開發成本也最少。

實現說明

1.功能預覽 這裡先給出實現效果讓大家有一個直觀的感受,Explorer窗口最下方即是安裝該插件後的管理入口,實現了新增、刪除、修改、選中、取消選中等主要功能。

手擼一款VS Code Host管理插件

2.項目目錄

手擼一款VS Code Host管理插件

3.文件說明

除了vscode插件腳手架系統生成的文件外,主要只有新增兩個文件。hostTreeDataProvider.ts, FileUtil.ts。其中hostTreeDataProvider.ts有兩個作用,一是管理展示host文件目錄樹,二是接收處理菜單命令。FileUtil.ts則主要用來讀寫、操作host相關文件。 菜單命令映射關係如下圖


手擼一款VS Code Host管理插件


4.ahost插件初始化

初始化時會判斷用戶目錄是否存在 .ahost文件夾,如不存在則創建該文件用來存儲新增的自定義host。新增該文件成功後,在將當前host文件內容同步到該文件夾下新增一個default.host文件。然後新增meta.json元信息文件用來存儲當前選中狀態。

5.ahost選中操作

選中某一文件時,會將該文件名存入元信息文件meta.json。然後調用同步方法,將所有當前選中的host文件內容合併後,同步至系統host文件。其他操作原理類似。

6.主要代碼

具體代碼可以到Github上查看,下文有Github倉庫的地址和插件的地址也歡迎試用。

extension.ts


手擼一款VS Code Host管理插件


ahostTreeDataProvider.ts


手擼一款VS Code Host管理插件


項目地址

該插件已發佈到VS Code插件市場,源碼也已已提交到Github ,因主要精力集中在實現功能,代碼組織可能比較凌亂,歡迎感興趣的同學拍磚&PR,共同進步。

  • 插件地址 https://marketplace.visualstudio.com/items?itemName=gamedilong.ahost
  • 只需要在vscode中插件窗口搜索ahost 安裝即可 項目地址: https://github.com/gamedilong/ahost 如有你有所幫助歡迎star

另外個人翻譯的一篇Github的最全資源索引集,有興趣的同學也歡迎star。翻譯來自star超過 123k的github - awesome。有很多優質的學習資源。

地址 https://github.com/gamedilong/awesome-cn

以上內容如對您有所幫助,歡迎關注、轉發、收藏、評論。有任何問題或者建議也歡迎隨時反饋,大家一起交流溝通,後續會提供更多優質的內容給到各位愛好技術的夥伴,謝謝!


分享到:


相關文章: