从React和angular看技术路线的分歧

2018-02-06 16:17:32 浏览数 (1)

无论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分开了,干脆放一块写吧”,就像这样:

代码语言: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,不管其它。

这其实是一个学习成本的选择问题。

0 人点赞