文档章节

ReatJs

wangxu871023
 wangxu871023
发布于 2016/07/25 18:43
字数 1095
阅读 19
收藏 0
点赞 0
评论 0

作者:郑炜韬
链接:http://www.zhihu.com/question/35767399/answer/64530124
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

鉴于我只是入门,而且私觉得题主在问React入门的问题,我就说说自己入门的经历好了
------

这段时间刚好用React搭建了一个简单的网站,此前基本没多少实际的前端开发经验,因为我都是写后端服务的,然后之前也接触过AngularJS,但是也没实际应用于应用开发中,这次头脑发热想用React作为前端MVC的V,其实大体上也就用了几天时间吧,就【入门】了,至少题主说的JSX什么的,我觉得并不难,一开始只是比较恶心,觉得大量JS和大量标签混在一起写不是很好的风格,所以至今还无法全然接收React的风格,但是也没觉得有多难,懂一点HTML,参照着文档就可以搞出来。

至于我是怎么学的呢?其实就是看官方文档,学Anugular的时候我还专门跑到国内某比较有名的IT学习网站去看了几位名人的讲解,现在想想都没有带着实际的项目开发需求去学习来得靠谱。

首先按照自己的思维写了个大概,页面中几个重要模块我都进行了独立拆分,各自逻辑开发完后我突然发现,模块之间怎么通信呢?好的,React提供了Flux,我又花了大半天把Flux理解了一遍,发现自己来写似乎比较烦,于是还自学了一些NodeJS(此前有了解过Node),用EventEmitter写了一个简单的全局事件机制,终于可以愉快地完成我那几个独立模块的通信和同步了,OK,网站逻辑完成。

但是我深深地觉得这样的网站始终有问题,于是稍稍深入看了一下React文档(其实也就那么一些罢了),突然我发现,我模块化网站内容的方式不对,本可以被组织到一个高层组件的模块全都被我独立拆分了,导致到处都是事件订阅和通知,于是我重新整理了一下,用一个高层组件处理数据模型更新,再通过props传递自动完成其他组件的自动更新,于是乎我发现,整个JS的逻辑变得很清晰简单。而对于确实是独立的组件间通信,我们有一些别人实现好的Flux框架可以用。

总体来说,我个人觉得我应该了解到的React基本齐全了,因为按照官方文档的内容,我觉得已经掌握地差不多了,这个时候我自称我自己的React水平是:【入门】(难道不是吗,你打我呀)

期间还要写写后台逻辑,还因为不喜欢手动转换JSX而找了一堆前端模块化和构建工具,首先是简单地用seajs,发现不好,又考察了browserify,和webpack,了解了webpack配置文件的编写。

总之,我就这么入门了(各位前端大侠轻喷,我只是临时过来写前端的)。

那么,React入门难吗,对于我这种没有太多前端工程经验,顶多帮别人用jquery写写ajax的程序员来说,都觉得还好。

而AngularJS呢?我觉得就像题主说的,入门也不难,但是必然也会在实践中踩一些坑,然后把写好的代码重新构造一遍,这个时候往往是刷新自己对框架认知的时候,这一步是很重要的,一定要硬着头皮上。当然如果这一步有高人在一开始给你点明,估计入哪个们都不难。

最后个人觉得,React全量的高效刷新比起AngularJS绑定更新来说还是方便一些的,整套逻辑的数据流动很简单清晰,从上到下,子组件都是弱状态或者无状态,一致性比较好保证。

有机会还是想实际用用AngularJS,说不定又是一次奇妙的开发经历。

说得不对的,请轻拍指正~

© 著作权归作者所有

共有 人打赏支持
wangxu871023
粉丝 0
博文 8
码字总数 2233
作品 0
锦州

暂无相关文章

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部