从React和angular看技术路线的分歧
无论ReactJs还是其它什么,我们在看的时候都要看它们的思路、方面,而不要一开始时就扎进它的代码细节中。。。
最近在看一些reactJs的资料,有一些收获,写成文章跟大家分享一下,其中很自然的也会有我自己的一些主观看法,请大家批判的阅读。
React这个东西是facebook搞出来的,如果是国内搞出来的是否还能还能这么火么?这个问题是我在知乎上看到的。这个问题的出发点很有意思,不去探究react本身如何,而是去撕它背后的干爹,呵呵
我为什么提这个问题呢,因为这个问题的立场是我个人主观上最反感的。
我的立场一向很明确,我们都是搞技术的,算是吃技术饭的,那么一个新东西出来了,我们要做的是先去把它研究个大概,而不是先上去表明立场,然后开始互喷。
react它的干爹是谁并不重要。看事实,现在它就是火了,那么我们去学一下它的精髓,看看它的思想。可能以后它不火了,但那依然不重要,因为我们已经吸收了它的精华。这才是我以为的学习的正确立场。
React这个东西,说到底就是一个View,它只做了UI层的东西。所以它更多的是一个框架,而不是一个库,不是一个解决方案。所以从这个角度来讲,许多人都说React和angular不是一个东西,没什么可比的。普遍认为angularJs是一个大而全的框架,它本身的功能就比React要多的多。
如果要用React,那么需要许多其它的插件来做路由管理,数据流管理,测试模块,依赖管理等等,所以才有所谓的React全家桶套件。总之开发环境的配置很是有些麻烦,所以也有另一种说法,React的全部强制组件化,使前端有过度设计之嫌。
虽然我在工作中没有使用过React,但我依然是更喜欢React更多一此,无它,只因为简洁灵活。它的JSX写法相当于一种XML语法的转换,你可以理解为就是把HTML写在JS里,JSX其实就是JS + XML,所以React可以自定义标签。而实质上,你编写的是基于对象的XML。因为在React的设计者看来,HTML的功能很弱,需要用JS加经强化。
这在我看来,就是React和其它所有库、框架的根本性区别。其它的这些JS库,基本上都是把DOM放在JS之外考虑,用JS来操作DOM的,但React的心思就是,“不把HTML和JS分开了,干脆放一块写吧”,就像这样:
<ul>
{ heroes.map(hero =>
<li key={hero.id}>{hero.name}</li>
)}
</ul>
你说,这段代码看起来像不像JS模板?要我说,是的。React就是只做UI层、view层的事情嘛。那干嘛还单独再搞个V层,没必要的。
React里,有一些是它自己的语法,但更多的是还是原生javascript的东西,这对于自己的技术发展很有好处。
反面的就是angularJs,它为什么学习曲线陡峭,就是因为你要学它,就得学一堆angular自己的语法。如果你换个公司呢?如果你换个项目呢?虽然不能说浪费了,但到新框架里完全用不到angular的语法倒是真的。
如果你选择了React,那么你要为它的简洁灵活所付出的代价,就是你要对业务了解的更加深入,因为你必须根据业务场景,选择适合的库、插件的组合。就像前文所说,React只管View,不管其它。
这其实是一个学习成本的选择问题。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 线上发生死锁异常了,该怎么办
- jQuery 元素操作
- jQuery 文本属性值
- jQuery 属性操作
- 方老师聊Nginx知识点
- 《Java从入门到失业》第五章:继承与多态(5.1-5.7):继承
- 【赵渝强老师】Flink的DataSet算子
- Node.js 案发现场揭秘 —— 文件句柄泄露导致进程假死
- nacos配置问题
- Chevereto 配合 Picgo 打造个人相册/图床解决方案
- 从提高 Elasticsearch 搜索体验说开去......
- 又一个奇葩要求,Python是如何将“中文”转“拼音”的?
- localStorage中怎么存对象?
- vue中sessionStorage的使用
- 别再问我 Python 怎么识别数字验证码了!