实例演示:使用React服务器端渲染提高网站速度 (react服务器端渲染 实例)

最近几年,React已经成为了前端开发的主流技术之一。许多公司和个人都在使用React来构建高效、可扩展的Web应用程序,以改善用户体验和网站速度。与此同时,React的服务器端渲染(SSR)在Web开发中的应用也越来越受欢迎。

SSR是指在服务器上将React组件呈现为HTML字符串,然后将其发送到浏览器上。这种方法比传统的客户端渲染(CSR)速度更快,因为它减少了浏览器加载和渲染React组件的负担。SSR还提供了更好的SEO和更友好的用户体验,因为页面渲染速度更快,用户可以更快地查看到所需的内容。本文将介绍如何使用React SSR来提高网站速度,并提供实例演示。

步骤一:创建React应用程序

您需要创建一个基本的React应用程序。您可以使用Create React App或手动创建项目。在这里,我们将使用Create React App来创建应用程序。打开终端并运行以下命令:

“`

npx create-react-app react-ssr

cd react-ssr

“`

运行以上命令将创建一个名为“react-ssr”的React应用程序。现在,在终端中运行以下命令以启动服务器:

“`

npm start

“`

现在,您的React应用程序已经运行在localhost:3000上。您可以在Web浏览器中打开该URL以查看您的React应用程序。

步骤二:添加后端服务器

接下来,我们将为您的React应用程序添加一个服务器,以便使用SSR。您可以使用任何服务器框架,如Express或Koa。

在这里,我们将使用Express。打开终端并运行以下命令以安装Express:

“`

npm install express

“`

现在,您可以在项目根目录中创建一个名为server.js的文件,并在其中添加以下代码:

“`javascript

const express = require(‘express’);

const path = require(‘path’);

const React = require(‘react’);

const ReactDOMServer = require(‘react-dom/server’);

const App = require(‘./src/App’);

const app = express();

app.use(express.static(path.join(__dirname, ‘build’)));

app.get(‘/’, (req, res) => {

const html = ReactDOMServer.renderToString();

res.send(`

React SSR

${html}

`);

});

app.listen(9000);

“`

这个文件创建了一个名为app的Express应用程序,并添加一个中间件,用于提供静态文件,如CSS和JavaScript。然后,它定义了一个路由,用于将React应用程序呈现为HTML字符串。在这里,我们使用ReactDOMServer.renderToString()将组件呈现为HTML字符串。我们将这个HTML字符串作为响应发送到客户端。

步骤三:运行您的应用程序

现在,您可以在终端中运行以下命令启动服务器:

“`

node server.js

“`

现在,您可以在Web浏览器中访问http://localhost:9000/并查看您的React应用程序。如果您查看源代码,您将看到服务器端呈现的HTML字符串。

在这里,我们已经介绍了如何使用React SSR来提高网站速度。虽然这只是一个简单的例子,但它演示了React SSR的工作原理。通过使用React SSR,您可以减少浏览器的负担,并提供更好的SEO和更快的用户体验。

相关问题拓展阅读:

reactdom.render 怎么添加class

这个是react最新版api,也就是0.14版本做出的改变。主要是为了使React能在更多的不同环境下更快、更容易构建。于是把react分成了react和react-dom两个部分。这样就为web版的react和移动端凳游型的React Native共享组件铺平了道路。也就是说我们可以跨平台使用相同的react组件。

新的react包包含了React.createElement,.createClass,.Component,.PropTypes,.children以及其他元素和组件类。这些都是你需要构建组件时助手。

而react-dom包包括ReactDOM.render,.unmountComponentAtNode和.findDOMNode。在 react-dom/枣猜server ,有ReactDOMServer.renderToString和.renderToStaticMarkup服务器端渲染支持。

总的来说,两者的区别就是:ReactDom是React的一部分。ReactDOM是React和DOM之间的粘合剂,一般用来定义单一的组件,或者结合ReactDOM.findDOMNode()来使用。更重要的是ReactDOM包已经允许开磨岁发者删除React包添加的非必要的代码,并将其移动到一个更合适的存储库。

我由Angular转向React,为什么

React速度很快

  与其它框架相比,React采取了一种特立独行的操作DOM的方式。

  它并不直接对DOM进行操作。

  它引入了团宏亩一个叫做虚拟DOM的概念,安插在JavaScript逻辑和实际的DOM之间。

  这一概念提高了Web性能。在UI渲染过程中,React通过在虚拟DOM中的微操作来实对现实际DOM的局部更新。

