范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

说说React服务端渲染怎么做?

  在SSR中,我们了解到Server-Side Rendering ,简称SSR,意为服务端渲染
  指由服务侧完成页面的 HTML 结构拼接的页面处理技术,发送到浏览器,然后为其绑定状态与事件,成为完全可交互页面的过程
  其解决的问题主要有两个: SEO,由于搜索引擎爬虫抓取工具可以直接查看完全渲染的页面 加速首屏加载,解决首屏白屏问题
  在react中,实现SSR主要有两种形式: 手动搭建一个 SSR 框架 使用成熟的SSR 框架,如 Next.JS
  这里主要以手动搭建一个SSR框架进行实现
  首先通过express启动一个app.js文件,用于监听3000端口的请求,当请求根目录时,返回HTML,如下: const express = require("express") const app = express() app.get("/", (req,res) => res.send(`             ssr demo                Hello world      `))  app.listen(3000, () => console.log("Exampleapp listening on port 3000!"))
  然后再服务器中编写react代码,在app.js中进行应引用 import React from "react"  const Home = () =>{      return home  }  export default Home
  为了让服务器能够识别JSX,这里需要使用webpakc对项目进行打包转换,创建一个配置文件webpack.server.js并进行相关配置,如下: const path = require("path")    //node的path模块 const nodeExternals = require("webpack-node-externals")  module.exports = {     target:"node",     mode:"development",           //开发模式     entry:"./app.js",             //入口     output: {                     //打包出口         filename:"bundle.js",     //打包后的文件名         path:path.resolve(__dirname,"build")    //存放到根目录的build文件夹     },     externals: [nodeExternals()],  //保持node中require的引用方式     module: {         rules: [{                  //打包规则            test:   /.js?$/,       //对所有js文件进行打包            loader:"babel-loader",  //使用babel-loader进行打包            exclude: /node_modules/,//不打包node_modules中的js文件            options: {                presets: ["react","stage-0",["env", {                                    //loader时额外的打包规则,对react,JSX,ES6进行转换                     targets: {                         browsers: ["last 2versions"]   //对主流浏览器最近两个版本进行兼容                     }                }]]            }        }]     } }
  接着借助react-dom提供了服务端渲染的 renderToString方法,负责把React组件解析成html import express from "express" import React from "react"//引入React以支持JSX的语法 import { renderToString } from "react-dom/server"//引入renderToString方法 import Home from"./src/containers/Home"  const app= express() const content = renderToString() app.get("/",(req,res) => res.send(`             ssr demo                 ${content}      `))  app.listen(3001, () => console.log("Exampleapp listening on port 3001!"))
  上面的过程中,已经能够成功将组件渲染到了页面上
  但是像一些事件处理的方法,是无法在服务端完成,因此需要将组件代码在浏览器中再执行一遍,这种服务器端和客户端共用一套代码的方式就称之为 同构
  重构通俗讲就是一套React代码在服务器上运行一遍,到达浏览器又运行一遍: 服务端渲染完成页面结构 浏览器端渲染完成事件绑定
  浏览器实现事件绑定的方式为让浏览器去拉取JS文件执行,让JS代码来控制,因此需要引入script标签
  通过script标签为页面引入客户端执行的react代码,并通过express的static中间件为js文件配置路由,修改如下: import express from "express" import React from "react"//引入React以支持JSX的语法 import { renderToString } from"react-dom/server"//引入renderToString方法 import Home from "./src/containers/Home"   const app = express() app.use(express.static("public")); //使用express提供的static中间件,中间件会将所有静态文件的路由指向public文件夹  const content = renderToString()   app.get("/",(req,res)=>res.send(`             ssr demo                 ${content}          `))   app.listen(3001, () =>console.log("Example app listening on port 3001!"))
  然后再客户端执行以下react代码,新建webpack.client.js作为客户端React代码的webpack配置文件如下: const path = require("path")                    //node的path模块  module.exports = {     mode:"development",                         //开发模式     entry:"./src/client/index.js",              //入口     output: {                                   //打包出口         filename:"index.js",                    //打包后的文件名         path:path.resolve(__dirname,"public")   //存放到根目录的build文件夹     },     module: {         rules: [{                               //打包规则            test:   /.js?$/,                    //对所有js文件进行打包            loader:"babel-loader",               //使用babel-loader进行打包            exclude: /node_modules/,             //不打包node_modules中的js文件            options: {                presets: ["react","stage-0",["env", {                          //loader时额外的打包规则,这里对react,JSX进行转换                     targets: {                         browsers: ["last 2versions"]   //对主流浏览器最近两个版本进行兼容                     }                }]]            }        }]     } }

