react为什么这么火?

初识React

React 来自于Facebook,是的,就是那个你们听说过但是打不开的网站。React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架都不满意,就决定自己写一套,用来架设 instagram的网站。做出来以后,发现这套东西很好用,就在2013年5月开源了。所以说,很多东西都是有智慧的懒人创造的。在React的官方博客中明确阐述了React不是一个MVC框架,而是一个用于构建组件化UI的库,是一个前端界面开发工具。所以顶多算是MVC中的V(view)。经过这几年的沉淀,React越来越强大,也受到了越来越多的开发者喜爱。

优点

  • 复杂场景下的高性能
  • 代码量的节省
  • 非常清晰的代码结构
  • 项目将来的可拓展性和可维护性

虚拟DOM

这可以说是一个全新的概念,对于他的好坏,业界也是众说纷纭,但是就我个人来说,我觉得这是一个重大的突破。
所谓的虚拟DOM,就是如下的代码:

ReactDOM.render( 
  <h1>Hello, world!</h1>, 
  document.getElementById('example')
);

ReactDOM.render 是 React 的最基本方法,用于将模板(即函数中的第一个参数)转为 HTML 语言,并插入指定的 DOM 节点。而模板中的div其实和DOM中的div完全是两码事儿了,只不过React提供了和DOM类似的Tag和API,事实上React会通过他自己的逻辑去转化为真正的DOM。所以,把这种叫做虚拟DOM。
使用虚拟DOM可以带来的明显好处就是,当有数据变动导致DOM变动时,React不是全局刷新,而是通过它内部的 dom diff算法计算出不同点,然后以最小粒度进行更新。这也是React号称性能好的原因。

JSX

JSX是React的重要组成部分,他使用类似XML标记的方式来声明界面及关系。HTML 语言直接写在 JavaScript 语言之中,不加任何引号,这就是 JSX 的语法,它允许 HTML 与 JavaScript 的混写。

var names = ['Alice', 'Emily', 'Kate'];
ReactDOM.render( 
  <div> 
  { 
    names.map(function (name) { 
      return <div>Hello, {name}!</div> 
    }) 
  } 
  </div>, 
  document.getElementById('example')
);

上面代码体现了 JSX 的基本语法规则:遇到 HTML 标签(以 < 开头),就用 HTML 规则解析;遇到代码块(以 { 开头),就用 JavaScript 规则解析。这为我们的代码编写提供了极大的便利,而且JSX中除了使用HTML标记之外,并没有复杂的标记,这种自然而直观的方式直接降低了React的学习门槛并且让代码更容易理解。

简化可复用的组件

虚拟DOM(virtual-dom)不仅带来了简单的UI开发逻辑,同时也带来了组件化开发的思想,所谓组件,即某个独立功能或者界面的封装,达到复用或者UI和业务松耦合的目的。React推荐以组件的方式去重新思考UI构成,将UI上每一个功能相对独立的模块定义成组件,然后将小的组件通过组合或者嵌套的方式构成大的组件,最终完成整体UI的构建。
React框架里面使用了简化的组件模型,但更彻底地使用了组件化的概念。React将整个UI上的每一个功能模块定义成组件,然后将小的组件通过组合或者嵌套的方式构成更大的组件。这种做法已经在instagram 网站上普遍实施,大家可以看看instagram的前端源代码。

与传统组件有什么区别:
1、React通过功能来定义最小粒度的组件。
2、React组件的生命周期:Mounting、Updating、Unmounting。

组件化:组件封装,组件复用
组件封装:封装视图、数据、变化逻辑(数据驱动视图变化)
组件复用:props传递,复用

React 与 Vue 的本质区别

1、vue 本质是MVVM框架,由MVC发展而来。React 本质是前端组件化框架,由后端组件化发展而来
2、vue使用模板,React使用JSX
3、React本身就是组件化,没有组件化就不是React。vue也支持组件化,不过是在MVVM上的扩展

总结

React为前端开发带来许多便利,降低前端代码的复杂性,而且能够保证性能保证质量,所以才能这么火,并且有这么多的人来加入React开发的行列。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容

  • React基础 React组件化编程 Create React App 创建React 前端工程 题外话题:页面性...
    BeautifulHao阅读 1,526评论 0 3
  • 1.RN简介 React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架...
    smart_yang阅读 19,360评论 0 8
  • 一、why React? React是Facebook开发的一款JS库。React一般被用来作为MVC中的V层,它...
    amm0117阅读 11,072评论 0 1
  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 2,805评论 1 18
  • 1、什么是react React.js 是一个帮助你构建页面 UI 的库。React.js 将帮助我们将界面分成了...
    谷子多阅读 2,552评论 1 13