跨浏览器兼容

  虚拟DOM帮助我们解决了跨浏览器问题,它为我们提供了标准化的API,甚至在IE8中都是没问题的。

  模块化

  为程序编写独立的模块化UI组件,这样当某个或某些组件出现问题是,可以方便地进行隔离。

  每个组件都可以进行独立的开发和测试,并且它们可以引入其它组件。这等同于提高了代码的可维护性。

  单向数据流让事情一目了然

  Flux是一个用于在JavaScript应用中创建单向数据层的架构,它随着React视图库的开发而被Facebook概念化。它只是一个概念,而非特定工具的实现。它可以被其它框架吸纳。例如,Alex Rattray有一个很好的Flux实例,在React中使用了Backbone的和模型。

  纯粹的JavaScript

  现代Web应用程序与传统的Web应用有着不同的工作方式。

  例如,视图层的更新需要通过用户交互而不需要请求服务器。因此视图和控制器非常依赖彼此。

  许多框架使用Handlebars或Mustache等模板引擎来处理视图层。但React相信视图和控制器应该相互依存在一起而不是使用第三方模板引擎,而且,最重要的是,它是纯粹的JavaScript程序。

  同构的塌森JavaScript

  单页面应用程序的更大缺陷在于对搜索引擎的索引有很大限制。React对此有了解决方案。

  React可以在服务器上预渲染应用再发送到客户端。它可以从预渲染的静态内容中恢复一样的记录到动态应用程序中。

  因为搜索引擎的爬虫程序依赖的是服务端响应而不是JavaScript的执行,预渲染你的应用有助于搜索引擎优化。

  React与其它框架/库兼容性好

  比如使用Require来加载和打包,而Browserify和Webpack适用于构建大型应用。它们使得那些艰难的任务不再让人望而生畏。

  不幸的是,目前的JavaScript版本并没有提供一个打包和加载的模块。(在未来的ES6版本上将使用System.import来解决这个问题)。

  幸运的是,我们有Require和Webpack这些漂亮整洁的替代品。React是由Browserify构建的,如果你想操作图像资源或者编译Less和CoffeeScript,Webpack或许是一个更好的选择。

  需要另一绝基个开发框架来配合React吗?

  可以使用React来构建用户界面,但是你仍然需要进行AJAX调用,应用数据过滤以及其它Angular已经实现的功能。

  如果还需要另一个额外的JavaScript开发框架,为什么不使用Angular?

  框架由一系列模块和规则组成。如果我们不需要它的一些模块,甚至想将某些模块替换,该怎么做?

  其中一种实现模块化且能更好地进行依赖管理的方法是通过包管理器。

  但是,在Angular中怎么进行包管理呢?这还得取决于你,但是得记住,Angular是自成一体的。你很可能需要让第三方包去适配Angular。

另一方面,React仅仅只是JavaScript而已。任何用JavaScript写的的包都不需要用React去封装。

  使用npm和Bower这样的包管理器更好。我们可以选择自己的组件和工具集。需要明确的是:这比使用像Angular这样的综合性开发框架更复杂。

  就这方面而言,React的好处是鼓励使用npm,npm已经拥有了很多现成的包。你可以从完整的初学者工具包中选择一个开始构建React应用的包。

  转向使用React也不是一帆风顺的!

  由于Angular是一个应用开发框架,它带来了很多便利。我放弃了一些好的功能比如:封装好的AJAX用于$http服务,$q用于应答服务,ng-show,ng-hide,ng-class和ng-if作为模板的控制语句——所有这一切都让人惊奇。

R  eact不是一个应用开发框架,所以你需要考虑如何处理构建一个应用程序的其它方面。例如,我正在参与一个叫做react-utils的开源项目,它可以帮助React进行更简单便捷的开发。

  就目前而言,社区也在积极的贡献一些类似的组件来填补这一方面的空白。React Components就是这样一个非官方的网站,你可以在这儿找到类似的开源组件。

React的信条不鼓励使用双向绑定,这也给处理表单数据和编辑表格数据带来了很多痛苦。

  无论如何,当你开始理解Flux数据流和存储,事情就变得简单、清晰和简单。

  React是新生的。这需要一些时间让它周边社区发展。在另一方面,Angular已经非常流行了,且有大量的可用扩展(例如 AngularUI和Restangular)。

  虽然React的社区刚起步,但是发展得非常迅速。像React Bootstrap这样的扩展就是一个很好的证明。早晚会拥有更多更丰富的组件,这只是一个时间问题。

  总结

  如果喜欢Angular的方式,在一开始你可能会不喜欢React。主要是因为它是单向数据流且缺乏开发应用程序的一些功能。最终很多事情还是需要自己来考虑。

  然而当开始习惯了Flux的开发模式和React的设计理念,我相信你会看到它的美。

  Facebook和Instagram都在使用React(因为他们在领导这个项目)。

  GitHub最新的源码编辑器Atom就是用React构建的。

  雅虎邮箱也正在使用React重构。

  React已经被大量的应用程序和科技公司所关注。

