react服务端渲染

91 阅读1分钟

服务端项目,webpack配置文件中需要增加target: ‘node’,对于服务端项目来说,如果编译器看到require(‘path’)是不会也不需要把path包下所有内容都打包进来的,所以引入下一个问题:

服务端项目中,通常通过引入webpack-node-externals来作为webpack配置文件的externals选项的值:

const nodeExternals = require('webpack-node-externals')
module.exports = {
    …
    externals: [nodeExternals()]
}

由于需要前后端同构,所以客户端执行的代码入口文件中调用的方法是React.hydrate,而不是React.render

使用了路由后,只会在输入url并回车的时候从服务器端获取动态生成的页面,但如果点击链接跳转时,就不重新从服务器加载页面了,这种是否符合预期?即跳转页面记录两次pv还是1次

加入中间层之后,尽量让所有的请求都经过中间层,这样在排错的时候比较有条理,虽然看起来需要逐层排查繁琐一些,但思路比较清晰,如果既存在客户端直接调用应用服务器的情况,又存在客户端通过node server的情况,则排查问题时就要考虑两种情况,比较麻烦

prerender和SSR的区别:SSR可以加快首屏渲染时间,而prerender不可以