我们把钱存在银行,不认识什么新财富!谁对河南村镇银行储户损失负责?资料图从今年4月中旬至今,河南多家村镇银行提现难已经发酵两个月之久,提现难的原因也开始逐渐清晰起来相关部门作出最新回应,部分银行线上交易系统被河南新财富集团操控和利用。但北京商报记镜报伯明翰目前的收购形式不明朗,巴西尼仍然有贷款没有还清直播吧6月20日讯据镜报报道,伯明翰目前的收购情况依然不明朗,伯明翰已经要求巴西尼在收购最后期限之前作出决定。巴西尼在之前经营沃特福德时有着失败的经历,另外他还曾经试图接管奥尔德姆一个太监波澜壮阔的一生说起历史上有名的太监,大家也许会想到赵高魏忠贤安德海。。但这次我要说的是另一个在历史上名垂千古的太监伟人,那个曾创下七次下西洋壮举的航海家郑和,那个始终胸怀梦想的追海少年。下面,我即日起江苏取消国五非营运小客车转入限制记者获悉,按照国务院省政府有关工作要求,自今天(6月17日)起,江苏取消对符合国五排放标准小型非营运载客汽车的转入限制。公安机关交通管理部门将按照机动车登记规定(公安部令第164号有些路,只能一个人走从前,听阿桑的一首歌叶子,歌里唱着,我一个人吃饭,旅行,到处走走停停,也一个人看书写信,自己对话谈心。原来失去一个人那么心酸。怕孤单,努力融入一个又一个圈子,又忙又累,还安慰自己,好消息国际油价下跌!美油跌超6。8,七周连涨的态势,终结了好消息来了!国际原油价格出现暴跌迹象,而后续的油价有望下调。国际原油市场上爆发了令人喜笑颜开的消息,那就是原油价格出现了暴跌。2022年6月17日,国际WTI原油的价格直接从每桶1会影响我国吗?日本为富士山可能喷发做准备,会引发无夏之年吗?这段时间,日本警察厅已经开始为富士山可能喷发做全面准备。这也让日本民众,以及我国网友对日本富士山何时喷发表示了担忧。尤其是日本科学家曾经说过富士山何时喷发都不稀奇。从喷发记录和富士我对你来说可有可无需要我的时候百般讨好,不需要时连信息都不回原来这才是我的老爸是我自作多情爱上了你,爱上你让我如此的卑微和没有尊严,我对你来说可有可无,需要我的时候百般讨好,不需要时连回个信息都没有时间,一个人维持的爱不算爱,我累了,真的累老人说,三树开花,不富也发,只要开花,就是好兆头现在很多人都喜欢养绿植,点缀家里,打造自己的舒适空间,拥有自己的小花园。其实很多人都喜欢养开花的绿植,一年四季开花才好呢!其实我们生活中有些花你养好了,也是一年开花不断的,比如月季福建海军的历史渊源中国第三艘航母福建舰在亿万国人的关注之下,顺利下水。舷号为18的满载排水量8万余吨,采用平直通长飞行甲板,配置电磁弹射和阻拦装置,由我国完全自主设计建造的首艘弹射型航空母舰被命名为我们可能遭遇比08年次贷危机更严峻的货币信用危机,必须建立世代相安的绿色货币政策近日,美联储宣布加息75个基点,创28年来最大增幅。不少国内外经济学者都讲到了沃尔克时机再次来临。然而,沃尔克加息的时期,美国是债权国。此刻世界最大的债务国不能抄旧作业,加息之路充
出国留学留学生机票可以为你省钱收到了海外大学录取通知书,很多同学第一件事就是查看机票。如果把握好时机,买到留学生机票,说不定可以在机票开销上省下一大笔。最佳订票时间出行前的三个月一般在出行前的两三个月,是出国机人物故事21岁的00后女孩杨倩火了,火得实至名归2021年7月24日,在东京奥运会女子10米气步枪决赛中,中国00后小将杨倩以251。8环的成绩夺得冠军。这是中国奥运代表团在东京的首金,也是东京奥运会产生的首枚金牌。21岁的00以奋斗为曲,谱青春之歌高中高考高考作文自己写的,有问题还请各位大佬指出,好的部分大家也可以借鉴。九万里云路,鲲鹏抟扶乘天地八千里浩海,精卫御石斗苍茫一百年理想,青年立志谋复兴。生逢其时,重任在肩,立鸿鹄方圆谈坚持勤俭办一切事业近日,关于提高中央行政事业单位国有资产管理效能坚持勤俭办一切事业的实施意见印发。从严格资产配置处置严控资产运行耗费提升资产保障能力强化计划预算控制推动管理方式转型涵养勤俭节约风尚六高层次的世界里,只有利益和得失,至于感情和道德,皆是手段有句话叫花半秒钟看透事物本质的人,和花一辈子看不透事物本质的人,注定有着截然不同的两种结局。我想问的是这句话究竟表达的是表象,还是本质?可能有人会说这句话说的是事实,原因就是它看起杜兰特东契奇联手能否成为现实?独行侠篮网湖人三方交易可能实现若说本赛季最神奇球队,那么达拉斯独行侠一定榜上有名。东契奇率领的这支球队,它能面对战绩排名联盟垫底前三甲球队依次输一遍,也能离奇输掉一些本来可以取胜的比赛,但它也不乏落后逆境中最终勇士对凯尔特人来说无疑是一个残酷的现实杰森塔图姆和波士顿凯尔特人害怕斯蒂芬库里和金州勇士。上周六,勇士队在202223赛季淘汰了联盟最好的球队之后,这一点就很明显了。随着金州勇士队在这个赛季的挣扎和凯尔特人队的失利,人注意!滴滴又有这些调整,与司机利益相关最近,据介绍,滴滴最近有了不少调整动作,以维护和优化运力结构,其中这些涉及到司机利益的值得引起大家的注意。首先,口碑值新版上线,这次的改版有比较大的调整,主要体现在安全分和服务分方文案那些激励人们拥抱现实自我救赎的句子1你若问人问题,他答非所问,便已是答了,毋需再问。2这个世纪疯狂,没人性,腐败。你却一直清醒,温柔,一尘不染。3从前日色变得慢,车,马,邮件都慢。一生只够爱一个人。4很多时候,咨询天哪,能量还守恒吗?都知道,能量守恒定律即为一个系统的总能量的改变只能等于传入或者传出该系统的能量的多少。总能量为系统的机械能热能及除热能以外的任何内能形式的总和。早在2013年,根据人民网消息,美国全球最大豪华邮轮,比顶级航母还要大!皇家加勒比的海上城市世界上豪华的邮轮有很多,但像皇家加勒比海洋奇迹号这样堪称海上城市的,却屈指可数。海洋奇迹号今年4月在欧洲下水首航,还是一条妥妥的新船,现在主要运营加勒比海航线。作为皇家加勒比绿洲系