import export 和 require module.exports注意點

問題:
今天被同事遇到的一個問題卡住了:有一個封裝好的網絡請求對象,他的請求頭裏從緩存中獲取token ,代碼如下:

let axiosWrap = axios.create({
    // baseURL: 'http://192.168.1.137:8090/haidong-emcee/',
    headers: {
        'token': localStorage.getItem('token'),
        "Content-Type": "application/json;charset=UTF-8"
    },
})

用戶授權登錄後將取到的token放入緩存,但是再次用這個網絡對象發起請求時卻並沒有攜帶token !
分析
import export 這種語法,是在代碼編譯階段執行的,所以當這個網絡請求對象被編譯的時候token就會被賦值,而此時token值未空,就會導致上述問題。
總結
(1)import export是在編譯的時候執行的,並且import的對象被修改,會導致源文件被修改。所以上述問題可以這樣解決:授權登錄後修改下import進來的網絡請求對象的header!
(2)require module.exports是在代碼執行階段執行,它拷貝了一份源文件,所以修改require進來的內容並不會造成源文件的更改!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章