使用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 String 的扩展方法集合
Jun 01 Javascript
基于jquery的表格排序
Sep 11 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
Feb 11 Javascript
jQuery之日期选择器的深入解析
Jun 19 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
Nov 20 Javascript
原生javascript实现图片弹窗交互效果
Jan 12 Javascript
修改Jquery Dialog 位置的实现方法
Aug 26 Javascript
JavaScript-html标题滚动效果的简单实现
Sep 08 Javascript
angular源码学习第一篇 setupModuleLoader方法
Oct 20 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
Aug 03 Javascript
vue2配置scss的方法步骤
Jun 06 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
Apr 03 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
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
python编程的核心知识点总结
2021/02/08 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
工作自荐信
2013/12/11 职场文书
财务主管自我鉴定
2014/01/17 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
研发工程师岗位职责
2014/04/28 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
车辆管理制度范本
2015/08/05 职场文书
2016年万圣节家长开放日活动总结
2016/04/05 职场文书
会议承办单位欢迎词
2019/07/09 职场文书
创业计划书详解
2019/07/19 职场文书
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers