1.命名匯入和自動完成
假設我編寫了一個簡單的JavaScript模組:
模組stringUtils具有匯出了一個函式exequalsIgnoreCase,該函式比較兩個忽略大小寫的字串。
看起來沒啥問題,挺好的。
現在在 app.js 檔案中匯入函式 exequalsIgnoreCase
我們大多數會這樣來引入:
首先,您必須編寫匯入名稱import {}。在此步驟中,IDE無法提供有關要匯入的可用名稱的任何建議。
然後,繼續寫入 from './stringUtils',然後移回大括號並展開自動完成以選擇要匯入的名稱。
儘管 ES6 模組優點很多,但匯入模組語法使自動完成功能難以使用。
2.Python 中的模組現在讓我們嘗試在 Python 中匯入命名元件。它有同樣的問題嗎?
下面用 Python 實現的相同模組stringUtils和函式equalsIgnoreCase:
在 Python 中,不必顯式地指出要匯出的函式。
現在,在另一個Python模組app內部,將stringUtils匯入equalsIgnoreCase函式:
在Python中,首先指出要從:from stringUtils哪裡匯入的模組。
如果你想知道可以匯入的函式,編輯器已經知道了模組名並給出了必要的建議,這種方式會更加友好。
3.解決方法我能找到的在JavaScript中對命名匯入啟用自動完成的唯一解決方案是呼叫IDE以獲得幫助。
例如,在Visual Studio Code中, 可以安裝JavaScript (ES6) code snippets外掛。
啟用外掛後,通過使用imd程式碼段並按tab鍵,游標首先跳到編寫模組路徑的位置。然後,在按下tab鍵後,游標會跳轉回花括號內的匯入位置。它是這樣工作的:
總結在JavaScript中,匯入語法會強制我們先指出要匯入的專案(函式,類,變數),然後再指明模組的路徑。這種方法不太友好。
相反,在Python中,首先指定模組名稱,然後指定要匯入的元件:from stringUtils import equalsIgnoreCase。使用此語法可以輕鬆自動完成匯入的專案。
通過使用IDE的擴充套件外掛,例如 ES6 code snippet 外掛,可以減輕JavaScript中命名匯入自動完成的問題, 總比沒有好。
原文:https://dmitripavlutin.com/javascript-import-module-drawback/