使用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的开源工具PACKER2.0.2
Nov 04 Javascript
获取JavaScript用户自定义类的类名称的代码
Mar 08 Javascript
JS 类型转换常见方法小结
May 31 Javascript
使用jQuery实现的掷色子游戏动画效果
Mar 14 Javascript
js子页面获取父页面数据示例
May 15 Javascript
JavaScript判断变量是否为空的自定义函数分享
Jan 31 Javascript
javascript操作符"!~"详解
Feb 10 Javascript
JS把内容动态插入到DIV的实现方法
Jul 19 Javascript
AngularJS基础 ng-options 指令详解
Aug 02 Javascript
Bootstrap源码解读导航条(7)
Dec 23 Javascript
javascript  数组排序与对象排序的实例
Jul 17 Javascript
详解node字体压缩插件font-spider的用法
Sep 28 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
PHP比你想象的好得多
2014/11/27 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
js实现匹配时换色的输入提示特效代码
2015/08/17 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
详解Bootstrap插件
2016/04/25 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
js实现蒙版效果
2020/01/11 Javascript
Python返回真假值(True or False)小技巧
2015/04/10 Python
用Python中的字典来处理索引统计的方法
2015/05/05 Python
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
python实现名片管理系统项目
2019/04/26 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
招聘单位介绍信
2014/01/14 职场文书
市场营销求职信范文
2014/02/21 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
优秀班集体申报材料
2014/12/25 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
python ansible自动化运维工具执行流程
2021/06/24 Python