react native 包学不包会系列--认识react native
react native 是由Facebook推出,基于JavaScript框架和React库来提高多平台开发效率的一门语言。很好地填补了跨平台开发的空缺,推出之后也是收到很多开发者的关注,目前使用的就是客户端开发者跟前端开发者居多。接下来我们将会以更新一系列的react native文章,从认识到上手到立项到发布到跑路【坏笑脸】,因为本人是前端开发,所以会以前端开发的视角来解析react native,在使用方面也是会重点以前端开发为主,结合ios与安装的混合开发来实现一个完善的app。
看透react native
react native第一次进入公众的视野是在2015年1月的react.js Conf上(想起我是在2017年9月分接触的react native),随后在同年的5月份,Facebook宣布了react native项目在github开源。结果一天之内,就收获了5000多颗星星,简直就是当红炸子鸡,想我的github star能到5000,睡觉都能笑醒。
react native与react.js
那么react native跟react.js什么关系呢?莫不是同javascript与java的关系一样?让我们先来看下react官家给出的定义: react is a JavaScript library for building user interfaces react 是一个用于前端ui开发的javascript库。react 何其他类似的前端框架相比,比如老牌的Backbone,google的angular以及尤大大以轻量级著称的vue,react的大不同,就是提出了Virtual DOM 的设计,大大地提升了页面渲染的销量。 facebook将react的设计移植到了原生开发中,诞生了react + native结合的产物,即React Native。 简单点说它们可以用二句话概括: 1.react nativ与react 使用了相同的开发语言和相同的设计理念 2.react native 是基于移动平台,而react是基于浏览器。
react native的特点
1.Learn Once, Write Anywhere
这句话简单明了地概括了React Naitve 的最大特点和优点。只要学习了react native 这一种开发方式(这里的开发方式是包括平台,语言和开发环境),就可以开发多个不同平台的App。但是有些计算机毕业的同学是不是听着这句话很耳熟呢,因为在java中很早就又提出类似的口号:Write Once, Run Anywhere。这二句话很相似也很容易混淆。react native的意思是降低学习成本,正对不同的平台可能还需要单独开发,而java的意思是只要开发一次,就可以成功运行在不同的平台和设备上。目前react native 对安卓、ios的平台支持已经做到很好,在之后可能还会支持window、Tizen等更多的移动平台。而且React Native的大多数组件是可以在多个平台复用,所以学习了React Native之后,完全可以胜任多个平台的开发任何,且不需要很高的额外学习成本,大大降低了开发成本。
简单易学的开发语言
javascript不解释
接近原生应用的性能和体验
React Native 前二个优点,Hybrid App开发其实也同样地具备,但是混合应用的开发方式在实际开发中存在着性能和提样的先天不足,因为混合应用是在移动浏览器里面嵌入html页面,原生平台的性能优势展示就受到了限制。虽然混合应用也一直在优化与提高,但是目前阶段还是无法与原生应用相媲美。而React Native虽然是用javascript语言开发,而且使用跟混合应用也很类似,但是其实React Native的实现机制却完全不同,它的底层是以及原生平台,所以React Native在性能与体验上与原生应用可以达到大致一体的效果。对用户来说,体验可以做到无差别。
完善的生态系统
这个就不用解释了 放几个实用的地址: React Native官网 React Native中文网 掘金客户端React Native模仿版 React Native学习资料汇总 js.coach React Native开源库检索网站
搭建React Native 开发环境
安装JDK与AS SDK Tools
JSDK从JDK官网下载安装即可
安装Xcode
安装Node.js
安装React Native命令行工具
npm install -g react-native-cli
或者
cnpm install -g react-native-cli
安装之后,运行react native -v检查是否安装成功 不知道这么讲是不是太简单了,后期如果有需要还是出一个具体的安装步骤,有截图,有安装结果的,其实我自己在搭建环境的过程中也有遇到一些问题,现在想起来,觉得不足为提。但是确实是很容易遇到的,并且React Native的环境搭建算是我遇到的比较复杂的环境搭建了,找个时间把电脑的环境都清了,重新搭建一次,遇到的问题也列出来,希望能对入门的朋友们优点帮助吧。
创建项目
react-native init myRN
创建一个名为myRN的项目,创建成功后打开项目目录我们来看下。 其中:
- tests 工程的单元测试文件夹
- android Android工程文件夹
- ios ios工程文件夹
- node_modules 存放依赖库
- index.android.js Android App 入口文件
- index.ios.js IOS App 入口文件 package.json 工程配置文件,前端人员都懂得它是干嘛的
对于前端开发来说,我们的安卓与ios的访问模块自然都是一样的,所以这边一个省力的方法建议大家,可以再建一个index.js,原生入口文件再访问这个文件即可,不用一个模块要写入二个文件中。 未完待续。。。
转载于:https://juejin.im/post/5c2b269d518825282222b0a2
react native 包学不包会系列--认识react native相关推荐
- 全网最简单的网络图画法,小白福音包学包会
全网最简单的网络图画法,小白福音包学包会 徐锐(助理研究员),广东省生态环境技术研究所,土壤微生物与宏基因组方向 版本1.0.1,更新日期:2020年6月23日 本项目永久地址:https://git ...
- react全局状态管理_rxv: 在React中用Vue3的reactivity包实现状态管理。
前言 React的状态管理是一个缤纷繁杂的大世界,光我知道的就不下数十种,其中有最出名immutable阵营的redux,有mutable阵营的mobx,react-easy-state,在hooks ...
- OPPOR9Plus系列通刷刷机包精简包_OPPOR9Plus线刷包救砖包_OPPOR9Plus纯净刷机包_OPPOR9Plus刷机教程下载
OPPOR9Plus系列通刷刷机包精简包_OPPOR9Plus线刷包救砖包_OPPOR9Plus纯净刷机包_OPPOR9Plus刷机教程下载 OPPOR9Plus不开机.定屏.重启.中毒.反应慢.解屏 ...
- 【看表情包学Linux】进程创建 | 进程终止 | 分叉函数 fork | 写时拷贝 | 内核数据结构缓冲池 | slab 分派器
爆笑教程<看表情包学Linux>
- ZYNQ开发系列——hw_platform包和BSP包中的一些理解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--hw_platform包和BSP包中的一些理解 前言 hw_platform BSP包 前言 前面我们完成了PS输 ...
- Live Source Address 2019最新的电视广播包_JPXzq 软硬包定制背景墙【刺绣系列】
典雅刺绣软硬包 Elegant embroidery soft and hard bag 刺绣是中国民间传统手工艺之一 在中国至少有二三千年历史 它是用针和线把人的设计和制作 添加在任何存在的织物上的 ...
- (油条)秘方--包学包会 韭菜盒 发糕 饺子 水煎包 灌汤小笼包 蒸包 - Qzone日志
|返回日志列表 转载自 朋友网用户 2010年12月01日 20:06 阅读(loading...) 评论(0) 分类:天下杂侃 油条秘方--包学包会 用料: (4条正常大油条的量,1tsb= 1茶匙 ...
- 【看表情包学Linux】初识文件描述符 | 虚拟文件系统 (VFS) 初探 | 系统传递标记位 | O_TRUNC | O_APPEND
爆笑教程<看表情包学Linux>
- [跟我学UML] UML包图中的包引入和包合并
缩略语 UIS UML Infrastructure Specification UML基础结构规范 UML Unifed Modeling Language ...
最新文章
- 关于做Android+J2ee系统集成开发的一点心得
- php 添加工信部链接,常见程序(wordpress,dede,discuz)网页下方添加备案号,添加链接跳转到工信部...
- mysql主从不同步怎么恢复_mysql主从不同步时,怎么恢复
- ots在线考计算机的word,ots在线考试系统1(OTS online examination system 1).doc
- [福建集训2011][LOJ10111]相框
- 流量隔离方案 Dpath 护航双十一新零售
- mysql --max_allowed_packet=32m,如何修改MySQL-max_allowed_packet
- 精彩回顾丨2021数据库大咖讲坛(第7期)视频PPT互动问答
- 下一代 Windows 将至,是全新的 Windows 11 还是 Windows 10 的延续?
- oracle 批量插入 mysql 区别,Mysql与Oracle中批量插入和更新区别
- 智能手机的硬件组成部分及结构图
- Dnf资源分析与提取工具(附代码)
- MATLAB 人脸识别矩阵(矩阵、相似度)
- 【计算机网络】计网学习——总览(超多图+超详解)
- 计算机和网络之间有个感叹号,网络有个感叹号!电脑无线网络连接不上的几种常见问题...
- PHP网站(Drupal7)响应过慢之“Wating(TTFB)时间过长”
- LaTeX不显示页码_老板让我给PPT加页码,我哭了!
- python生成微信个性签名的词云图
- Canvas画钟 js
- Windows 系统画图软件如何切换输入文字的方向
热门文章
- java class 转 字节_[转]JAVA字节数据与JAVA类型的转换
- android最新能调试吗,android – 不能在同一台设备上安装调试和发布版本
- update 后面能接子查询吗_只用身份证能查询CPA成绩吗?查询步骤不能忘
- 打印图片预览时图片显示不出来_办公小技巧:深入挖掘实用的Excel打印秘诀
- python 一行_一行 Python 代码搞定炫酷可视化
- java使用varargs,Java 实例 – Varargs 可变参数使用 - Java 基础教程
- mysql 字符列做日期分区_mysql 根据日期字段做表分区
- java手机号判断运营商_用Java对手机号所属运营商进行判断
- dgi数据治理_荐书 | 5G时代组织急需数据体检
- mysql占位符 防注入_php mysql中防注入的几个小问题,麻烦大大帮我解答谢谢