如何评价 React Native?

write native apps with React.js?
关注者
8,194
被浏览
1,507,151
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

现在趋势都是声明式UI,React却“反其道而行之”,把UI深绑定到JS中去。

然后又嫌编程创建控件的方式,对于UI的树状结构太麻烦了,于是搞出了个JSX。

我就纳了闷了,他们团队究竟是对JS有多执念?

诚然,以现在的前端生态来看,JS的群众基础的确是好。

但是用React以后,要尽量保证与传统DOM的绝缘(下文例1)。从ReactJS的Virtual DOM,到React Native的“No DOM”(引号是因为这词不是官方的)。对JS群众而言是个新的挑战。(而且JSX真的是不怎么不好用啊)

因为还没有看到第二天的视频,具体的一些实例代码和技术细节都看不到,但从现在的理解看,它仅仅是用了JS而已,跟前端技术已经没什么关系了,东西都要重新学。这方面我会继续关注后面的视频。

然后另一方面,因为我不会做Native开发,不知道各种控件样式一般而言是用什么来定义的,但是如果React Native要搞一套“Native CSS”,这又是个学习成本,同时也是个无底天坑了。

定义样式这方面,昨天的视频里没有看到,今天的视频发出来了之后我会再关注一下。

小结:

React Native除了JSX以外,已经和JS的发源地——WEB前端技术没太大关系了,东西都要重新学。

它并不能提供一个用Web的技术和经验来开发NativeApp的方式,这一点与Ionic有本质区别。

前端开发者想因此快速做出Native开发,也许做做小样还行,做出严肃的产品,我认为还有距离。

结论:我不认为这是一条给前端转Native的出路。

----------------------

上文例1

一些UI控件,比如模态框,很常见的实现方式是把模态框从定义的节点里摘出来,塞进BODY里面,这样定位什么的非常好搞。

氮素,这样做会破坏真实DOM与Virtual DOM之间的关联关系,ReactJS会罢工。

例如SemanticUI中的modal组件,需要指定`detachable`才能让它不把元素剥离进BODY里去,SemanticUI的文档中说这样做会造成渲染获得更少硬件加速的优化。

这还是人UI组件库设计的比较周到,如果是要捡着自己的组件库用,还不知道要踩多少坑。

相比之下,Angular要友好一些,我们写的UI组件自己接管状态维护之后,只需要修改$scope,然后调用$apply,把状态维护交还给它的digest循环就行了。具体就不展开讨论了。