有没有办法从Window对象完全封装React

时间:2018-10-17 21:34:25

标签: javascript reactjs ecmascript-6

我认为这是不可能的,但我只是想确定一下。我想使用react来构建将在客户端网站上使用的小部件。当我看到react库只有5Kb时,我想到了使用它。

仍然可以,但是由于种种原因,我不能简单地使用react来构建窗口小部件。主要原因之一是我想使用延迟加载来加载缺少的窗口小部件,而且很可能来自我们的多个窗口小部件将位于同一网站上,因此我不想多次加载React。

现在我知道我可以使用browserify来将响应与客户的网站隔离开来,但是我不确定。如果所有其他方法都失败了,我们可以简单地加载Hole应用程序(在使用浏览器进行tans编译后)并删除延迟加载方面,但这不是我想要的,也不是我需要的。规范非常明确地说,需要使用延迟加载...如果不是这么具体的话。

是的...也许我错过了一些东西。有没有办法隔离ES5或ES6中的React基础库(我们的浏览器支持IE9 +)?现在,从我所看到的情况来看,这是不可能的,但是也许我又错过了一件大事吗?尽管我愿意考虑使用browserify来实现。

PS。如果答案为否,请说明原因,以便我接受答案。

1 个答案:

答案 0 :(得分:1)

您可以使用browserifies externals & excludes来构建多个不同的包。假设您同时拥有widgetA.jswidgetB.js以及两个require("react"),那么您可以做到:

 $ browserify -r react > static/react.js
 $ browserify -x react widgetA.js > static/widgetA.js
 $ browserify -x react widgetB.js > static/widgetB.js

现在页面内需要有widgetA,同时添加react和widget:

 <script defer src="./static/react.js" ></script>
 <script defer src="./static/widgetA.js" ></script>

然后react.js会被缓存,并且不会在其他页面上重新加载,这是一个“仅构建”解决方案,因此它可以在浏览器中使用(如果代码本身可以在其中使用)。