使用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 实现TreeView CheckBox全选效果
Jan 11 Javascript
js函数在frame中的相互调用详解
Mar 03 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
May 28 Javascript
jquery简单实现幻灯片的方法
Aug 03 Javascript
js实现界面向原生界面发消息并跳转功能
Nov 22 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
Feb 17 Javascript
详解利用 Express 托管静态文件的方法
Sep 18 Javascript
Vue2.0点击切换类名改变样式的方法
Aug 22 Javascript
jQuery常见的遍历DOM操作详解
Sep 05 jQuery
详解npm 配置项registry修改为淘宝镜像
Sep 07 Javascript
使用JavaScript获取Django模板指定键值数据
May 27 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 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动态图像的创建
2006/10/09 PHP
PHP学习之PHP表达式
2006/10/09 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
xtree.js 代码
2007/03/13 Javascript
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
JavaScript常用验证函数实例汇总
2014/11/25 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
关于vue面试题汇总
2018/03/20 Javascript
基于vue-video-player自定义播放器的方法
2018/03/21 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
js中的闭包实例展示
2018/11/01 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
python+pygame实现坦克大战
2019/09/10 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
Python如何生成xml文件
2020/06/04 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
农场厂长岗位职责
2013/12/28 职场文书
金融管理应届生求职信
2014/02/20 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
厂区绿化方案
2014/05/08 职场文书
春节超市活动方案
2014/08/14 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
工作表现证明
2015/06/15 职场文书
《给予树》教学反思
2016/03/03 职场文书
高中班主任寄语
2019/06/21 职场文书