在 SPA 和传统网页之间共享 javascript

Sharing javascript between spa and traditional web pages

我有一个节点 spa,它包含许多单独的 JavaScript 文件(反应组件等)。这些由 commonjs 管理,然后由 browserify 捆绑到一个文件中,bundle.js。我正在使用 play framework 2.4 为 spa 提供服务,为 spa 处理休息 api,以及为一些传统网页制作模板。

到目前为止,这对我的网络应用程序来说效果很好,但我正处于要向我的传统网页(不是 spa)添加一些 javascript 的阶段,我想能够重用 spa 中的 react 组件之类的东西,这样我就不必为模态和诸如此类的东西复制代码。

根据我目前的研究,我一直在努力寻找一个好的解决方案。我读过 requirejs 对浏览器更友好,所以我在想也许我可以转储节点并将我的所有代码移动到播放框架 public 资产中并让播放处理它,但我不太确定那是requirejs 应该如何工作。或者也许我应该保留节点,并像我目前所做的那样拥有一个 javascript 包,但是使用一些代码查看当前页面的 url 以检查要做什么,这样用户就可以了为整个网站下载一个包。

我真的很难找到一个令我满意的解决方案,如果有人可以 link 某个项目可以很好地构建我的上述场景,或者对最佳实践提出一些建议,那将很棒。我觉得以前肯定有人遇到过我的情况并找到了很好的解决方案。

所以我采用的解决方案是让所有页面加载我的 bundle.js。然后入口点查看当前 url 并在可能页面上的开关中匹配它。虽然如果您只访问一个传统网页就必须加载一个大包,但后续请求有望从缓存中检索 bundle.js。这抵消了初始页面请求的缺点。