书籍介绍:本书由架构师撰写,包含ReactNative框架底层原理,以及与iOS、Android混合开发案例,精选了大量实例代码,方便读者快速学习。主要内容分为两大部分,第1部分“入门”包括第19章,介绍ReactNative框架的基本原理与使用方法;第2部分“进阶”包括第1015章,介绍ReactNative框架的高阶开发与App部署相关知识。附录部分剖析了ReactNative的源码,可帮助读者研究ReactNative底层本质,还分享了一些ReactNative框架学习的相关资源。
我的简评:我是去年年底才开始学习使用React和React Native进行开发的,之前用的都是Vue的技术栈。这本书给我的感受就是逻辑清晰,通俗易懂,从基础入门到原理进阶,一一道来。但我想如果作者能再附带一个完整的项目实战可能效果更好,不过作者ParryQiu本人也写过很多技术教程以及录制了几套视频教程,有兴趣的可以去他个人的技术博客看看。
!!福利:文末有pdf书籍、笔记思维导图、随书代码打包下载地址。觉得有用,记得点赞或收藏哦!
最早孵化于Facebook内部
Jordan Walke是框架的创始人
底层核心是Virtual DOM
React Native简介在React框架的基础之上
底层通过对IOS平台和Android平台原生代码的封装与调用
JavaScript Core底层
React Native学前知识HTML5的基础知识
CSS布局的基本知识
JavaScript的基础知识
Ios和Android两个平台的App打包、部署与上线
Node.js以及npm包管理的知识
2.开发环境配置安装nodejs
安装React Native
编辑器Vscode
推荐插件React Native Tools
react-beautify
3.React Native工作原理与生命周期 3.1.框架工作原理JSX源码通过React Native框架编译后,通过对应平台的Bridge实现了与原生框架的通信
UI层变更就映射为虚拟DOM后调用diff算法计算出变动后的JSON映射文件,最终由Native层将此JSON文件映射渲染到原生App的页面元素上,实现了项目中只需控制state以及props的变更来引起IOS与Android平台的UI变更
3.2.与原生平台通信与原生框架通信中,采用了JavaScriptCore作为JS VM,中间通过JSON文件与Bridge进行通信
Chrome浏览器进行调试,那么所有的JavaScript代码都将运行在Chrome的V8引擎中,与原生代码通过WebSocket进行通信
3.3.组件间通信父子组件通信:props
子父组件通信:传入函数
多级组件之间的通信:context对象或global等方式
无直接关系组件间通信:AsyncStorage或JSON文件,EventEmitter/EventTarget/EventDispatcher继承或实现的接口,Signals模式,Publish/Suubscribe广播形式
3.4.React Native生命周期初始化阶段:constructor
加载阶段:componentWillMount、render、componentDidMount
更新阶段:componentWillReceiveProps、shouldComponentUpdate、componentWillUpdate、componentDidUpdate
卸载阶段:componentWillUnmount
4.React Native页面布局 4.1.CSS3选择器、2D/3D转换、盒子模型、动画、背景和边框、多列布局、文字特效、用户界面
引入新的模块:Flex布局,通俗称为弹性盒模型。为了更加有效的去布局、对其元素
4.2.Flex弹性盒模型元素以两个坐标方向进行布局,分别称为主轴和交叉轴
元素都存在于Flex容器中
以Flex Container的起始与结束作为坐标的起始与结束点
可以自动伸缩,默认可以填充剩余的空间
4.3.Flex详解justify-content
align-items
align-self
flex-direction
flex-basis
flex-wrap
align-content
flex-grow
flex-shrink
order
flex-flow
flex
4.4.React Native中Flex因为在React Native框架中直接使用JavaScript来实现属性的定义,所以所有属性都按照React Native中定义的写法来写,只是属性名称部分有连接符的,在React Native中变成了驼峰拼写的形式,并且某些属性的默认值进行了变更,但是本质的原理与作用是不变的
5.React Native开发调试技巧与工具 5.2.常用调试属性(开发者菜单)重新加载刷新应用
启动实时重新加载刷新
启用调试跟踪
启用热加载
显示审查元素工具
显示性能监控工具
5.3.Chrome中远程调试在 React Native 开发调试时,打开模拟器或真机设备上的开发者菜单,选择“ Debug JS Remotely ”后,本地的 Chrome 浏览器会自动打开一个 tab,URL 地址
为 :8081/debugger-ui
树形结构查看
源码搜索
边栏工具
6.React Native组件详解 6.1.组件简介提供一系列的内置组件供开发者使用
依托开源社区强大的生态系统,更有无穷无尽的开发组件可供使用
6.2.视图组件View用于布局的基础组件是View组件,其他所有的组件都可以布局在View组件中,类似网页布局中的div
支持Flex CSS属性,还支持React Native中的样式、一些触摸事件以及一些可访问性的属性设置
View组件对应iOS平台的UIView,Android平台的Android.view以及HTML中的div
6.3.底部导航组件TabBariOS平台下的TabBarIOS
Android平台没有官方提供的TabBar组件,推荐使用开源组件react-native-tab-navigator
6.4.页面跳转组件iOS平台下的NavigatorIOS
Android没有官方的页面导航组件,推荐使用react-native-navigation
6.5.图片组件Image提供多种方式加载图片资源,如加载网络图片、静态资源、本地图片、或读取用户相册中的图片
Android平台下还可以支持GIF和WebP图片格式,iOS平台上支持psd
在iOS平台下,加载的资源必须是HTTPS协议资源
6.6.文本组件TextReact Native中不可以直接将文字放置在View组件之下
可以进行文字的嵌套处理
React Native没有直接定义元素级别样式的能力,所以不能让所有的Text等组件直接通过继承的方式获取到统一的样式定义
6.7.输入框组件TextInput