文档章节

ReatJs

wangxu871023
 wangxu871023
发布于 2016/07/25 18:43
字数 1095
阅读 21
收藏 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
锦州
私信 提问

暂无文章

Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
2
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
4
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0
Kernel I2C子系统

备注:所有图片来源于网络 1,I2C协议: 物理拓扑: I2C总线由两根信号线组成,一条是时钟信号线SCL,一条是数据信号线SDA。一条I2C总线可以接多个设备,每个设备都接入I2C总线的SCL和SDA。I...

yepanl
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部