学习react也有一段时间了,使用react后首页渲染的速度与seo一直不理想。打算研究一下react神奇服务端渲染。
react服务端渲染只能使用nodejs做服务端语言实现前后端同构,在后台对react组件进行解析并生成html字符串后返回视图页面。
后台为什么可以解析react组件?因为Node.js是一个Javascript运行环境,nodejs与javascript语法基本是相同的,所以nodejs可以正常解析react组件。
一、准备动作
1、安装nodejs与安装express
安装nodejs教程:https://www.jb51.net/article/33086.htm
安装express教程:https://www.jb51.net/article/36710.htm
2、安装node-jsx(使nodejs支持jsx语法)
$ npm install node-jsx
3、安装ejs模板引擎
$ npm install ejs
4、选用ejs模板引擎解析html视图文件(配置express框架应用的app.js),需修改配置如下:
var ejs = require('ejs');
app.engine('.html',ejs.__express); //使用ejs模板引擎解析html视图文件
app.set('view engine', 'html');
二、具体实现如下:
express路由:
"use strict";
var express = require('express');
var router = express.Router(); require("node-jsx").install(); //安装"node-jsx",安装该模块可以使nodejs兼容jsx语法
var React=require("react");
var Com=require('../component/test.js').Component //引入react组件
router.get('/', function(req, res, next) {
var html=React.renderToString(Com({name:"dudeyouth"})) //向组件传参,并使用renderToString方法解析成html字符串
res.render("index",{component:html}); //渲染到界面
});
module.exports = router;
react组件:
"use strict";
var React=require("react");
var Component=React.Component;
class Test extends Component{
render(){
return <h1>{this.props.name}</h1>;
}
}
module.exports={"Component":function(props){
return <Test {...props}/>
}};
视图(使用了ejs模板引擎):
<html>
<head>
<title>DudeYouth博客</title>
<meta charset="utf-8" />
<link href="css/index.css" rel="external nofollow" rel="stylesheet"/>
<link href="css/style.css" rel="external nofollow" rel="stylesheet"/>
</head>
<body>
<div id="container"><%-component%></div> <!--使用ejs模板解析后的html字符串-->
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“详解react服务端渲染(同构)的方法”评论...
更新日志
2025年10月24日
2025年10月24日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]