为什么用React

为什么选择React进行前端界面的开发呢?刚开始只是听说了这样一个框架,看了下入门教程,觉得用起来应该很爽,因为不需要通过jquery操作dom了。。最近在做项目过程中,又读了一些react相关的文档,加上自己的一些体会,这里对下React的特点以及值得选择的原因做一下总结~

React是什么

React是一个用于构建用户界面的JavaScript库,它通常被看作MVC中的View端,但又不仅仅是View那么简单

React为开发人员带来的体验提升

刚开始,在我对很多前端新的主流知识都不了解的情况下,偶然知道了React,并且排除万难(主要是学习相关技术栈。。)都想把React用起来的最大原因是,React对我这种开发人员的体验简直太好(虽然很多是听说:)),应用React的开发模式对还停留在以前的jquery模式的我来说是那么那么的惊喜?那么对比以前的开发模式到底有什么不同?

不再直接操作DOM

js中操作DOM本身就有较高的代价,而react让我们不用直接操作DOM,而是操作由对象组成的Virtual DOM,在jquery时代,我们需要自己查找dom元素,再精确地计算出哪些DOM元素要改变,再对其调用方法重新渲染,这之中耗费了极大的精力,而Virtual DOM让我们不再关注直接对DOM的控制操作,避免了对原生DOM的污染,而是转向操作数据,由数据映射为UI的表现(由Virtual DOM组合而成),当然VirtualDOM不止有这一个优点,还有其他优点(如同构)。总之Virtual DOM的引入使我们保持了性能上的高效和稳定的同时,降低了直接操作DOM而错误导致的风险。

声明式编程

声明式编程,即声明式编程,与之相对的是命令式编程,自己以前在前端的编程还停留在命令式编程,比如jquery,实现某个功能的时候,通常是拿到某个元素,再对这个元素做某个操作,而react的精髓之一可以说是函数式编程了,通过直接将数据状态映射为组件的展示,UI与数据之间的关系是,UI=f(data),data由组件自身的state和接收的props组成,data的变化会映射为UI得的变化,所以在做一个UI需求的时候,最开始我们只需要思考不同的数据状态会渲染什么样的UI就可以了,而之后只要改变data(通过改变state或接收props)就会自动完成UI的重新渲染。

组件化

在React中,一切都是组件,通过构建可复用组件来构建用户界面是React的核心思想之一,React推荐以组件的方式重新思考UI的构成,React组件即为组件元素,在React中,组件元素被描述为纯粹的JSON对象,这就意味着可以使用方法或类来构建组件,表达组件元素的JSON对象格式如下:

{
  type: Table,
  props: {
  size: 'large',
  children: 'List'
}
复制代码

其中children是很关键的一个属性,children代表子组件或子元素,也具有同样的JSON结构表示,这样我们可以自由的对组件元素进行层层嵌套或组合 ##自上而下的状态流, 可预测,易定位 组件拥有自己的内部状态state,并且可以由父组件传递props数据,最终将props和内部的state数据映射到组件的表现形式,react本身的状态流就是自上而下的,即上级可以通过props传递数据到子级组件,反之则不可能,这使得组件的表现形式更加可预测,当表现与预期不符时,也方便我们找到对应代码的位置,定位问题。

跨平台,易于服务端渲染

react号称"Learn once,write anywhere",即只要学习一次,就可以写出在任何地方运行的代码,PC端,Android,IOS,都可以用react语法来编写,这同样得益于react的Virtual DOM机制,在react中,我们的操作对象是Virtual DOM,与真实环境无关,无论是PC端,安卓,还是IOS,只要有从Virtual DOM到最终实体的转换工具即可,在浏览器端,Virtual Dom转换为真实DOM的转换工具由react-dom实现,映射为移动APP实际UI元素的工具则由react-native实现,同样的,服务端渲染,则是把Virtaul-DOM映射为字符串,由react-dom/serverrenderToString方法来进行渲染。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值