使用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 相关文章推荐
jQuery事件绑定.on()简要概述及应用
Feb 07 Javascript
js this函数调用无需再次抓获id,name或标签名
Mar 03 Javascript
Javascript刷新窗口方法小结
Oct 21 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
Nov 24 Javascript
8 行 Node.js 代码实现代理服务器
Dec 05 Javascript
js实现鼠标左右移动,图片也跟着移动效果
Jan 25 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
Nov 05 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
Jan 21 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
Apr 29 Javascript
vue props对象validator自定义函数实例
Nov 13 Javascript
js实现无缝轮播图插件封装
Jul 31 Javascript
vant 自定义 van-dropdown-item的用法
Aug 05 Javascript
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
文件上传的实现
2006/10/09 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
Python写的服务监控程序实例
2015/01/31 Python
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
基于MTCNN/TensorFlow实现人脸检测
2018/05/24 Python
python安装pil库方法及代码
2019/06/25 Python
python实现快递价格查询系统
2020/03/03 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
使用Python构造hive insert语句说明
2020/06/06 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
厂长助理岗位职责
2013/12/27 职场文书
社团文化节邀请函
2014/01/10 职场文书
捐助倡议书范文
2014/04/15 职场文书
公司合作协议范文
2014/10/01 职场文书
党校党性分析材料
2014/12/19 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android