我认为这是不可能的,但我只是想确定一下。我想使用react来构建将在客户端网站上使用的小部件。当我看到react库只有5Kb时,我想到了使用它。
仍然可以,但是由于种种原因,我不能简单地使用react来构建窗口小部件。主要原因之一是我想使用延迟加载来加载缺少的窗口小部件,而且很可能来自我们的多个窗口小部件将位于同一网站上,因此我不想多次加载React。
现在我知道我可以使用browserify来将响应与客户的网站隔离开来,但是我不确定。如果所有其他方法都失败了,我们可以简单地加载Hole应用程序(在使用浏览器进行tans编译后)并删除延迟加载方面,但这不是我想要的,也不是我需要的。规范非常明确地说,需要使用延迟加载...如果不是这么具体的话。
是的...也许我错过了一些东西。有没有办法隔离ES5或ES6中的React基础库(我们的浏览器支持IE9 +)?现在,从我所看到的情况来看,这是不可能的,但是也许我又错过了一件大事吗?尽管我愿意考虑使用browserify来实现。
PS。如果答案为否,请说明原因,以便我接受答案。
答案 0 :(得分:1)
您可以使用browserifies externals & excludes来构建多个不同的包。假设您同时拥有widgetA.js
和widgetB.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
会被缓存,并且不会在其他页面上重新加载,这是一个“仅构建”解决方案,因此它可以在浏览器中使用(如果代码本身可以在其中使用)。