我有我的反應申請從webpack編譯。我使用谷歌recaptca的回調URL像這樣:從全球範圍訪問webpack模塊/變量
<script defer src='https://www.google.com/recaptcha/api.js?render=explicit&onload=mywebpackfn'></script>
mywebpackfn定義裏面我的WebPack編譯js文件。 api.js找不到它。我如何從外部訪問webpack js範圍?
我有我的反應申請從webpack編譯。我使用谷歌recaptca的回調URL像這樣:從全球範圍訪問webpack模塊/變量
<script defer src='https://www.google.com/recaptcha/api.js?render=explicit&onload=mywebpackfn'></script>
mywebpackfn定義裏面我的WebPack編譯js文件。 api.js找不到它。我如何從外部訪問webpack js範圍?
你可以簡單地將你的函數暴露給全局範圍。裏面的代碼
if(typeof window !== 'undefined') { // browser env
window.mywebpackfn = yourFunction
}
還是什麼花哨的訪問全球範圍
// I know kung fu
(new Function('return this')()).mywebpackfn = yourFunction
你也可能要編譯你的代碼庫https://webpack.js.org/configuration/output/#output-library
的WebPack配置
output: {
..
library: 'mywebpackfn',
libraryTarget: 'window'
}
如果您熟悉nodejs,那麼你可以在你的服務器之外創建你的節點服務器t webpack和api.js.以這種方式,節點服務器對於webpack和api.js都是通用的。 通過這種方式,您可以從webpack導出您的文件,該文件仍將由該nodejs服務器通過api.js進行導入。
希望這會有所幫助。
如果你想保留的東西通過的WebPack控制,而不是直接在你的代碼庫分配到窗口,你可以使用expose-loader
https://github.com/webpack-contrib/expose-loader
也可以指定的WebPack的output.library
選項,將公開您輸入文件作爲全局範圍內的對象導出 - 您可以從那裏導出您的回調
目前我正在執行您列出的第一個選項,但我希望有一個不太方便的方法。第二種選擇對我來說似乎是巫術。 – tgun926
@ tgun926您也可以將代碼編譯爲庫https://webpack.js.org/configuration/output/#output-library –