开启RN学习之旅 (一) —— 基本了解

版本记录

版本号 时间
V1.0 2018.01.25

前言

RN一直用的很火,包括Facebook、AirBub还有特斯拉等很多公司都在使用RN开发自己的移动端,我没用过RN,所以很想学习它,下面我就开始了,感兴趣的可以和我一起学习。

React简介

首先你需要知道的是:React是Facebook开发的一款JS库,在iOS上仅支持iOS7.0以上。

Facebook认为MVC无法满足他们的扩展需求,由于他们非常巨大的代码库和庞大的组织,使得MVC很快变得非常复复杂,每当需要添加一项新的功能或特性时,系统的复杂度就成级数增长,致使代码变得脆弱和不可预测,结果导致他们的MVC正在土崩瓦解,认为MVC不适合大规模应用。这个问题由于Facebook提出的Flux和React而得到了解决。

React Native提倡组件化开发,也就是说React Native给我们提供一个个封装好的组件让开发者来进行使用,甚至我们可以相关嵌套形成新的组件。
使用React Native我们可以维护多种平台(Web,Android和IOS)的同一份业务逻辑核心代码来创建原生应用。

1. Flux

先说一下FLux是什么?Flux是一个系统架构,用于推进应用中的数据单向流动。可以看一下下面关于Flux的原理图。

2. React特点

  • 简单
    • 简单的表述任意时间点你的应用应该是什么样子的,当数据发生变化的时候,React将会自动的管理UI界面更新。
  • 声明式
    • 在数据发生变化的时候,React实际上它仅仅是更新了变化的一部分而已。通过构造可重用组件,使用React你做的仅仅是构建组件。通过封装,使得组件代码复用、测试以及关注点分离更加容易。

React原理

下面我们简单的看一下React原理。

1. Virtual DOM

传统的web应用,操作DOM一般是直接更新操作的,但是我们知道DOM更新通常是比较昂贵的。而React为了尽可能减少对DOM的操作,提供了一种不同的而又强大的方式来更新DOM,代替直接的DOM操作。就是Virtual DOM,一个轻量级的虚拟的DOM,就是React抽象出来的一个对象,描述dom应该什么样子的,应该如何呈现。通过这个Virtual DOM去更新真实的DOM,由这个Virtual DOM管理真实DOM的更新。Virtual DOM是DOM在内存中的一种轻量级表达方式(lightweight representation of the document),可以通过不同的渲染引擎生成不同平台下的UI,JS和Native之间通过Bridge通信。

为什么通过这多一层的Virtual DOM操作就能更快呢? 这是因为React有个diff算法,更新Virtual DOM并不保证马上影响真实的DOM,React会等到事件循环结束,然后利用这个diff算法,通过当前新的dom表述与之前的作比较,计算出最小的步骤更新真实的DOM。

2. 组件component

在DOM树上的节点被称为元素,在这里则不同,Virtual DOM上称为component。Virtual DOM的节点就是一个完整抽象的组件,它是由component组成。

3. State和Render

React是如何呈现真实的DOM,如何渲染组件,什么时候渲染,怎么同步更新的,这就需要简单了解下State和Render了。state属性包含定义组件所需要的一些数据,当数据发生变化时,将会调用Render重现渲染。


环境的搭建

下面我们就看一下需要搭建哪些环境。

1. React Native 开发基础环境

具体可以参考这个兄弟写的文章 —— React Native 环境搭建和创建项目(Mac)

安装Node.js

  • 方式1:安装nvm,可以参考这里,运行下面命令
nvm install node && nvm alias default node
  • 方式2:先安装Homebrew,再利用Homebrew安装Node.js
//安装Home-brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

//安装Node.js
brew install node

安装React Native的命令行工具(react-native-cli)

npm install -g react-native-cli

安装CocoaPods

这个就不多说了吧,开发基本都配置过这个东西。


React简单总结

  • React不是一个MVC框架,它是构建易于可重复调用的web组件,侧重于UI, 也就是view层
  • React是单向的从数据到视图的渲染,非双向数据绑定
  • 不直接操作DOM对象,而是通过虚拟DOM通过diff算法以最小的步骤作用到真实的DOM上。
  • 不便于直接操作DOM,大多数时间只是对 virtual DOM 进行编程

从上面我们可以看见,我们需要做什么?

  • 搭建和配置环境
  • 对Flex布局和css样式学习和理解
  • JavaScript - ES6学习和理解
  • 具体的工程实践

参考文章

1. RN中文网
2. RN英文网
3. React Native 集成到原生项目(iOS)
4. RN官网
5. React 简单介绍
6. React Native:从入门到原理
7. React Native - Build native mobile apps using JavaScript and React
8. GitHub react-native.cn
9. GitHub Facebookreact-native
10. 为什么我们要造React?
11. 江清清的React Native专题
12. ES6入门
13. Flex布局入门

后记

本篇已结束,后面更精彩~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • 1.RN简介 React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架...
    smart_yang阅读 19,368评论 0 8
  • React Native着力于提高多平台开发的开发效率 —— 仅需学习一次,编写任何平台。(Learn once,...
    分贝丶阅读 998评论 1 2
  • 初识React Native 我们都知道React是一套开源JavaScript 库(也可以称为前端 UI 框架)...
    千寻与小米阅读 1,289评论 1 0
  • 今天真是完美的一天 风吹向帆 船靠向岸 月亮上的桂花落满了船舱 今天真是完美的一天 风吹起波 波涌起浪 浪花里的贝...
    栾语阅读 124评论 0 4
  • 人生路上出现的一切 人也好事也好 都无法拥有 因为人生不能停留 只能经历 深知这一点的人 就会懂得 无所谓失去 只...
    silvincent阅读 229评论 2 3