Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React应用中结合SSR和CSR_Javascript_Reactjs_Server Side Rendering - Fatal编程技术网

Javascript 在React应用中结合SSR和CSR

Javascript 在React应用中结合SSR和CSR,javascript,reactjs,server-side-rendering,Javascript,Reactjs,Server Side Rendering,将CSR和SSR结合起来的正确方法是什么?基本上,我有一个网站,其中一些路线(主要是外部/网页的表现部分,如主页,关于,定价等)需要被呈现,主要是由于搜索引擎优化的原因。然后我有一个应用程序部分,我想让CS渲染。当SSR需要“ReactDOM.hydrate()”时,如何实现这一点(如果我理解正确的话),这与CSR不起作用。我采用的和正在为我工作的混合方法如下: 1. User goes to your website using the browser 2. Server sends plai

将CSR和SSR结合起来的正确方法是什么?基本上,我有一个网站,其中一些路线(主要是外部/网页的表现部分,如主页,关于,定价等)需要被呈现,主要是由于搜索引擎优化的原因。然后我有一个应用程序部分,我想让CS渲染。当SSR需要“ReactDOM.hydrate()”时,如何实现这一点(如果我理解正确的话),这与CSR不起作用。

我采用的和正在为我工作的混合方法如下:

1. User goes to your website using the browser
2. Server sends plain index.html to the client browser with the following:
router.get('/', (req, res) => {
res.send(
    `<html>
    <body>
        <div id="homepageaboutpricing"></div>
        <div id="reactcodecontrolsthisdiv"></div>
        <script type="text/javascript" src="bundle.js"></script>
    </body>
    </html>`);
});

3. Client browser loads bundle.js which has all your React code

index.js
import ReactDOM from 'react-dom';
import App from './App.js';
...
ReactDOM.render(
  <App />,
  document.getElementById('reactcodecontrolsthisdiv')
);

App.js
import React, { Component } from 'react';
class App extends Component {

    constructor() {}
    componentDidMount() {}
    render() {}
}
1。用户使用浏览器访问您的网站
2.服务器通过以下内容向客户端浏览器发送plain index.html:
路由器.get(“/”,(请求,res)=>{
res.send(
`
`);
});
3.客户端浏览器加载bundle.js,其中包含所有代码
index.js
从“react dom”导入react dom;
从“/App.js”导入应用程序;
...
ReactDOM.render(
,
document.getElementById('reactcodecontrolsthisdiv'))
);
App.js
从“React”导入React,{Component};
类应用程序扩展组件{
构造函数(){}
componentDidMount(){}
render(){}
}

当SSR需要“ReactDOM.hydroge()”而“ReactDOM.hydroge()”在CSR中并不起作用(如果我理解正确的话),我该如何实现这一点?你是什么意思?水合物()应该在客户端使用。@estus我的意思是,如果我使用水合物,它会希望发送一些SSR内容。但是,因为我只希望应用程序的某些部分被SS呈现,所以我不会每次都发送那个SSR内容。因此,在我的顶级index.js中,我必须在ReactDOM.render和ReactDOM.hydrate之间进行选择……我可能遗漏了一些重要的内容,这就是我为什么要问的原因。根据我对hydrate()的了解,它将以任何方式呈现缺失的部分。这会引起问题吗?如果它应该应用于每页,您可能需要一种混合方法,就像这样,在呈现服务器端时应该使用hydroid()而不是render()。