如何解决在服务器端渲染JS
在JS中,所有模块都被缓存(例如,直接由Node缓存或由浏览器中的Webpack缓存),因此从本质上讲,默认情况下它们都是单例。
其中有些有时包含状态,例如本例中的模块:
// foo.js
let state = 0;
export function incrementNumber() {
state++;
}
export function getNumber() {
return state;
}
这些问题是,当为客户端创建它们时,假定状态仅对于特定的浏览器选项卡会话是全局的-刷新/离开页面后,状态就消失了。但是,如果尝试在服务器端呈现具有此类模块的JS App,则有状态的单例行为将有所不同,状态将在所有用户之间泄漏。
考虑到我有一个客户端Vue应用程序,该应用程序具有这样的模块,并且我想实现SSR-重构此类模块以使其正常工作的最佳方法是什么?我需要在客户端将组件设置为单例,但我不希望在服务器端为每个单独的请求提供单独的实例。
解决方法
我在模块单例方面面临着同样的问题。 幸运的是,我们没有那么多。到目前为止,我们正在重构所有这些元素,并尝试将必要的单例数据保持在redux状态或以某种方式在诸如组件内部之类的react app上下文内部。
祝你好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。