React Native 试水

React Native 是大脸书出品的一个移动开发框架, 可以用前端的技术, 写出 Android iOS 原生的效果和性能, 地图, 传感器等相关的 API 也都经过封装, 可以用 JS 调用

  • RN 是用前端技术来写的, 所以 npm 中的 百万 + 库都可以使用
  • 不过 UI 方面的库不是很完善, 所以最好会 Android 或者 iOS 的原生开发, 而且很多第三方的服务, 比如分享, 第三方登录, 广告 等等都需要用原生的技术封装暴露给 JS
  • 所以现阶段用纯 RN 写跨平台项目还是很难实现的
  • 这个界面就是用 RN 实现的, 根本看不出来和其它原生页面的区别,
  • 附近的老师 右侧的3个圆圈, 是 Swift 的原生 View, 然后暴露给 JS 使用
  • 如果 React 很 6 的话, 实现起来确实很快快捷, 不过点击之后的各种操作处理可能会比较复杂, 后面我们来说巧妙的解决办法.

Getting Started

由于 RN 发展和 版本迭代的速度很快, 所以学习 RN 首要参考的就是官方文档

  1. 安装 RN 有 2 种情况,
    1. 从 0 开始纯 RN 项目
    2. 已有的 OC Swift 项目 接入 RN

第一种情况 :

你需要 react-community/create-react-native-app, 和 Expo 的帮助, 它们俩能帮助你脱离 Android Studio 和 Xcode 进行编译, 打包, 发布应用

第二种情况 :

随着 Integration With Existing Apps 的指导就可以了, 需要你稍微了解一点 npm , 也就是 JS 版的 Cocoapods

接下来

前端这两年真的是一直在搞事情, ES 6, React, Vue, Node js ==, 简直是颠覆式的发展

下面是几个不错的资源, 帮助你了解 ES 6 等标准的发展

ES5, ES6, ES2016, ES.Next: JavaScript 的版本是怎么回事?「译」
ECMAScript-6-features
Babel : Learn ES2015
阮一峰 : ECMAScript 6 入门

建议先把官方文档的 The Basic 看完, 你就会大概对 RN 有个了解了

剩下的就是熟悉 Component 和 强行写 React 的代码了

FlexBox 布局

  • FlexBox 和 AutoLayout 的差别还是很多的, 有点像 Android LinearLayout 或者 StackView 的升级版, 不过学习成本很低
  • 我在使用过程中, 除了发现, 偶尔需要多加一层不必要的 Container View 来调整布局之外, 没有什么明显的缺点

几篇 FlexBox 的教程, 学习难度很低

Layout with Flexbox
Understanding React Native flexbox layout
A Complete Guide to Flexbox

热更新

CodePush 是大微软出品的, 适用于 RN 的热更新解决方案, 是一个 好用, 免费的热更新平台

Debug 时 调试 CodePush 是否生效, 可以再 didLoadFinish 加入 RCTSetLogThreshold(.trace), 然后插线连接 Mac, 用 Console 过滤 Codepush 看日志

原生接口暴露给 JS

这个问题可以简单的分为两种,

  1. 原生的方法暴露给 JS 调用
  2. 原生的 UIView 暴露给 JS 调用

由于 RN 的迭代速度很快, 所以首要参考的就是 官方文档, 索性文档写的很棒棒哦...
Swift 和 OC 的都有相关的文档, 原生的 Swift UI 可以参考 pure-swift-views-react-native

Native Modules
Native UI Components

许多原生的 API 封装, 被分成 XXXiOS , XXXAndroid, 这些是平台的特殊实现, 我们也可以找一些第三方的, 跨平台的实现

最后

我的个人项目的其中一个页面, 用 RN 试水, 效果不错, 就是文章开头的截图,
RN 是一个潜力很大的项目, 今后希望能更多的接触 RN,

关于原生和 JS 调用方法, 跳转界面

  1. 比较 Trick 的实现是, 全都使用 Router, 比如 点击 RN 的一个按钮, 触发 sixue://userDetail/666 这个 router, 含义是查看到用户 id 为 666 的详情界面
  2. 这样逼迫你把所有的 ViewContoller 写的更模块化更独立, 然后按钮触发的效果也可以在后台动态的修改, 所有 RN 端的事件处理都用 router 转到 Native 端接收并处理
  3. 这样大部分的 UI 界面都可以用 RN 跨屏台的书写完成, 提高了效率
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,264评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,549评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,389评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,616评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,461评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,351评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,776评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,414评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,722评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,760评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,537评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,381评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,787评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,030评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,304评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,734评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,943评论 2 336

推荐阅读更多精彩内容