Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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 是否可以使用Express和React预渲染服务器端代码?_Javascript_Node.js_Express_Reactjs - Fatal编程技术网

Javascript 是否可以使用Express和React预渲染服务器端代码?

Javascript 是否可以使用Express和React预渲染服务器端代码?,javascript,node.js,express,reactjs,Javascript,Node.js,Express,Reactjs,我有一个简单的Pokedex站点,所以它都是静态内容 为了学习一些新东西,我用React、Express、Node和Redis构建了它。这些页面在服务器端呈现。Express接收slug,从Redis获取数据并将其传递给React React在我的构建中基本上是一种美化的模板语言,我知道这并不是React的最佳用途,因为我没有使用状态等 是否可以像请求url一样遍历所有口袋妖怪,并将输出的HTML保存为自己的页面? 这将使页面加载速度更快,但也将服务器必须完成的工作量降至最低,从而节省资金和负载

我有一个简单的Pokedex站点,所以它都是静态内容

为了学习一些新东西,我用React、Express、Node和Redis构建了它。这些页面在服务器端呈现。Express接收slug,从Redis获取数据并将其传递给React

React在我的构建中基本上是一种美化的模板语言,我知道这并不是React的最佳用途,因为我没有使用状态等

是否可以像请求url一样遍历所有口袋妖怪,并将输出的HTML保存为自己的页面?


这将使页面加载速度更快,但也将服务器必须完成的工作量降至最低,从而节省资金和负载。这也是不必要的,因为pikachu页面和所有其他mons页面都是一样的。我知道我可能是用错误的方法建造了这个,但我很好奇这是否可能。

是的。这可以通过以下方式实现:

与renderToString类似,只是它不会创建额外的DOM属性,如react内部使用的data react id。如果您想将React用作一个简单的静态页面生成器,这非常有用,因为去掉额外的属性可以节省大量字节

您可以使用如下代码:

var React = require('react');
var ReactDOMServer = require('react-dom/server');
var Component = require('./MyComponent');

var output = ReactDOMServer.renderToStaticMarkup(
  React.createElement(
    Component, {
      prop1: 'value'
    }
  )
);
或者,如果您正在使用JSX:

var React = require('react');
var ReactDOMServer = require('react-dom/server');
var Component = require('./MyComponent');

var output = ReactDOMServer.renderToStaticMarkup(
  <Component prop1="value" />
);
var React=require('React');
var ReactDOMServer=require('react-dom/server');
var Component=require('./MyComponent');
var output=ReactDOMServer.renderToStaticMarkup(
);

(请注意,这只是示例代码,用于演示如何调用
renderToStaticMarkup
方法)。

是。这可以通过以下方式实现:

与renderToString类似,只是它不会创建额外的DOM属性,如react内部使用的data react id。如果您想将React用作一个简单的静态页面生成器,这非常有用,因为去掉额外的属性可以节省大量字节

您可以使用如下代码:

var React = require('react');
var ReactDOMServer = require('react-dom/server');
var Component = require('./MyComponent');

var output = ReactDOMServer.renderToStaticMarkup(
  React.createElement(
    Component, {
      prop1: 'value'
    }
  )
);
或者,如果您正在使用JSX:

var React = require('react');
var ReactDOMServer = require('react-dom/server');
var Component = require('./MyComponent');

var output = ReactDOMServer.renderToStaticMarkup(
  <Component prop1="value" />
);
var React=require('React');
var ReactDOMServer=require('react-dom/server');
var Component=require('./MyComponent');
var output=ReactDOMServer.renderToStaticMarkup(
);

(请注意,这只是示例代码,旨在演示如何调用
renderToStaticMarkup
方法)。

太好了,谢谢!出于兴趣,您会推荐这种方法还是缓存代理?太好了,谢谢!出于兴趣,您会推荐这种方法还是缓存代理?