6大爱上react 的理由
书写javascript 更加简单
(⚠️js 中混用html 也一直是外界所诟病的一点,好不容易把前端三驾马车分开,现在又搅合在一起)
react 使用一个新的叫做JSX 的语法,它能够让你将html 混入javascript 中一起写。你还是可以编写纯的javascript ,
但是还是建议你尝试一下这种新的写法,因为这样的方式让你的组件更加容易继承。
在render 函数(注:react 声明周期中一部分)中使用html 而不需要拼接字符串的方式是非常令人完美的,经过一段时间以后,这样的编写方式也会变得更加的顺手。
react 用一种特殊的 JSX转换器 将html 片段变成一个个函数。
组件化是未来web 的发展方向
shadow DOM 和一些框架例如 PolymerJS 最近产出了很多的问题。
react 不使用Shadow DOM,相反地它赋予开发者创建自己的组件的能力,这个组件你可以重复利用,结合,构建你自己的核心内容。
我觉得这中方式是单向产出最好的一种方式,因为它使得定义和操作你自己的组件变得非常的简单。
react 性能非常优秀
react创建了自己的虚拟DOM,你自己的组件实际生存的地方。这种方式赋予了开发者极大的灵活性 和惊人的性能优势。
因为react 计算了哪些需要DOM中实施的变化,然后相应的更新DOM树。
利用这种方式,react 避免了大量的DOM操作的消耗,实现了性能非常优异的更新机制。
对于搜索引擎优化非常有效
对于Javascript 框架来说最到的问题是它们对与搜索引擎都不太友好。尽管有些已经有了一些改善,搜索引擎通常对于识别Javascript 较重的
应用有一些困难。
react 在这些框架中脱颖而出,你可以将react 运行在server 端,同时虚拟DOM将render 以后在浏览器端呈现的还是普通的web页面形式。
不需要PhantomJS 和其他技巧。
给予开发者“开箱即用”的开发工具
当你使用react 开发时,别忘了在chrome 浏览器中安装react developer tools 。它使得调试应用非常地简单。
在浏览器中安装好这个拓展工具后,你可以在浏览器的元素板块直接查看virtual DOM ,就像你浏览普通的DOM树一样。
相当得令人称奇,哈!
Facebook 团队在维护这个项目
react 目前是开源项目,这个项目最开始是在Facebook 内部发展起来的。随后,facebook 意识到他们创建了一个非常酷的东西,所以他们向世界共享这个项目。(非常伟大)
facebook 使用react,Instagram’s也使用react。很多很成功的项目都使用react。
额外福利:在手机app 上可以使用react native
一但学会了react ,web应用不是问题。手机开发也可以使用react native 快速上手,学会了一样,再去学别的变得非常容易。
参考文献:
1) shadow DOM : https://www.toobug.net/article/what_is_shadow_dom.html
(我的理解是你看得见,但是摸不着的DOM 元素,影子DOM,这名字起的真好!
可以自己创建,但是无法外部遍历。在react产生之前,是为了隔离框架与外部的代码环境而生的东西。
另:浏览器其实默默的做了非常多的事情。)
6大爱上react 的理由的更多相关文章
- 去大公司还是去小公司工作——要进大公司的核心部门(提升视野,锻炼技能),远离没真本事的小公司,要自我驱动 good
去大公司还是小公司工作?这个问题问大多数 IT 人都会选择前者.如果换一个问法,去大公司还是去初创公司(Startup)工作?或许有极小一部分人能改变一下决定 对于 IT 人来说,选择到大公司工作的理 ...
- react系列从零开始-react介绍
react算是目前最火的js MVC框架了,写一个react系列的博客,顺便回忆一下react的基础知识,新入门前端的小白,可以持续关注,我会从零开始教大家用react开发一个完整的项目,也会涉及到w ...
- React Native之code-push的热更新(ios android)
React Native之code-push的热更新(ios android) React Native支持大家用React Native技术开发APP,并打包生成一个APP.在动态更新方面React ...
- React对比Vue(02 绑定属性,图片引入,数组循环等对比)
import React, { Component } from 'react'; import girl from '../assets/images/1.jpg' //这个是全局的不要this.s ...
- react学习笔记(1):从前后端分离到项目部署
我来到现在这家公司有一年多的时间,一直做的是财政系统相关的产品,前端的技术栈用的是传统的jQuery+bootStrap+requireJs,随着项目的开发,越来越多的弊病凸显出来. 首先是前后端的代 ...
- 前端项目优化 -Web 开发常用优化方案、Vue & React 项目优化
github github-myBlob 从输入URL到页面加载完成的整个过程 首先做 DNS 查询,如果这一步做了智能 DNS 解析的话,会提供访问速度最快的 IP 地址回来 接下来是 TCP 握手 ...
- react项目中引入了redux后js控制路由跳转方案
如果你的项目中并没有用到redux,那本文你可以忽略 问题引入 纯粹的单页面react应用中,通过this.props.history.push('/list')就可以进行路由跳转,但是加上了redu ...
- React.js/HTML5和iOS双向通信
最近,我使用WKWebView和React.js进行双向通信,自己写了React.js嵌入到Native中. Native操作Web,通过两种方式传值 第一种,通过JS传值给Native 通过这种方式 ...
- React中key的讲解
通过阅读React的文档我们知道React这个框架的核心思想是,将页面分割成一个个组件,一个组件还可能嵌套更小的组件,每个组件有自己的数据(属性/状态);当某个组件的数据发生变化时,更新该组件部分的视 ...
随机推荐
- [SequenceFile_4] SequenceFile 配置压缩
0. 说明 SequenceFile 配置压缩编解码器 && 压缩类型的选型 1. SequenceFile 配置压缩编解码器 package hadoop.compression; ...
- gcc库链接
转载于https://blog.csdn.net/zhangdaisylove/article/details/45721667 1.库的分类 库有静态库和动态库,linux下静态库为.a,动态库为. ...
- if语句的嵌套以及条件运算符和条件表达式(初学者)
1.当if语句中的执行语句又是if语句时,则构成了if语句的嵌套情形. 其一般形式可表示为: if() { if()……; } 或: if() if()语句1: else 语句2: else if() ...
- ABP模块运行解析
从官方创建一份ASP.NET CORE 2.0的项目,并加入源码调试,可以看出如下图的加载顺序 1.ABP是通过什么样的机制加载的 既然ABP中模块需要添加DLL到引用中,又要加入DependsOn在 ...
- swift class的缺省基类(SwiftObject)与内存模型
Hard Constraints on Resilience The root of a class hierarchy must remain stable, at pain of invalida ...
- 卡尔曼滤波跟踪 opencv
0 卡尔曼OPENCV 预测鼠标位置 卡尔曼滤波不要求信号和噪声都是平稳过程的假设条件.对于每个时刻的系统扰动和观测误差(即噪声),只要对它们的统计性质作某些适当的假定,通过对含有噪声的观测信号进行处 ...
- 《OKR工作法》读书笔记(转)
文章转自https://www.jianshu.com/p/c694363d5213
- Luogu P3372 【模板】线段树 1
qwq #include<cstdio> using namespace std; ; int n,m,x,y,flag; *maxn],r[*maxn]; *maxn],sum[*max ...
- 树莓派学习笔记(6):让Raspbian支持中文、禁用休眠
引自:http://www.leiphone.com/news/201406/raspberry-pi-hands-on.html 一直令我很奇怪的是,即使你用Debian的安装光碟安装系统,如果你把 ...
- (转)tcp/ip协议的简单理解 -- ip报文和tcp报文的格式
1.概念: TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程.入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地.出栈的过程,数据接收方每层不断地拆除首部 ...