2017-02-28 61 views
2

我很努力地讓webpack的bundle.js將ReactDOM(可能還有其他變量)暴露給標記......是否有一個巧妙的技巧呢?Webpack:暴露一個變量到腳本標記

我用jQuery做了這件事,但那真的是要走的路嗎? :

$ = require('jquery'); 
window.jQuery = $; 
window.$ = $; 
+1

當你的應用程序被拆分成多個文件/模塊時,將你需要的確切組件暴露於'window.abc'可能是正確的。除非需要,否則我已經看過不要暴露'window'元素的建議。 – Sairam

回答

0

這是一個乾淨的方式做你想要什麼:

包括ReactDOM鏈接到CDN的腳本標籤(或任何你想要從中獲取ReactDOM)輸出的HTML頁面上: <script src="https://unpkg.com/[email protected]/dist/react-dom.min.js"></script>

請使用您的WebPack配置的externals屬性讓WebPACK現在可說ReactDOM將來自外部來源,而不是東西的WebPack可以在項目目錄中找到。在這種情況下,在你webpack.config.js

module.exports = { 
    // other configs 
    externals: { 
    'react-dom': 'ReactDOM' 
    } 
} 

冒號左邊的名字是你如何在你的代碼中引用ReactDOM。右邊的那個是包裹附加到window的全局變量。

在你的代碼中bundle.jsimport ReactDOM如下:

import * as ReactDOM from 'react-dom' 

在包外面你的代碼,使用ReactDOM爲全局變量

ReactDOM.render(/*some component */) 

可以概括這種方法的任何UMD包。