React Native初体验

混合开发一直都比较想接触的技术,所以这几天就学习了下React Native的配置及JavaScript的基础,体验一把混合开发的魅力。

一、React Native介绍

Learn once,Write anywhere

以下内容来自:React Native - 入门介绍(起源、特点、与其它移动技术的比较)

1、起源

(1)Native App 优点是功能强大、性能优越。但终究是受制于苹果,而且多版本维护十分痛苦。

(2)为了不受苹果掌控,Facebook 曾花费大量的人力物力进行移动 HTML5 技术研发。虽然有些成果,但始终离 Native App 有差距,而且这个差距可能永远赶不上。

(3)2012年9月,Facebook 方面承认“Betting on HTML5 was a mistake.”。便放弃移动 HTML5,全力转型 Native App 开发。

(4)在转型 Native App 开发后,Facebook 内部其实还在研发一种新的移动技术,并开始使用这种技术开发内部 App。这个技术便是 React Native。

(5)2015年3月,Facebook 正式公开发布 React Native,并将该技术开源。虽然当时开发平台仅支持 Mac OS,部署也仅支持 iOS 平台。

(6)2015年9月15日,Facebook 发布了 React Native for Android,把 Web 和原生平台的 JavaScript 开发技术扩展到了 Google 的流行移动平台 Android 上。至此,React Native 实现了跨平台的特性。

2、React、React.js、React Native三者的联系

  • React 是基础框架,提供了一套基础设计实现理念。
  • React.js 是在 React 理念的指导下产生的专门用来开发网页的 web 前端框架。与 React 同时出现和发展,React 的相关概念都在 React.js 文档中。
  • React Native 是用来开发移动端 app 的。只不过是用了 React.js 那套模式,而底层是对 Native Code 的封装及调用。

3、React Native与其它移动技术的比较

在 React Native 出现前,我们通常会选择这三种移动技术(Native App、HTML5、Hybrid)之一进行开发。

  • Native App:开发原生应用自然性能最好,功能强大。但多平台版本的开发、维护要花费大量的人力物力。
  • HTML5:虽然有 Web 的优势,即灵活的布局能力、免发版的敏捷迭代潜力、优秀的跨平台特性。在新闻资讯等一些强排版、弱交互的展示类 App 上大展拳脚。但由于 WebView 在移动设备上的性能制约,始终难成大器,这也是 Facebook 放弃其的原因。
  • Hybrid:以 Cordova(PhoneGap)为代表的 Hybrid 方式集 Native App 和 Web 优点于一体,使二者相互补短。

而 React Native 思想与上面三者都不一样。它的底层引擎是 JavaScript Core,但调用的是原生的组件而非 HTML5 组件。这样运行时可以做到与 Navive App 相媲美的性能体验,同时因为 JavaScript 代码可以使用后端强大的 Web 方式管理,既可以做到高效开发,也可以实现快速部署和问题热修复。

4、React Native的优点

(1)性能媲美原生应用

由于 React Native 提供的组件是对原生 API 的暴露。虽然我们是用 js 写的代码,但实际上调用的是原生 API,原生的 UI 组件。体验上足以媲美原生应用。

(2)开发效率高

相比于原生开发,js 学习成本低、语法灵活。允许让 Web 开发者更多地基于现有经验开发 App。

(3)组件化开发

React 强调将应用划分成多个互不相关的组件,每个组件作为一个独立的视图。这种类似搭积木的开发方式使得代码结构清晰、通用性高、可移植性高。上一个项目的某些组件,可以很方便地拿来在下一个项目中使用。对于那些优秀的第三方组件,也能很方便地集成到我们项目中来。

(4)节约开发成本

百分之90多界面可以通过 React Native 开发,一份代码同时可以适配 Android 和 iOS。并通过一些手段自动匹配不同屏幕大小的手机,再也不需要自己去计算视图的大小和位置。

(5)实时远程调试

React Native 的调试比 Cordova 不知道好到哪里去了。开启了实时重载之后,代码一改,app 就自动更新成最新,对于 UI 的搭建简直是省了不少的编译时间。同时可以打开 XCode 实时的看到所有的 log 信息。

(6)代码热部署

我们知道 AppStore 审核流程超级久。而由于 React Native 是用的 js 来写的代码,实时编译的过程能让我们实现应用像网页一样做到热更新,随时发布。真正能够做到上架审核一次,永久 0 审核更新。

(7)有效降低移动应用安装包体积

对于普通复杂度的移动应用,使用 React Native 实现的安装包会比原生代码实现的安装包大。而当移动应用功能越复杂,React Native 安装包体积相比原生代码安装包就越小。

比如当原生代码实现的安装包大于 15MB 时,使用 React Native 改写代码后,安装包就小于原生代码实现的安装包。

二、环境配置

基于macOS进行配置。

1.安装软件

Homebrew

Mac系统的包管理器,用于安装NodeJS和一些其他必需的工具软件。

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Node

brew install node

安装完node后建议设置npm镜像以加速后面的过程(或使用科学上网工具)。

npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global

React Native命令行工具

React Native的命令行工具用于执行创建、初始化、更新项目、运行打包服务(packager)等任务。

npm install -g react-native-cli

Watchman

由Facebook提供的监视文件系统变更的工具。安装此工具可以提高开发时的性能(packager可以快速捕捉文件的变化从而实现实时刷新)。

brew install watchman

Flow

一个 JavaScript 的静态类型检查器,建议安装它,以方便找出代码中可能存在的类型错误

brew install flow

WebStorm
一款非常优秀的Web开发工具,同样支持React Native开发。
下载地址:https://www.jetbrains.com/webstorm/

Android及iOS开发必备

  • Android Studio
  • Genymotion
  • Xcode

2.测试安装

react-native init FirstApp
cd FirstApp
react-native run-android
react-native run-ios

到此,就可以分别在Android和iOS平台上运行项目。自己在配置过程中,也出现了一些坑。如果配置过程中出现问题,建议google查一下相关解决方案。

三、预备知识

准备好这些,终于可以开始学习React Native。目前看React Native还很神秘,接下来继续努力,揭开它神秘的面纱。

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,418评论 25 707
  • 互联网发展至今,经历了几个划时代的产物,2000年前后, 新浪、搜狐作为中国第一代互联网的门户席卷了中国大地;20...
    bigParis阅读 372评论 0 1
  • (一)H5、React Native、Native应用对比分析 文章来源:@王利华,vczerohttp://vc...
    时茶阅读 10,902评论 2 22
  • 第一次接触这个软件,第一次想写点东西,希望大家不要嫌弃。 关于理想 理想很丰满,现实很骨干。我想,每个人都...
    大笑的悲观主义者阅读 776评论 0 0
  • 采访、撰文 |巫小仙 编辑 |靖然、蔡娜 图片 |来自网络 咖啡馆里一男和一女各自开着电脑上网,女人心里想:“此刻...
    心探索官方阅读 249评论 0 1