如果你问react的优势

速度快,因为有虚拟Dom

对于大型友肆复杂的互动式app,react模块化加flux框架会更容易开发,angular1的directive接口太复杂裂瞎,模块化成本不低,angular2会好很多

Facebook内部的原则是肆告空把更好东西开源,这个几亿人在用的app为原型的框架用起来放心

迅速增长的社区,看看github上react的likes超越angular指日可待

学一次就可以多场景开发,用react native类似的语法可以开发iphone app

大家都是喜新厌旧,只有不断更新才能保持竞争力

react和vue哪个比较好

vue比较好。

VUE 是 iOS 和 Android 平台上的一款 Vlog 社区与编辑工具,允许用户通过简单的操作实现 Vlog 的拍摄、剪辑、细调、和发布,记录与分享生活。还可以在社区直接浏览他人发布的 Vlog,与 Vloggers 互动。

随着手机摄像头的发展,越来越多的人开始使用手机拍照和摄像。摄像一般来说要比拍照门槛高,但是视频传播的轿岁信息量又远大于照片。VUE 就诞生在这样的背景下,希望用拍照判培一样简单的操作,帮助用户在手机上拍摄精美的

短视频

主要功能:

分闭冲睁镜头

:通过点按改变视频的分镜数实现简易的剪辑效果,而剪辑能够让视频传达更多的信息。

实时滤镜:由电影

调色

专家调制的12款滤镜供选择,切换至前置摄像头会出现自然的美颜功能。

贴纸:支持40款手绘贴纸,还可以编辑贴纸的出现时间。

自由画幅设置:支持1:1、16:9、2.39:1 三种画幅的视频拍摄。

React和 Vue 以及是经常上 PK 台被进行比较的前端框架,我这边从以下几个方面对两者做一个比较,如果其中有理解不当的大家也可以随时纠正。

学习曲线

React陡峭的学习曲线是一直被诟病的一点。Vue 标榜的是一个渐进式的JavaScript框架,大部分开发这普遍会认为Vue 的学习曲线低于React,并且相较于React有更丰富的中文支持(主要是VUE开发这是中国人,导致了很多我国的程序员会关注此框架)。但是,随着学习内容的深入,当需要开发复杂的 Web 应用程序时,花哨灵活的指令和逻辑反而会岁梁让人觉得 Vue 比 React 更难掌控。简单来说,React是一个陡坡比较难上手,Vue是一个缓坡很容易上手,但是最终的高度两者差不多。

技术社区

React 是近十年的开源项目,因此它拥有成熟的技术社区支持。Vue尽管这几年势头很猛,但是要想建立一套完善的生态系统还需要一些时间来打磨。

灵活性

这乎谨运也是争议更大的地方。React 专注于 UI,所以在构建 UI 组件时可以从它那里获得很好的支持。Vue 作为一个渐进式框架,只允许使用最基本的功能来构建应用程序,但同时也提供了一些开箱即用的东西:如,用于状态管理的 Vuex、用于应用程序 URL 管理的 Vue Router、Vue 服务器端渲染。

Vue 剥离了许多元素,相晌耐比之下 React 更加全面。但如果您正在寻找一种精简、新颖、简单易学、样板代码少、高性能、灵活且完整的前端框架,Vue 更加适合;当然,如果您打算使用低版本 jQuery 代码,Vue 也同样支持。

React 的灵活性则更多依赖于其背后强大的技术社区,在 Facebook 的强力支撑下( Facebook 的 React 团队包括了 10 名专职开发人员),提供了更多工具、UI 库和教程。

综上所述,我个人觉得在没有实际应用场景的情况下,很难比较出孰优孰劣,没有更好的框架,只有最适合的框架。如果是短期小项目,建议使用 Vue 可以快速敏捷开发(上手快,控件占用小,性能较好)。如果是移动端跨平台的应用推荐 React( React Native 已经比较成熟而 Vue 的 Weex 仍在不断发展)。

在工作中,经常会有人问我Vue和React的区别,他们的优缺点,在真正开发过程中,到底用哪个框架比较好?其实我也不知道,然后这段时间看了许多文档,也还是有很多地方没看懂,以下只是自己消化理解的一些Vue和React的区别联系:

1. 数据

React:单项数据流

Dom元素渲染依赖于state,但改变State并不会影响或者改变渲染出的Dom元素。只有通过setState才能重新走渲染流程。

