React Native---iOS开发学习
来源:互联网 发布:mac os 10.11.6 懒人 编辑:程序博客网 时间:2024/05/19 10:08
作为一名iOS开发者,断断续续一年前开始接触React Native,最近由于工作需要,专职学习React Native也有一个多月了。网络上知识资源非常的多,但能让人豁然开朗、迅速学习的还是少数,我整理出的这些文章对于初学者来说是比较有好的,希望通过整理我的学习路线,能给同样作为iOS开发者,想学习React Native的朋友们一些帮助。
既然是写给iOS开发者的,那么我默认你已经掌握iOS原生应用开发的基本知识,所以对iOS原生开发的相关内容不做解释说明。
React Native概念介绍
名词解释
首先列举几个关键词:
React
Native
React Native
这三个词其实没有太大关系,我们逐个来解释:
React:近几年Web前端领域非常火热的一个开发框架React.JS,其核心思想是将视图组件化,通过更新组件的state来渲染出组件。
Native:这个词从字面理解就够了,就是指原生的。前几年有个非常火热的跨平台开发框架– PhoneGap(现称Cordova),那就不是原生的开发方式。原生就要使用对应平台的特定语言和框架进行开发,比如使用Objective-C或Swift开发的iOS应用。React Native:结合了这两个词,我们可以简单地得到结论:使用React框架进行原生方式的开发。
实现原理
我们都知道在iOS平台上,苹果提供了一个JavaScriptCore的framework,可以进行JavaScript语言的解析,React Native通过多次封装定义,最终实现了在JavaScript语言中调用Objective-C的类和方法。具体的原理我们现在还不必深究,后文的学习路线中会有提到。
所以既然是调用Objective-C的类和方法,性能上当然是不差的(但也不完美),所以这也是React Native相比其他跨平台开发方式的一大优势。
评价
跨平台:目前React Native官方已经支持iOS、Android两个平台的移动设备,民间也有一些大牛在做macOS、tvOS,甚至UWP平台的适配。但由于不同平台特性不同,并不能一份代码在所有平台上直接运行,React Native的思想是「Learn once, write anywhere」,我们需要针对不同平台的特性写出不同的代码,尽量保持组件的高可复用性。
性能:官方宣称性能堪比Native,实际使用中我们会发现几个问题,比如复杂视图渲染出View层级过多、ListView(等同于iOS上的UITableView)无重用机制、有些组件存在内存泄露。这就会导致在部分低端Android机型上的性能过差,复杂的、大型的应用会有明显性能问题。
热更新:由于App Store应用商店发版迭代效率问题,热更新成为了iOS平台非常渴求的功能,可喜的是React Native的热更新能力非常好,通过将JavaScript代码部署到服务器中,运行过程中即可重新reload整个界面。(PS:目前热更苹果已经出台针对措施!)
学习成本:对于iOS开发者来讲,要了解相当数量的Web前端开发知识才可以进行开发,对于Web前端开发者来讲,对于原生性能调优则需要原生开发知识和经验,所以说学习成本略高。
开发效率 :Android和iOS平台可复用很多组件,仅部分代码需要各自平台分别维护,所以比开发两个平台原生应用效率要高得多。加上本身可动态渲染的能力,不用重新编译,
Command⌘+R
即可重新渲染界面,开发效率更是惊人地快。
学习路线
按照顺序进行学习即可
开发环境配置
- 你的电脑若未安装Homebrew、Node.js、WatchMan等工具,请参照:
配置React Native的开发环境 - CSDN
- 若已安装Homebrew、Node.js、WatchMan,请直接:
搭建开发环境 - react native 中文网
- 对于IDE/Editor的选择,目前可以有Sublime Text、VSCode、WebStorm、Atom+Nuclide、Deco选择。我个人比较推荐的是VSCode和WebStorm。以下提供两篇关于IDE的设置。
WebStorm - WebStorm开发工具设置React Native智能提示 - CSDN
VSCode - VSCode IDE超强开发插件介绍 - 江清清的技术专栏
JavaScript
首先是最基础的JavaScript教程,快速过一遍即可。
JavaScript 高级教程 - W3School
不再彷徨:完全弄懂JavaScript中的this(译文总结) - Segmentfault
ES6
ES6也称ES2015,是JavaScipt语言的较新的一种标准,在React Native开发时,我们建议使用这种标准。
ECMAScript 2015 简易教程 - 颜海镜
ECMAScript 6 入门 - 阮一峰
关于Promise:你可能不知道的6件事 - dwqs/blog
语法规范
- JavaScript本身变化很快,这份由Airbnb维护的语法规范是使用较为广泛、全面的,很有参考性。
Airbnb React/JSX Style Guide
React Native
快速入门
快速入门实例 - react native 中文网
由于会有一些开源项目和开源组件使用ES5标准进行开发,所以应该看得懂ES5代码。
React/React Native 的ES5 ES6写法对照表 - react native 中文网
布局
- 布局 FlexBox布局 - 简书
组件
React-Native从入门到深入–组件生命周期 - 简书
React Native 的 Navigator 组件使用方式 - Mystra
React-Native组件用法详解之ListView - 简书
更多组件学习请参考:React Native专题 - 江清清的技术专栏
React with Redux
Redux 简明教程 - GitHub
Redux 状态管理方法与实例 - Segmentfault
【译】Redux和命令模式 - Jimmylv
Redux 中文文档 - Redux
React + Redux 组件化方案 - IMWeb
React-Native with Redux - Lifecycle
热更新
CodePush 热更新流程(iOS) - talisk’s Wiki
React Native热更新部署/热更新-CodePush最新集成总结 - 简书
原理
- React Native 通信机制详解 - bang’s blog
推荐资源
awesome-react-native - GitHub
React Native 中文网
江清清的技术专栏
最后附上原文链接:
talisk斯温的技术博客](http://blog.talisk.cn/)
- React Native---iOS开发学习
- 学习iOS、React Native、算法开发的建议
- 学习iOS、React Native、算法开发的建议
- 学习iOS、React Native、算法开发的建议
- 学习iOS、React Native、算法开发的建议
- 学习iOS、React Native、算法开发的建议
- iOS新知识学习之React Native开发工具集
- [React Native混合开发]React Native for iOS之应用
- iOS React Native 混合开发集成React Native
- iOS开发 React-native开发环境配置
- iOS开发 React-native开发环境配置
- React Native iOS 开发环境搭建
- React Native ios开发第一课
- React Native开发原生Android,IOS教程
- 使用react native开发ios心得杂记
- iOS 开发是否要采用 React Native?
- iOS 开发是否要采用 React Native?
- iOS 开发是否要采用 React Native?
- Android中的尺寸
- 成功人士的七个习惯
- 作环保的程序员----一个放飞随性、桀骜不羁、极富情怀的技术人
- LeetCode Algorithms 18. 4Sum 题解
- css3动画(annimate)基础
- React Native---iOS开发学习
- 暗网数据交易
- 深入理解 Session 与 Cookie
- 巧用checkbox与edittext实现密码框
- Android严苛模式【调试、优化、检查】优化APP
- 兼容查询网址
- Android解析压缩的xml文件
- hdu 1426 深坑dfs
- 如此理解面向对象编程----对oop全新的解读,颠覆此前的认知