阿波羅的戰(zhàn)車
2021-10-21 17:16:24
我們知道,全局變量window在瀏覽器和globalnodejs 中。我讀到一些NPM包的源代碼,他們使用global類似global.Set的代替window.Set。當(dāng)我導(dǎo)入該包時(shí),它在我基于瀏覽器的項(xiàng)目中運(yùn)行良好。這讓我很困惑。我認(rèn)為原因是babel。也許使用global可以編寫跨平臺(tái)包babel?但它是如何工作的。
2 回答

精慕HU
TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
我不是 babel 或 webpack 的專家,遠(yuǎn)非如此,但是查看 webpack 的輸出代碼,您可以看到 webpack 正在將global
變體注入您的代碼,如果您使用它,那么如果我們有一個(gè)簡單的代碼,例如:
console.log("just a test");
這就是我們?cè)创a中的最終結(jié)果:
eval("__webpack_require__.r(__webpack_exports__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] =
但是,如果我們使用下一個(gè)代碼:
console.log("just a test", global);
這是我們的輸出:
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ __webpack_exports__[\"default\"] =
你可以清楚地看到變化。
發(fā)現(xiàn)這個(gè)問題,您可能會(huì)發(fā)現(xiàn)它有助于解決這個(gè)問題。
從我的理解巴貝爾使用這個(gè)內(nèi)部,所以出口,如果你在代碼中使用它。
請(qǐng)注意,您無法global
在控制臺(tái)中訪問變體。
注意 global
和window
是同一個(gè)對(duì)象,它不是副本,因此對(duì) 所做的所有更改global
都將在window
添加回答
舉報(bào)
0/150
提交
取消