{"id":26107,"date":"2022-07-08T17:00:45","date_gmt":"2022-07-08T12:30:45","guid":{"rendered":"https:\/\/parspack.com\/blog\/?p=26107"},"modified":"2024-08-18T23:42:23","modified_gmt":"2024-08-18T19:12:23","slug":"server-side-rendering-for-react-app","status":"publish","type":"post","link":"https:\/\/parspack.com\/blog\/hosting\/learn-server\/server-side-rendering-for-react-app","title":{"rendered":"\u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React App"},"content":{"rendered":"<p style=\"text-align: justify;\">\u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React App \u06cc\u06a9\u06cc \u0627\u0632 \u062a\u06a9\u0646\u06cc\u06a9\u200c\u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628 \u0631\u0646\u062f\u0631\u200c\u06a9\u0631\u062f\u0646 \u0648\u0628 \u200c\u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u200c\u0647\u0627\u06cc \u062a\u06a9\u200c\u0635\u0641\u062d\u0647\u200c\u0627\u06cc (\u06cc\u0639\u0646\u06cc SPA) \u0627\u0633\u062a. \u062f\u0631 \u0641\u0631\u0627\u06cc\u0646\u062f\u200c \u06cc\u0627\u062f\u0634\u062f\u0647\u060c \u0635\u0641\u062d\u0647 \u0645\u062f\u0646\u0638\u0631 \u067e\u0633 \u0627\u0632 \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u06a9\u0627\u0645\u0644 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634\u060c \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u200c\u0647\u0627\u06cc \u062f\u0627\u06cc\u0646\u0627\u0645\u06cc\u06a9 \u0631\u0627 \u0647\u0645 \u062f\u0631 \u0642\u0627\u0644\u0628 \u06a9\u062f\u0647\u0627\u06cc HTML \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u06cc\u0645. \u062f\u0631 \u0645\u0642\u0627\u0644\u0647 \u062d\u0627\u0636\u0631\u060c \u0646\u062d\u0648\u0647 \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React App \u0631\u0627 \u06af\u0627\u0645\u200c\u0628\u0647\u200c\u06af\u0627\u0645 \u0622\u0645\u0648\u0632\u0634 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645.<\/p>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\">\u0622\u0645\u0648\u0632\u0634 \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc Server-Side Rendering \u06cc\u0627 SSR<\/span><\/h2>\n<p style=\"text-align: justify;\">\u0633\u0627\u0632\u0648\u06a9\u0627\u0631 \u06a9\u0644\u06cc \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React App \u0628\u062f\u06cc\u0646\u200c\u200c\u062a\u0631\u062a\u06cc\u0628 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0628\u062a\u062f\u0627 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 React \u0631\u0627 \u0628\u0647\u200c\u06a9\u0645\u06a9 \u062f\u0633\u062a\u0648\u0631 create-react-app \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0633\u067e\u0633\u060c \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u06cc \u0633\u0627\u062f\u0647 \u0631\u0627 \u0631\u0648\u06cc \u067e\u0631\u0648\u0698\u0647 \u067e\u06cc\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0631\u0646\u062f\u0631 \u0633\u0645\u062a <a title=\"\u062e\u0631\u06cc\u062f \u0633\u0631\u0648\u0631\" href=\"\/servers\" target=\"_blank\" rel=\"noopener\"> \u0633\u0631\u0648\u0631 <\/a> \u0631\u0627 \u0628\u0631\u0627\u06cc\u0634 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0627\u0646\u062a\u0647\u0627 \u0646\u06cc\u0632\u060c \u067e\u0631\u0648\u0698\u0647\u200c\u0627\u06cc \u0641\u0639\u0627\u0644 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a \u06a9\u0647 \u0628\u0627 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 React \u0633\u0645\u062a \u06a9\u0644\u0627\u06cc\u0646\u062a \u0648 \u0628\u0627 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 Express \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p style=\"text-align: justify;\"><strong>\u0646\u06a9\u062a\u0647:<\/strong> \u0642\u0628\u0644 \u0627\u0632 \u0634\u0631\u0648\u0639 \u0627\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644\u060c \u0628\u0627\u06cc\u062f Node.js \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0644\u0648\u06a9\u0627\u0644 \u0646\u0635\u0628 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f. \u062f\u0631\u0636\u0645\u0646\u060c \u0628\u0627\u06cc\u062f \u0627\u0634\u0627\u0631\u0647 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644 \u0628\u0631\u0627\u06cc \u0646\u0633\u062e\u0647\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0648 \u062a\u0623\u06cc\u06cc\u062f \u0634\u062f\u0647\u200c\u0627\u0646\u062f:<\/p>\n<ul style=\"text-align: justify;\">\n<li style=\"text-align: justify;\" aria-level=\"1\">Node v16.13.1<\/li>\n<li aria-level=\"1\">npm v8.1.2<\/li>\n<li aria-level=\"1\">react v17.0.2<\/li>\n<li aria-level=\"1\">babel\/core v7.16.0@<\/li>\n<li aria-level=\"1\">webpack v4.44.2<\/li>\n<li aria-level=\"1\">express v4.17.1<\/li>\n<li aria-level=\"1\">nodemon v2.0.15<\/li>\n<li aria-level=\"1\">npm-run-all v4.1.5<\/li>\n<\/ul>\n<p style=\"text-align: center;\"><mark style=\"background-color: #99dbfe;\">\u0628\u0627 \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React App \u0627\u0645\u06a9\u0627\u0646 \u0631\u0646\u062f\u0631\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062a\u06a9\u200c\u0635\u0641\u062d\u0647\u200c\u0627\u06cc \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0627 \u0627\u0646\u062c\u0627\u0645 \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0635\u0641\u062d\u0647 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u067e\u0633 \u0627\u0632 \u062a\u06a9\u0645\u06cc\u0644 \u0641\u0631\u0627\u06cc\u0646\u062f \u0628\u0647\u200c\u0637\u0648\u0631 \u06a9\u0627\u0645\u0644 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0648 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0634\u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627\u062a\u0648\u062c\u0647\u200c\u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0648 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc\u062a\u0627\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u062e\u062a\u0644\u0641\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0627 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0631\u06cc\u200c\u0627\u06cc\u06a9\u062a \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f.<\/mark><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\">\u0645\u0631\u062d\u0644\u0647 1. \u0633\u0627\u062e\u062a \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 React<\/span><\/h2>\n<p style=\"text-align: justify;\">\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0627\u0648\u0644\u06cc\u0646 \u0642\u062f\u0645 \u0628\u0647\u200c\u0645\u0646\u0638\u0648\u0631 \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React App\u060c \u0627\u0632 npx \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u062c\u062f\u06cc\u062f React (\u0628\u0647\u200c\u06a9\u0645\u06a9 \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 Create React App) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646\u200c\u062c\u0627 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u06cc \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0646\u0627\u0645\u0634 \u0631\u0627 react-ssr-example \u06af\u0630\u0627\u0634\u062a\u0647\u200c\u0627\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npx create-react-app react-ssr-example<\/pre>\n<p style=\"text-align: justify;\">\u0633\u067e\u0633\u060c cd \u0631\u0627 \u0648\u0627\u0631\u062f \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062c\u062f\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">cd react-ssr-example<\/pre>\n<p style=\"text-align: justify;\">\u062f\u0631\u0646\u0647\u0627\u06cc\u062a\u060c \u0627\u06cc\u0646 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u062c\u062f\u06cc\u062f \u0633\u0645\u062a \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0641\u0631\u0627\u06cc\u0646\u062f \u0646\u0635\u0628 \u0622\u0646 \u062a\u0623\u06cc\u06cc\u062f \u0634\u0648\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npm start<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0646\u0645\u0648\u0646\u0647\u200c\u0627\u06cc \u0627\u0632 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 React \u0631\u0627 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631\u062a\u0627\u0646 \u0628\u0627\u0632 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<div class=\"cta-section\">\n<p class=\"cta-description\">\u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06a9\u0627\u0645\u0644 \u0622\u0645\u0648\u0632\u0634 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc Hook \u062f\u0631 React \u0645\u0642\u0627\u0644\u0647\u200c\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f.<\/p>\n<p><a class=\"cta-button \" href=\"https:\/\/parspack.com\/blog\/cms\/introduction-react-hooks\" target=\"_blank\" rel=\"noopener\">\u0647\u0648\u06a9 \u062f\u0631 \u0631\u06cc\u200c\u0627\u06a9\u062a \u0686\u06cc\u0633\u062a\u061f<\/a><\/p>\n<\/div>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\">\u0645\u0631\u062d\u0644\u0647 2. \u0627\u0635\u0644\u0627\u062d \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647<\/span><\/h2>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644\u0627 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u062c\u062f\u06cc\u062f &lt;Home&gt; \u0631\u0627 \u062f\u0631 \u067e\u0648\u0634\u0647 src \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano src\/Home.js<\/pre>\n<p style=\"text-align: justify;\">\u062f\u0631\u0627\u062f\u0627\u0645\u0647\u060c \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 Home.js \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">function Home(props) {\r\n  return &lt;h1&gt;Hello {props.name}!&lt;\/h1&gt;;\r\n};\r\n\r\nexport default Home;<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0647\u062f\u06cc\u0646\u06af &lt;h1&gt; \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u067e\u06cc\u0627\u0645 Hello \u0631\u0627 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0646\u0627\u0645\u06cc \u062e\u0627\u0635 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f. \u062d\u0627\u0644\u0627 \u0628\u0627\u06cc\u062f &lt;Home&gt; \u0631\u0627 \u062f\u0631 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a &lt;App&gt; \u0631\u0646\u062f\u0631 \u06a9\u0646\u06cc\u0645\u061b \u067e\u0633 \u0641\u0627\u06cc\u0644 App.js \u0631\u0627 \u062f\u0631 \u067e\u0648\u0634\u0647 src \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano src\/App.js<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0639\u062f\u0627\u0632\u0622\u0646\u060c \u06a9\u062f\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u062f\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import Home from '.\/Home';\r\n\r\nfunction App() {\r\n  return &lt;Home name=\"Sammy\"\/&gt;;\r\n}\r\n\r\nexport default App;<\/pre>\n<p style=\"text-align: justify;\">\u0627\u06cc\u0646 \u06a9\u062f\u0647\u0627 \u0646\u0627\u0645\u06cc (\u0627\u06cc\u0646\u200c\u062c\u0627 Sammy) \u0631\u0627 \u0628\u0647 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a &lt;Home&gt; \u0645\u06cc\u200c\u062f\u0647\u0646\u062f\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0686\u0646\u06cc\u0646 \u067e\u06cc\u0627\u0645\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u062f \u0634\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output\r\n\"Hello Sammy!\"<\/pre>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0642\u062f\u0645 \u0628\u0639\u062f\u06cc\u060c \u062f\u0631 \u0641\u0627\u06cc\u0644 index.js \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0632 \u0631\u0648\u0634 ReactDOM\u2019s hydrate \u0628\u0647\u200c\u062c\u0627\u06cc \u0631\u0646\u062f\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0647 \u0631\u0646\u062f\u0631\u0650\u0631 DOM \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u0645 \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0631\u0627 \u0628\u0639\u062f \u0627\u0632 \u0631\u0646\u062f\u0631 \u0633\u0645\u062a \u0633\u0631\u0648\u0631\u060c rehydrate \u06a9\u0646\u06cc\u0645. \u067e\u0633 \u0641\u0627\u06cc\u0644 index.js \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u067e\u0648\u0634\u0647 src \u0631\u0627 \u0628\u0627\u0632 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano src\/index.js<\/pre>\n<p style=\"text-align: justify;\">\u0633\u067e\u0633\u060c \u06a9\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nimport App from '.\/App';\r\n\r\nReactDOM.hydrate(\r\n  &lt;React.StrictMode&gt;\r\n    &lt;App \/&gt;\r\n  &lt;\/React.StrictMode&gt;,\r\n  document.getElementById('root')\r\n);<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u0645\u062a \u06a9\u0644\u0627\u06cc\u0646\u062a \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647\u200c\u0633\u0631\u0627\u063a \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0648\u06cc\u0645.<\/p>\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" data-loaded=\"true\" src=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/react-server-side-rendering2.jpg\" class=\"wp-image-26119 size-full\" alt=\"Ssr \u062f\u0631 \u0631\u06cc\u200c\u0627\u06a9\u062a\" title=\"\u0646\u062d\u0648\u0647 \u0633\u0627\u062e\u062a \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \"       width=\"750\" height=\"538\" srcset=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/react-server-side-rendering2.jpg 750w, https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/react-server-side-rendering2-300x215.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><figcaption class=\"text-subtitle-5 text-gray-9 text-center mt-2\" >\u0633\u0627\u062e\u062a \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0648 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627<\/figcaption><\/figure>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\">\u0645\u0631\u062d\u0644\u0647 3. \u0627\u06cc\u062c\u0627\u062f \u0633\u0631\u0648\u0631 Express<\/span><\/h2>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644\u0627 \u0628\u0647\u200c\u0645\u0646\u0638\u0648\u0631 \u0627\u062f\u0627\u0645\u0647 \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React\u060c \u0628\u0627\u06cc\u062f \u0633\u0631\u0648\u0631\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc\u0634 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0646\u0633\u062e\u0647 \u0631\u0646\u062f\u0631\u200c\u0634\u062f\u0647 \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0627\u0632 Express \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p style=\"text-align: justify;\"><b>\u062a\u0648\u062c\u0647: <\/b>\u067e\u06a9\u06cc\u062c react-scripts \u06a9\u0647 \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 Create-react-app \u0627\u0633\u062a\u060c \u0646\u0633\u062e\u0647\u200c\u0627\u06cc \u0627\u0632 Express \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632 webpack-dev-server \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0639\u0628\u0648\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<p style=\"text-align: justify;\">\u067e\u0648\u0634\u0647 \u0633\u0631\u0648\u0631 \u062c\u062f\u06cc\u062f\u06cc \u062f\u0631 \u067e\u0648\u0634\u0647 \u0631\u0648\u062a \u067e\u0631\u0648\u0698\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">mkdir server<\/pre>\n<p style=\"text-align: justify;\">\u067e\u0633\u200c\u0627\u0632\u0622\u0646 \u062f\u0631 \u067e\u0648\u0634\u0647 \u0633\u0631\u0648\u0631\u060c \u0641\u0627\u06cc\u0644 index.js \u062c\u062f\u06cc\u062f\u06cc \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645 \u06a9\u0647 \u062d\u0627\u0648\u06cc \u06a9\u062f\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 Express \u0627\u0633\u062a:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano server\/index.js<\/pre>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644\u0627 \u0686\u0646\u062f \u062b\u0627\u0628\u062a \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0648 \u0627\u06cc\u0645\u067e\u0648\u0631\u062a\u200c\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import path from 'path';\r\nimport fs from 'fs';\r\n\r\nimport React from 'react';\r\nimport ReactDOMServer from 'react-dom\/server';\r\nimport express from 'express';\r\n\r\nimport App from '..\/src\/App';\r\n\r\nconst PORT = process.env.PORT || 3006;\r\nconst app = express();<\/pre>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\">\u0645\u0631\u062d\u0644\u0647 4. \u0631\u0646\u062f\u0631\u200c\u06a9\u0631\u062f\u0646 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646<\/span><\/h2>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0642\u062f\u0645 \u0628\u0639\u062f\u06cc\u060c \u06a9\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u0647\u0627 \u0628\u0647 \u06a9\u062f\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\/\/ ...\r\n\r\napp.get('\/', (req, res) =&gt; {\r\n  const app = ReactDOMServer.renderToString(&lt;App \/&gt;);\r\n  const indexFile = path.resolve('.\/build\/index.html');\r\n\r\n  fs.readFile(indexFile, 'utf8', (err, data) =&gt; {\r\n    if (err) {\r\n      console.error('Something went wrong:', err);\r\n      return res.status(500).send('Oops, better luck next time!');\r\n    }\r\n\r\n    return res.send(\r\n      data.replace('&lt;div id=\"root\"&gt;&lt;\/div&gt;', `&lt;div id=\"root\"&gt;${app}&lt;\/div&gt;`)\r\n    );\r\n  });\r\n});\r\n\r\napp.use(express.static('.\/build'));\r\n\r\napp.listen(PORT, () =&gt; {\r\n  console.log(`Server is listening on port ${PORT}`);\r\n});<\/pre>\n<p style=\"text-align: justify;\">\u0634\u0627\u06cc\u0627\u0646 \u0630\u06a9\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0645\u06a9\u0627\u0646 \u0648\u0627\u0631\u062f\u200c\u06a9\u0631\u062f\u0646 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a &lt;App&gt; \u0627\u0632 \u067e\u0648\u0634\u0647 client-app \u0627\u0632 \u0633\u0631\u0648\u0631 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n<p style=\"text-align: justify;\">\u062f\u0631 \u06a9\u062f\u0647\u0627\u06cc \u0628\u0627\u0644\u0627 \u0633\u0647 \u0627\u062a\u0641\u0627\u0642 \u0631\u062e \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n<ul style=\"text-align: justify;\">\n<li aria-level=\"1\">\u0627\u0632 Express \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u0627\u0632 \u067e\u0648\u0634\u0647 build \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li aria-level=\"1\">\u0627\u0632 renderToString \u06a9\u0647 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 ReactDOMServer \u0627\u0633\u062a\u200c\u060c \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631\u200c\u06af\u0631\u0641\u062a\u0646 \u0627\u0632 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0627\u0633\u062a\u0631\u06cc\u0646\u06af HTML \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n<li aria-level=\"1\">\u0641\u0627\u06cc\u0644 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 index.html \u0627\u0632 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0627\u064e\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 build \u062e\u0648\u0627\u0646\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0633\u067e\u0633\u060c \u0645\u062d\u062a\u0648\u0627\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0627 \u06cc\u06a9 id \u0628\u0647 \u0646\u0627\u0645 root \u0628\u0647 &lt;div&gt; \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f (\u0627\u06cc\u0646 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u067e\u0627\u0633\u062e \u0628\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f).<\/li>\n<\/ul>\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" data-loaded=\"true\" src=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/react-server-side-rendering3.jpg\" class=\"wp-image-26120 size-full\" alt=\"React ssr \u0686\u06cc\u0633\u062a\u061f\" title=\"\u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\"       width=\"750\" height=\"538\" srcset=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/react-server-side-rendering3.jpg 750w, https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/react-server-side-rendering3-300x215.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><figcaption class=\"text-subtitle-5 text-gray-9 text-center mt-2\" >\u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a\u200c\u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0631\u0646\u062f\u0631\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u0645\u061f<\/figcaption><\/figure>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\">\u0645\u0631\u062d\u0644\u0647 5. \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Webpack \u0648 Babel\u00a0<\/span><\/h2>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0627\u0632 \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React App\u060c \u0628\u0627\u06cc\u062f \u06a9\u062f\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Webpack \u0648 Babel \u0628\u0627\u0646\u062f\u0644 \u0648 \u062a\u0631\u0646\u0633\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0627\u06cc\u0646 \u06a9\u062f\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u06a9\u0627\u0631 \u06a9\u0646\u0646\u062f.<\/p>\n<p style=\"text-align: justify;\"><b>\u062a\u0648\u062c\u0647: <\/b>\u0628\u0631\u0627\u06cc \u0627\u062f\u0627\u0645\u0647 \u0645\u0631\u0627\u062d\u0644\u060c \u0628\u0627\u06cc\u062f babel-core \u0648 babel-preset-env \u0648 babel-preset-react-app \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f. \u0627\u06cc\u0646 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0627\u0632 \u0647\u0645\u0627\u0646 \u0632\u0645\u0627\u0646 \u0646\u0635\u0628 \u0622\u0631\u0634\u06cc\u0648 \u0648 \u0646\u0633\u062e\u0647 monorepo \u0628\u0647\u200c\u062c\u0627\u06cc \u0622\u0646\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n<p style=\"text-align: justify;\">\u062f\u0631\u0636\u0645\u0646\u060c react-scripts \u0645\u062a\u0639\u0644\u0642 \u0628\u0647 Create-react-app \u0646\u0635\u0628 \u0627\u06cc\u0646 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f: webpack \u060c\u200cwebpack \u060c\u200cwebpack-node-externals \u060c\u200cbabel\/core@ \u060c\u200cbabel-loader babel\/preset-env@ \u0648 babel\/preset-react@. \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0627\u0632 \u0622\u0645\u0648\u0632\u0634 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0639\u0628\u0648\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647\u200c\u0633\u0631\u0627\u063a \u0627\u062f\u0627\u0645\u0647 \u0645\u0631\u0627\u062d\u0644 \u0645\u06cc\u200c\u0631\u0648\u06cc\u0645.<\/p>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644\u0627 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062c\u062f\u06cc\u062f Babel \u0631\u0627 \u062f\u0631 \u067e\u0648\u0634\u0647 \u0631\u0648\u062a \u067e\u0631\u0648\u0698\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano .babelrc.json<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0639\u062f \u067e\u0631\u06cc\u0633\u062a\u200c\u0647\u0627\u06cc env \u0648 react-app \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">{\r\n  \"presets\": [\r\n    \"@babel\/preset-env\",\r\n    \"@babel\/preset-react\"\r\n  ]\r\n}<\/pre>\n<p style=\"text-align: justify;\"><b>\u0646\u06a9\u062a\u0647: <\/b>\u0642\u0628\u0644\u0627\u064b \u0627\u0632 \u0641\u0627\u06cc\u0644 babelrc. (\u0628\u062f\u0648\u0646 \u067e\u0633\u0648\u0646\u062f json.) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u062f\u061b \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0641\u0642\u0637 \u062f\u0631 Babel 6 \u067e\u0627\u0633\u062e\u200c\u06af\u0648 \u0628\u0648\u062f \u0648 \u062f\u06cc\u06af\u0631 \u062f\u0631 Babel 7 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p style=\"text-align: justify;\">\u062f\u0631 \u06af\u0627\u0645 \u0628\u0639\u062f\u06cc\u060c webpack config \u0628\u0631\u0627\u06cc \u0633\u0631\u0648\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u0632 Babel Loader \u0628\u0631\u0627\u06cc \u062a\u0631\u0627\u0646\u0633\u067e\u0627\u06cc\u0644\u200c\u06a9\u0631\u062f\u0646 \u06a9\u062f\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639\u060c \u0641\u0627\u06cc\u0644 webpack.server.js \u0631\u0627 \u062f\u0631 \u067e\u0648\u0634\u0647 \u0631\u0648\u062a \u067e\u0631\u0648\u0698\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano webpack.server.js<\/pre>\n<p style=\"text-align: justify;\">\u0633\u067e\u0633\u060c \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 webpack.server.js \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">const path = require('path');\r\nconst nodeExternals = require('webpack-node-externals');\r\n\r\nmodule.exports = {\r\n  entry: '.\/server\/index.js',\r\n  target: 'node',\r\n  externals: [nodeExternals()],\r\n  output: {\r\n    path: path.resolve('server-build'),\r\n    filename: 'index.js'\r\n  },\r\n  module: {\r\n    rules: [\r\n      {\r\n        test: \/\\.js$\/,\r\n        use: 'babel-loader'\r\n      }\r\n    ]\r\n  }\r\n};<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0627\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0628\u0627\u0646\u062f\u0644 \u0633\u0631\u0648\u0631 \u06a9\u0647 \u062a\u0631\u0646\u0633\u067e\u0627\u06cc\u0644 \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u062f\u0631 \u067e\u0648\u0634\u0647 server-build \u0648 \u062f\u0631 \u0641\u0627\u06cc\u0644\u06cc \u0628\u0647 \u0646\u0627\u0645 index.js \u062e\u0631\u0648\u062c\u06cc \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 &#8216;target: &#8216;node \u0648 externals: [nodeExternals()] \u0627\u0632 webpack-node-externals \u0646\u06cc\u0632 \u06a9\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc node_modules \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0628\u062e\u0634 \u0645\u0647\u0645 \u0627\u06cc\u0646 \u0641\u0631\u0627\u06cc\u0646\u062f \u0627\u0633\u062a (\u0633\u0631\u0648\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0647 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f).<\/p>\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" data-loaded=\"true\" src=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/react-server-side-rendering4.jpg\" class=\"wp-image-26121 size-full\" alt=\"\u0622\u0645\u0648\u0632\u0634 ssr \u062f\u0631 \u0631\u06cc\u06a9\u062a\" title=\"\u0627\u062c\u0631\u0627\u06cc \u0631\u06cc\u200c\u0627\u06a9\u062a \u0633\u0645\u062a \u0633\u0631\u0648\u0631\"       width=\"750\" height=\"487\" srcset=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/react-server-side-rendering4.jpg 750w, https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/react-server-side-rendering4-300x195.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><figcaption class=\"text-subtitle-5 text-gray-9 text-center mt-2\" >\u0622\u0645\u0648\u0632\u0634 \u0627\u062c\u0631\u0627\u06cc \u0631\u06cc\u200c\u0627\u06a9\u062a \u0633\u0645\u062a \u0633\u0631\u0648\u0631<\/figcaption><\/figure>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\">\u0645\u0631\u062d\u0644\u0647 6. \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc npm<\/span><\/h2>\n<p style=\"text-align: justify;\">\u0641\u0627\u06cc\u0644 package.json \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc \u06a9\u0645\u06a9\u06cc npm \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nano package.json<\/pre>\n<p style=\"text-align: justify;\">\u0633\u067e\u0633\u060c dev:build-server \u0648 dev:start \u0648 dev scripts \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 package.json \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 SSR \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\"scripts\": {\r\n  \"dev:build-server\": \"NODE_ENV=development webpack --config webpack.server.js --mode=development -w\",\r\n  \"dev:start\": \"nodemon .\/server-build\/index.js\",\r\n  \"dev\": \"npm-run-all --parallel build dev:*\",\r\n  \/\/ ...\r\n},<\/pre>\n<p style=\"text-align: justify;\">\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a dev:build-server \u0645\u062d\u06cc\u0637\u06cc \u0628\u0631\u0627\u06cc development \u0641\u0631\u0627\u0647\u0645 \u0648 webpack \u0631\u0627 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0627\u06cc \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0633\u0627\u062e\u062a\u0647\u200c\u0627\u06cc\u0645. \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a dev \u0646\u06cc\u0632 npm-run-all \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u06a9\u062f\u0647\u0627\u06cc build \u0648 \u0647\u0645\u0647 \u06a9\u062f\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627 *dev: \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f (\u0634\u0627\u0645\u0644 dev:build-server \u0648 dev:start)\u060c \u062f\u0631 parallel \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f. \u0627\u0632 nodemon \u0646\u06cc\u0632 \u0628\u0631\u0627\u06cc \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a\u200c\u06a9\u0631\u062f\u0646 \u0633\u0631\u0648\u0631 \u0628\u0639\u062f \u0627\u0632 \u0627\u0639\u0645\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<p style=\"text-align: justify;\"><b>\u062a\u0648\u062c\u0647: <\/b>\u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc start \u060c\u200cbuild \u060c\u200ctest \u0648 eject \u06a9\u0647 \u0627\u0632\u0642\u0628\u0644 \u062f\u0631 \u0641\u0627\u06cc\u0644 package.json \u0645\u0648\u062c\u0648\u062f\u0646\u062f\u060c \u0646\u06cc\u0627\u0632\u06cc \u0646\u06cc\u0633\u062a.<\/p>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644\u0627 \u062f\u0633\u062a\u0648\u0631\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u0648\u0627\u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0627\u06cc\u0646 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0646\u0635\u0628 \u0634\u0648\u0646\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npm install nodemon@2.0.15 --save-dev\r\nnpm install npm-run-all@4.1.5 --save-dev<\/pre>\n<p style=\"text-align: justify;\">\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0628\u0627\u0646\u062f\u0644 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0633\u0645\u062a \u06a9\u0627\u0631\u0628\u0631 \u0633\u0627\u062e\u062a\u0647 \u0634\u0648\u062f \u0648 \u06a9\u062f\u0647\u0627\u06cc \u0633\u0631\u0648\u0631 \u062a\u0631\u0627\u0646\u0633\u067e\u0627\u06cc\u0644 \u0634\u0648\u0646\u062f \u0648 \u0633\u0631\u0648\u0631 \u062f\u0631 3006: \u0627\u062c\u0631\u0627 \u0634\u0648\u062f.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npm run dev<\/pre>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a server webpack \u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u067e\u06cc \u0645\u06cc\u200c\u0628\u0631\u062f \u0648 \u0633\u0631\u0648\u0631 \u0631\u06cc\u200c\u0627\u0633\u062a\u0627\u0631\u062a \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0627\u0627\u06cc\u0646\u200c\u062d\u0627\u0644\u060c \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0644\u0627\u06cc\u0646\u062a \u0647\u0631\u0628\u0627\u0631 \u0628\u0639\u062f \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0628\u0627\u06cc\u062f \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0634\u0648\u062f.<\/p>\n<p style=\"text-align: justify;\">\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0645\u0631\u0627\u062d\u0644 \u0646\u0647\u0627\u06cc\u06cc \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React App\u060c \u0622\u062f\u0631\u0633 \/http:\/\/localhost:3006 \u0631\u0627 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0646\u062f\u0631\u200c\u0634\u062f\u0647 \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\n<p style=\"text-align: justify;\">\u067e\u06cc\u0634\u200c\u0627\u0632\u0627\u06cc\u0646\u060c \u0633\u0648\u0631\u0633 \u06a9\u062f\u0647\u0627 \u0628\u062f\u200c\u06cc\u0646\u200c\u0635\u0648\u0631\u062a \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u062f\u0646\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output&lt;div id=\"root\"&gt;&lt;\/div&gt;<\/pre>\n<p style=\"text-align: justify;\">\u062d\u0627\u0644\u0627 \u0628\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a\u06cc \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645\u060c \u0633\u0648\u0631\u0633 \u06a9\u062f\u0647\u0627 \u0628\u062f\u06cc\u0646\u200c\u0635\u0648\u0631\u062a \u0647\u0633\u062a\u0646\u062f:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Output&lt;div id=\"root\"&gt;&lt;h1 data-reactroot=\"\"&gt;Hello &lt;!-- --&gt;Sammy&lt;!-- --&gt;!&lt;\/h1&gt;&lt;\/div&gt;<\/pre>\n<p style=\"text-align: justify;\">\u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631\u200c\u06a9\u0647 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc\u00a0 React App\u060c \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a &lt;App&gt; \u0631\u0627 \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0628\u0647 HTML \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" data-loaded=\"true\" src=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/react-server-side-rendering5.jpg\" class=\"wp-image-26122 size-full\" alt=\"\u0631\u0646\u062f\u0631 \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u062f\u0631 \u0631\u06cc\u200c\u0627\u06a9\u062a\" title=\"\u0646\u062d\u0648\u0647 \u0631\u0646\u062f\u0631\u06af\u06cc\u0631\u06cc \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u062f\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0631\u06cc\u200c\u0627\u06a9\u062a\"       width=\"750\" height=\"349\" srcset=\"https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/react-server-side-rendering5.jpg 750w, https:\/\/parspack.com\/blog\/wp-content\/uploads\/2022\/07\/react-server-side-rendering5-300x140.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><figcaption class=\"text-subtitle-5 text-gray-9 text-center mt-2\" >\u0631\u0646\u062f\u0631\u06af\u06cc\u0631\u06cc \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u062f\u0631 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0631\u06cc\u200c\u0627\u06a9\u062a \u0686\u06af\u0648\u0646\u0647 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f\u061f<\/figcaption><\/figure>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\">\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<\/span><\/h2>\n<p style=\"text-align: justify;\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628\u060c \u0631\u0648\u0634 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 React \u0648 \u0641\u0639\u0627\u0644\u200c\u06a9\u0631\u062f\u0646 SSR \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u0646 \u0628\u0627 \u0627\u0639\u0645\u0627\u0644 \u0628\u0631\u062e\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0622\u0645\u0648\u0632\u0634 \u0648 \u06a9\u0644\u06cc\u062a \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0633\u0627\u062f\u0647 React \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u06cc\u0645. \u0637\u0628\u06cc\u0639\u062a\u0627\u064b \u0648\u0642\u062a\u06cc \u0627\u0632 \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc \u0648 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0648 redux \u0633\u062e\u0646 \u0628\u0647\u200c\u0645\u06cc\u0627\u0646 \u0622\u06cc\u062f\u060c \u0645\u0631\u0627\u062d\u0644 \u06a9\u0645\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647\u200c\u062a\u0631 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f. \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u06cc\u0645 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u0628\u0631\u0627\u06cc\u062a\u0627\u0646 \u0645\u0641\u06cc\u062f \u0628\u0648\u062f\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<h2 style=\"text-align: justify;\"><span style=\"color: #3366ff;\">\u0633\u0624\u0627\u0644\u0627\u062a \u0645\u062a\u062f\u0627\u0648\u0644<\/span><\/h2>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">1. \u0645\u0646\u0638\u0648\u0631 \u0627\u0632 \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React App \u0686\u06cc\u0633\u062a\u061f<\/span><\/h3>\n<p style=\"text-align: justify;\">\u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u06a9\u0647 \u0628\u0627 \u0646\u0627\u0645 \u0627\u062e\u062a\u0635\u0627\u0631\u06cc SSR \u0646\u06cc\u0632 \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0631\u0648\u0634\u06cc \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631\u200c\u06af\u0631\u0641\u062a\u0646 \u0627\u0632 \u0648\u0628\u200c\u200c\u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u062a\u06a9\u200c\u0635\u0641\u062d\u0647\u200c\u0627\u06cc (SPA) \u0627\u0633\u062a. \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062a\u06a9\u0646\u06cc\u06a9\u060c \u0635\u0641\u062d\u0647 \u0645\u062f\u0646\u0638\u0631 \u0627\u0628\u062a\u062f\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u0644\u0648\u062f \u0648 \u0633\u067e\u0633 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">2. \u0645\u0632\u0627\u06cc\u0627\u06cc SSR \u0686\u06cc\u0633\u062a\u061f<\/span><\/h3>\n<p style=\"text-align: justify;\">\u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0645\u0632\u06cc\u062a \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af server-side\u060c \u0627\u0631\u062a\u0642\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0648 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0631\u0639\u062a \u0633\u06cc\u0633\u062a\u0645 \u0627\u0633\u062a\u061b \u0686\u0631\u0627\u06a9\u0647 \u0628\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0631\u0648\u0634\u060c \u0635\u0641\u062d\u0647 \u0645\u0627 \u0627\u0628\u062a\u062f\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u0644\u0648\u062f \u0648 \u0628\u0639\u062f\u0627\u0632\u0622\u0646 \u0628\u0627 \u0627\u0648\u0644\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0632 \u0633\u0631\u0648\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0647\u200c\u0639\u0644\u0627\u0648\u0647 \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062a\u06a9\u0646\u06cc\u06a9\u060c \u0645\u0637\u0645\u0626\u0646 \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0648\u062f \u06a9\u0647 \u0647\u0645\u0647 \u0627\u0650\u0644\u0650\u0645\u0627\u0646\u200c\u0647\u0627\u06cc \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u0634\u0645\u0627 \u0631\u0646\u062f\u0631 \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f\u061b \u0632\u06cc\u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634\u060c \u0631\u0646\u062f\u0631 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0645\u062a\u06a9\u06cc \u0646\u06cc\u0633\u062a.<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">3. \u0645\u0639\u0627\u06cc\u0628 SSR \u0686\u06cc\u0633\u062a\u061f<\/span><\/h3>\n<p style=\"text-align: justify;\">\u0628\u0632\u0631\u06af\u200c\u062a\u0631\u06cc\u0646 \u0636\u0639\u0641 SSR \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u062d\u062a\u0648\u0627\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u062e\u0634\u06cc \u0627\u0632 HTML \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u0646\u06cc\u0633\u062a\u0646\u062f\u060c \u062a\u0632\u0631\u06cc\u0642 \u06a9\u0646\u062f (\u0645\u062b\u0644 \u062c\u0627\u0648\u0627\u200c\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0634\u062e\u0635 \u062b\u0627\u0644\u062b \u0648\u0627\u0631\u062f \u0633\u06cc\u0633\u062a\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f). \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0639\u0636\u06cc \u0627\u0632 \u0645\u062d\u062a\u0648\u0627\u0647\u0627\u06cc \u0635\u0641\u062d\u0647 (\u0645\u0627\u0646\u0646\u062f \u0645\u062d\u062a\u0648\u0627\u0647\u0627\u06cc UGC) \u0628\u0647 \u0631\u0628\u0627\u062a\u200c\u0647\u0627\u06cc \u0645\u0648\u062a\u0648\u0631\u0647\u0627\u06cc \u062c\u0633\u062a\u200c\u0648\u062c\u0648 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0646\u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f.<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">4. \u0622\u06cc\u0627 \u0631\u0648\u0646\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc SSR \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u06cc\u06a9\u0633\u0627\u0646 \u0627\u0633\u062a\u061f<\/span><\/h3>\n<p style=\"text-align: justify;\">\u062e\u06cc\u0631\u060c \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647\u200c\u062a\u0631 \u0645\u0631\u0627\u062d\u0644 \u0627\u0646\u062c\u0627\u0645 \u06a9\u0627\u0631 \u06a9\u0645\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f\u061b \u0686\u0631\u0627\u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647\u060c SSR \u0628\u0627\u0631 \u0632\u06cc\u0627\u062f\u06cc \u0631\u0627 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f.<\/p>\n<h3 style=\"text-align: justify;\"><span style=\"color: #0000ff;\">5. \u0622\u06cc\u0627 \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React App \u0628\u0631\u0627\u06cc \u0633\u0626\u0648 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u0647\u0645 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a\u061f<\/span><\/h3>\n<p style=\"text-align: justify;\">\u0628\u0644\u0647\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 SSR \u062f\u0631 \u062f\u0648 \u0635\u0648\u0631\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0642\u062f\u0645\u06cc \u0645\u062b\u0628\u062a \u0628\u0631\u0627\u06cc <a title=\"\u0622\u0645\u0648\u0632\u0634 \u0633\u0626\u0648\" href=\"\/blog\/cms\/seo-search-engine-optimization\" target=\"_blank\" rel=\"noopener\">\u0633\u0626\u0648<\/a> \u0633\u0627\u06cc\u062a \u0647\u0645 \u0645\u062d\u0633\u0648\u0628 \u0634\u0648\u062f: \u06f1. \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u06cc\u0646\u062f\u06a9\u0633\u200c\u06a9\u0631\u062f\u0646 \u06a9\u062f\u0647\u0627\u06cc \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0635\u0641\u062d\u0627\u062a \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u0628\u0627 \u0645\u0634\u06a9\u0644\u0627\u062a\u06cc \u0647\u0645\u0631\u0627\u0647 \u0627\u0633\u062a\u061b \u06f2. \u0648\u0642\u062a\u06cc\u200c \u0634\u0628\u06a9\u0647\u200c\u0627\u06cc \u06a9\u064f\u0646\u062f \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u062f\u0627\u0646\u0644\u0648\u062f \u0628\u0627\u0646\u062f\u0644 \u0628\u0632\u0631\u06af \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u062f\u0686\u0627\u0631 \u0627\u062e\u062a\u0644\u0627\u0644 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"\u0645\u0646\u0638\u0648\u0631 \u0627\u0632 \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React App \u0686\u06cc\u0633\u062a\u061f\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"\u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u06a9\u0647 \u0628\u0627 \u0646\u0627\u0645 \u0627\u062e\u062a\u0635\u0627\u0631\u06cc SSR \u0646\u06cc\u0632 \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0631\u0648\u0634\u06cc \u0628\u0631\u0627\u06cc \u0631\u0646\u062f\u0631\u200c\u06af\u0631\u0641\u062a\u0646 \u0627\u0632 \u0648\u0628\u200c\u200c\u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u062a\u06a9\u200c\u0635\u0641\u062d\u0647\u200c\u0627\u06cc (SPA) \u0627\u0633\u062a. \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062a\u06a9\u0646\u06cc\u06a9\u060c \u0635\u0641\u062d\u0647 \u0645\u062f\u0646\u0638\u0631 \u0627\u0628\u062a\u062f\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u0644\u0648\u062f \u0648 \u0633\u067e\u0633 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"\u0645\u0632\u0627\u06cc\u0627\u06cc SSR \u0686\u06cc\u0633\u062a\u061f\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"\u0645\u0647\u0645\u200c\u062a\u0631\u06cc\u0646 \u0645\u0632\u06cc\u062a \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af server-side\u060c \u0627\u0631\u062a\u0642\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0648 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0631\u0639\u062a \u0633\u06cc\u0633\u062a\u0645 \u0627\u0633\u062a\u061b \u0686\u0631\u0627\u06a9\u0647 \u0628\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0631\u0648\u0634\u060c \u0635\u0641\u062d\u0647 \u0645\u0627 \u0627\u0628\u062a\u062f\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u0644\u0648\u062f \u0648 \u0628\u0639\u062f\u0627\u0632\u0622\u0646 \u0628\u0627 \u0627\u0648\u0644\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0632 \u0633\u0631\u0648\u0631 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0628\u0647\u200c\u0639\u0644\u0627\u0648\u0647 \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062a\u06a9\u0646\u06cc\u06a9\u060c \u0645\u0637\u0645\u0626\u0646 \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0648\u062f \u06a9\u0647 \u0647\u0645\u0647 \u0627\u0650\u0644\u0650\u0645\u0627\u0646\u200c\u0647\u0627\u06cc \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u0634\u0645\u0627 \u0631\u0646\u062f\u0631 \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f\u061b \u0632\u06cc\u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634\u060c \u0631\u0646\u062f\u0631 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0645\u062a\u06a9\u06cc \u0646\u06cc\u0633\u062a.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"\u0645\u0639\u0627\u06cc\u0628 SSR \u0686\u06cc\u0633\u062a\u061f\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"\u0628\u0632\u0631\u06af\u200c\u062a\u0631\u06cc\u0646 \u0636\u0639\u0641 SSR \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u062d\u062a\u0648\u0627\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u062e\u0634\u06cc \u0627\u0632 HTML \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u0646\u06cc\u0633\u062a\u0646\u062f\u060c \u062a\u0632\u0631\u06cc\u0642 \u06a9\u0646\u062f (\u0645\u062b\u0644 \u062c\u0627\u0648\u0627\u200c\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0633\u0631\u0648\u06cc\u0633\u200c\u0647\u0627\u06cc \u0634\u062e\u0635 \u062b\u0627\u0644\u062b \u0648\u0627\u0631\u062f \u0633\u06cc\u0633\u062a\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f). \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0639\u0636\u06cc \u0627\u0632 \u0645\u062d\u062a\u0648\u0627\u0647\u0627\u06cc \u0635\u0641\u062d\u0647 (\u0645\u0627\u0646\u0646\u062f \u0645\u062d\u062a\u0648\u0627\u0647\u0627\u06cc UGC) \u0628\u0647 \u0631\u0628\u0627\u062a\u200c\u0647\u0627\u06cc \u0645\u0648\u062a\u0648\u0631\u0647\u0627\u06cc \u062c\u0633\u062a\u200c\u0648\u062c\u0648 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0646\u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"\u0622\u06cc\u0627 \u0631\u0648\u0646\u062f \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc SSR \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u06cc\u06a9\u0633\u0627\u0646 \u0627\u0633\u062a\u061f\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"\u062e\u06cc\u0631\u060c \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647\u200c\u062a\u0631 \u0645\u0631\u0627\u062d\u0644 \u0627\u0646\u062c\u0627\u0645 \u06a9\u0627\u0631 \u06a9\u0645\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f\u061b \u0686\u0631\u0627\u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647\u060c SSR \u0628\u0627\u0631 \u0632\u06cc\u0627\u062f\u06cc \u0631\u0627 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"\u0622\u06cc\u0627 \u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React App \u0628\u0631\u0627\u06cc \u0633\u0626\u0648 \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u0647\u0645 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a\u061f\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"\u0628\u0644\u0647\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 SSR \u062f\u0631 \u062f\u0648 \u0635\u0648\u0631\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0642\u062f\u0645\u06cc \u0645\u062b\u0628\u062a \u0628\u0631\u0627\u06cc \u0633\u0626\u0648 \u0633\u0627\u06cc\u062a \u0647\u0645 \u0645\u062d\u0633\u0648\u0628 \u0634\u0648\u062f: \u06f1. \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u06cc\u0646\u062f\u06a9\u0633\u200c\u06a9\u0631\u062f\u0646 \u06a9\u062f\u0647\u0627\u06cc \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0635\u0641\u062d\u0627\u062a \u0648\u0628\u200c\u0633\u0627\u06cc\u062a \u0628\u0627 \u0645\u0634\u06a9\u0644\u0627\u062a\u06cc \u0647\u0645\u0631\u0627\u0647 \u0627\u0633\u062a\u061b \u06f2. \u0648\u0642\u062a\u06cc\u200c \u0634\u0628\u06a9\u0647\u200c\u0627\u06cc \u06a9\u064f\u0646\u062f \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u062f\u0627\u0646\u0644\u0648\u062f \u0628\u0627\u0646\u062f\u0644 \u0628\u0632\u0631\u06af \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u062f\u0686\u0627\u0631 \u0627\u062e\u062a\u0644\u0627\u0644 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a.\"\n    }\n  }]\n}\n<\/script><\/p>\n<h3><span style=\"color: #0000ff;\">\u0645\u0646\u0628\u0639:<\/span><\/h3>\n<p><a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/react-server-side-rendering\" target=\"_blank\" rel=\"noopener nofollow\">digitalocean<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0631\u0646\u062f\u0631\u06cc\u0646\u06af \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc React App \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0635\u0648\u0631\u062a \u06a9\u0627\u0645\u0644 \u0622\u0645\u0648\u0632\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647\u200e\u200c\u0627\u0633\u062a. \u0628\u0627 \u0645\u0627 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n","protected":false},"author":70,"featured_media":35236,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[],"class_list":["post-26107","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-learn-server"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/posts\/26107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/users\/70"}],"replies":[{"embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/comments?post=26107"}],"version-history":[{"count":4,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/posts\/26107\/revisions"}],"predecessor-version":[{"id":50004,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/posts\/26107\/revisions\/50004"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/media\/35236"}],"wp:attachment":[{"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/media?parent=26107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/categories?post=26107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parspack.com\/blog\/wp-json\/wp\/v2\/tags?post=26107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}