React是单向数据流,数据主要从父节点传递到子节点(通过props)。如果顶层(父级)的某个props改变了,React会重渲染所有的子节点

React推崇的是函数式编程和单向数据流:给定原始界面(或数据),施加一个变化,就能推导出另外一个状态(界面或者数据的更新)。他的每一个组件更像是一个函数。一个呈现出来的页面是由多个独立的、可复用的组件构成的。

Vue:双向数据绑定与单项数据流

Dom元素绑定的Data值,当发生改变后,Vue的响应式机制会自动监听Data的变化重新渲染。即vue实例中的data与其渲染的DOM元素的内容保持一致,无论谁被改变,另一方会相应的更新为相同的数据。

vue不推荐子组件修改父组件的数据,直接修改props会抛出警告。一般都是通过调用父组件传过来的父组件中的方法来改变props。

利弊:

React需要手动setstate后才能出发渲染,Vue更强调自动化响应式,也因此Vue中的Watcher在Data特别多的时候会出现卡顿现象。这也是大型项目(state很多)更适合用React而非vue的一个原因。缺销则

2.虚拟Dom

Virtual DOM是一个映射真实DOM的JavaScript对象。当新一项被加进去这个JavaScript对象时,一个函数会计算新旧Virtual DOM之间的差异并反应在真实的DOM上。计算差异的算法是高性能框架的秘密所在,React和Vue在实现上有点不同。

Vue宣称可以更快地计算出Virtual DOM的差异,这是由于它在渲染过程中,会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树。

而对于React而言,每当应用的状态被改变时,全部子组件都会重新渲染。当然,这可以通过shouldComponentUpdate这个生命周期方法来进行控制(你可以通过这个方法控制组件是否重新渲染。如果返回 false 组件就不会重新渲染),但Vue将此视为默认的优化。

3.X和模板

React与Vue更大的不同是模板的编写。Vue鼓励你去写近似常规HTML的模板。写起来很接近标准HTML元素,只是多了一些属性。

Vue要使用HTML模板template,而React则是完全相反,要求开发者借助X在JavaScript中创建DOM。

总的来说就是React—- all in js。html还是css都是通过js实现。但是vue是把html,css,js组合到一起,用各自的处理方式,vue有单文件组件,可以把html、css、js写到一个文件中,html提供了模板引擎来处理。

4.构建工具

React和Vue都有自己的构建工具,你可以使用它快速搭建开发环境。React可以使用Create React App (CRA),而Vue对应的则是vue-cli。两个工具都能让你得到一个根据更佳实践设置的项目模板。

由于CRA有很多选项,使用伏棚起来会稍微麻烦一点。这个工具会逼迫你使用Webpack和Babel。而vue-cli则有模板列表可选,能按需创造不同模板,使用起来更灵活一点。

5.React.Native vs ???

React Native能在手机上创建原生应用,React在这方面处于领先位置。使用JavaScript, CSS和HTML创建原生移动应用,大大降低了移动应用的开发成本啊,web前端也可以写移动应用,想想都激动。这是一个重要的革新。Vue社区与阿里合作开发Vue版的React Native——Weex也很不错,但仍处于开发状态且并没经过实际项目的验证。

6背后的团队

关于Vue还需要说的是,Vue主要是由一位开发者进行维护的,而不像React一样由如Facebook这类大公司维护。

这些大概就是通过自己的理解,对比了一下Vue和React的一些主要概念斗伏和实现方式写出来的一些体会总结,主要是为了加深自己理解,有些东西自己水平有限,能够消化的有限。以后会继续补充。

说实话,Vue就是垃圾,森族React也是(React Native不是,两个要区别开来)。如果你真想做好项目,项目之初就应该ng2.x以上。为什么垃圾,其实这是js语法自身问题,还有前端团队技术问题,js语法太松散了,所以一票人写的乱七八糟,结构混乱到一B,各种私货漫天飞,这也有公司原因,过于追求敏捷开发,vue这种方便快捷的东西就受到追捧。但是项此档弊目运行一两年后你就知道什么叫维护起来蛋疼。其实ng最成功的地方就是全面ts语法,就算你想写的再渣也渣不起来,本身的静态检查就是蠢租为了避免人为乱搞。不过开发速度比vue慢的太多

react服务器端渲染 实例的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于react服务器端渲染 实例,实例演示:使用React服务器端渲染提高网站速度,reactdom.render 怎么添加class,我由Angular转向React,为什么,react和vue哪个比较好的信息别忘了在本站进行查找喔。


数据运维技术 » 实例演示:使用React服务器端渲染提高网站速度 (react服务器端渲染 实例)