使用Node搭建reactSSR服务端渲染架构


Posted in Javascript onAugust 30, 2018

如题;本文所讲架构主要用到技术栈有: Node, Express, React, Mobx, webpack4, ES6, ES7, axios, ejs,  log4js, scss,echarts,ant desige

SSR的概念

Server Slide Rendering,缩写为 ssr,即服务器端渲染,因为是后端出身,所以其实早就明白是怎么回事,只是没这个具体名词的概念罢了,这个词被频繁提起也是拜近年来前端飞速发展所赐,主要针对 SPA应用,目的大概有以下几个:

解决单页面应用的 SEO

单页应用页面大部分主要的 HTML并不是服务器返回,服务器只是返回一大串的 脚本,页面上看到的大部分内容都是由脚本生成,对于一般网站影响不大,但是对于一些依赖搜索引擎带来流量的网站来说则是致命的,搜索引擎无法抓取页面相关内容,也就是用户搜不到此网站的相关信息,自然也就无流量可言。

解决渲染白屏

因为页面 HTML由服务器端返回的脚本生成,一般来说这种脚本的体积都不会太小,客户端下载需要时间,浏览器解析以生成页面元素也需要时间,这必然会导致页面的显示速度比传统服务器端渲染得要慢,很容易出现首页白屏的情况,甚至如果浏览器禁用了 JS,那么将直接导致页面连基本的元素都看不到。使用Express初始化Node服务

开始本项目首先你的电脑要安装有node,npm这个没什么好说的。其次本次Node服务用的框架是express;所以要安装: express-generator

然后使用express your-project初始化你的express项目

npm install express-generator -g
//执行这条命令全局安装express-generator,如果你不想全局安装把-g去掉即可

初始化express项目之后我们开始把react,webpack整合到这个node服务上。

初始化React项目并整合webpack

这里整合webpack使用的是webpack4的版本,如果你熟悉vue-cli(vue-cli3之前的版本)的话你应该会知道webpack配置有多少个文件,这里参考了vue-cli生成的webpack配置。

添加src文件夹

src文件夹下的内容都是整个react的一些核心配置,如请求处理,css样式,公共组件,路由,页面,stores全局状态数据。

配置.babelrc

因为用到ES6,ES7语法所以要配置.babelrc文件。这个文件东西不多下面直接贴出代码

{
 "presets": [["es2015", { "modules": false }], "react", "stage-0"],
 "plugins": [
 "transform-decorators-legacy",
 ["import", { "libraryName": "antd", "style": "css" }],
 "transform-runtime"
 ]
}

修改Node服务app.js

其实主要是加上这句:app.use('/', reactSSR); 其就是为了项目启动的时候开启热更新并渲染views中reactSSR.ejs这个模板引擎文件从而达到服务端渲染的目的。

项目结构

这里把项目主要的文件夹结构放到最后。

使用Node搭建reactSSR服务端渲染架构

项目GitHub地址: https://github.com/Uwah/node-react

后期部署上服务器之后会找个时间更新博客,主要是用到pm2

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
Nov 16 Javascript
namespace.js Javascript的命名空间库
Oct 11 Javascript
javascript break指定标签打破多层循环示例
Jan 20 Javascript
JS 在指定数组中随机取出N个不重复的数据
Jun 10 Javascript
JS日期加减,日期运算代码
Nov 05 Javascript
基于jquery实现省市区三级联动效果
Dec 25 Javascript
微信小程序 下拉菜单的实现
Apr 06 Javascript
JavaScript调试之console.log调试的一个小技巧分享
Aug 07 Javascript
jQuery选择器之属性筛选选择器用法详解
Sep 19 jQuery
vue弹窗组件使用方法
Apr 28 Javascript
vue展示dicom文件医疗系统的实现代码
Aug 27 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
Feb 25 Vue.js
webpack4+Vue搭建自己的Vue-cli项目过程分享
Aug 29 #Javascript
JS实现的input选择图片本地预览功能示例
Aug 29 #Javascript
简述vue状态管理模式之vuex
Aug 29 #Javascript
jQuery实现的简单手风琴效果示例
Aug 29 #jQuery
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
Aug 29 #Javascript
jQuery实现的淡入淡出图片轮播效果示例
Aug 29 #jQuery
JS实现数组的增删改查操作示例
Aug 29 #Javascript
You might like
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
php事务处理实例详解
2014/07/11 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
js中获取事件对象的方法小结
2011/03/13 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
解析Jquery的LigerUI如何实现文件上传
2013/07/09 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
Vue2.0生命周期的理解
2018/08/20 Javascript
js实现盒子拖拽动画效果
2020/08/09 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
Python 连连看连接算法
2008/11/22 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
pandas 根据列的值选取所有行的示例
2018/11/07 Python
python 二维数组90度旋转的方法
2019/01/28 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
Lampenwelt德国:欧洲领先的灯具和照明在线商店
2018/08/05 全球购物
清明节扫墓活动方案
2014/03/02 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
大班上学期幼儿评语
2014/04/30 职场文书
优秀少先队工作者事迹材料
2014/05/13 职场文书
活动总结格式
2014/08/30 职场文书
乌镇导游词
2015/02/02 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server
如何有效防止sql注入的方法
2021/05/25 SQL Server
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android