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

在spa和传统网页之间共享javascript,javascript,node.js,playframework,requirejs,commonjs,Javascript,Node.js,Playframework,Requirejs,Commonjs,我有一个节点spa,它由许多单独的JavaScript文件(react组件等)组成。这些文件由commonjs管理,然后由browserify绑定到一个文件bundle.js中。我正在使用PlayFramework2.4为spa提供服务,为spa处理RESTAPI,还用于模板化一些传统网页 到目前为止,这对我的web应用程序非常有效,但我正处于向我的传统web页面(不是spa)添加一些javascript的阶段,我希望能够重用spa中的react组件之类的东西,这样我就不必重复modals和诸如

我有一个节点spa,它由许多单独的JavaScript文件(react组件等)组成。这些文件由commonjs管理,然后由browserify绑定到一个文件bundle.js中。我正在使用PlayFramework2.4为spa提供服务,为spa处理RESTAPI,还用于模板化一些传统网页

到目前为止,这对我的web应用程序非常有效,但我正处于向我的传统web页面(不是spa)添加一些javascript的阶段,我希望能够重用spa中的react组件之类的东西,这样我就不必重复modals和诸如此类的代码

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


我真的很难找到一个我满意的解决方案,如果有人能链接到某个项目,这个项目有一个很好的方法来构建我的上述场景,或者一些关于最佳实践的建议,那就太好了。我觉得以前肯定有人遇到过我的情况,找到了一个很好的解决方案。

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