React Native探索之路
2020-02-27 288浏览
- 1.React Native探索之路 dengxi@baidu.com
- 2.Content • React Native • React Native • React Native • Demo •
- 3.React Native简介 • 概览 • 开发环境 • 技术构成 • 社区生态
- 4.React Native概览 Android Native UI iOS Native UI Layout Compiler & RTC Bridge React Virtual DOM System React Component Shared JS Logic Code LEARN ONCE, WRITE ANYWHERE BUILD MOBILE APPS WITH REACT
- 5.React Native开发环境
- 6.React Native技术构成 • 基本元素 • UI更新逻辑 • 通信机制 • 布局机制
- 7.React Native基本元素 React Native lib ListView View ScrollView TextInput UITableView UIView UIScrollView UITextField Cocoa Touch TouchableHighlight … … UIButton
- 8.React Native UI更新逻辑 React DOM diff算法
- 9.React Native通信机制 • OC • OC • Java RCT_CUSTOM_VIEW_PROPERTY RN props RCT_EXPORT_MODULE RCT_EXPORT_METHOD RN @ReactProp @ReactPropGroup set RN React Native Native • Native RTCBridge • RCTEventDispatcher JS JS 模块化、模块配置表、传递ID、封装调用、事件响应 React Native
- 10.React Native布局机制 Flex Container Cross Start Flex Item Cross Axis Flex Item Flex Item Cross Size Main Size Main Start Cross End Flex box Main Axis Main End Autolayout
- 11.React Native社区生态 • 社区活跃度 • 谁在用React Native
- 12.React Native社区活跃度 •star:37k+ •fork:8k+ •component:500+ ReactNative:A year in reviewhttps://js.coach/react-native
- 13.谁在用React NativeApps:100+ showcase
- 14.Content • React Native • React Native • React Native • Demo •
- 15.选择React Native? • 开发成本 • 对比其他方案 • 医疗业务应用场景
- 16.React Native开发成本 RN ≈ (Android + iOS + Web) / 2
- 17.对比其他方案 H5、React Native、Native应用对比分析
- 18.医疗业务应用场景 • App中频繁迭代部分:如医疗服务 • 新App开发:如医院版
- 19.Content • React Native • React Native • React Native • Demo •
- 20.如何应用React Native • 开发 • 联调 • 测试 • 发布
- 21.开发 • 环境搭建 • 知识储备 • 代码调试
- 22.联调 • 与server联调 • 植入原生应用
- 23.与server联调 fetch('http://api.baidu.com/path?params')// web api .then( response => response.json() ) .then( json => { // }) .catch(error => // ); 比XMLHttpRequest更先进的WebAPI,支持Promise
- 24.植入原生应用 1. 通过CocoaPods安装React Native 2. 创建继承自UIView的ReactView应用类 iOS 3. 通过RN的index.ios.bundle来初始化RCTRootView 4. 添加ReactView为rootView的子视图 5. 更新App Transport Security(http支持) 6. 编译运行
- 25.植入原生应用 1. build.gradle添加React Native依赖 Android 2. 创建实现ReactRootView的原生Activity 3. 获取index.android.bundle文件 4. 关联index.android.js里的React Native应用 5. 构建Android应用
- 26.测试 • Jest Tests(JS-only) • 单元测试(buckbuild) • 集成测试(buckbuild with Android SDK+NDK) • iOS有Snapshot Tests Jest Jasmine API
- 27.发布 • CodePush类服务(操作简单,但是需要APP继承SDK) • 自己搭建部署服务(iCode+Agile+ORP)
- 28.Content • React Native • React Native • React Native • Demo •
- 29.Demo演示 iOS
- 30.Demo演示 Android
- 31.Demo演示 Web
- 32.Demo资料 • msbu-react group • 上线bundle • babel静态资源处理插件
- 33.一些坑 • Android中Android SDK Build-Tools V23.0.1限制 • 三端同构产出内容需要微调抹平(如flex布局元素height) • 产出bundle内容处理(自写babel插件替换资源路径) • 等等,其实还有很多,宝宝突然懵圈想不起来了
- 34.Content • React Native • React Native • React Native • Demo •
- 35.风险及挑战 • 面临的问题及处理办法 • 构建React Native生态
- 36.面临的问题 • 版本支持度:Android 4.1+、iOS 7.0+ • 性能在高低端机型上呈两极 • 部分非常用组件存在平台差异 • 项目不成熟,版本不稳定,官方文档较少 • 对开发者的综合能力要求较高 • Web端SEO劣势
- 37.处理办法 • 版本支持度:目前App的兼容范围Cover,低版本降级处理 • 低端机性能:低端机型提供核心功能降级Web版本 • 平台性差异:搭建组件库,抹平差异 • 项目不成熟:自建生态,保持对社区的敏锐嗅觉 • 开发者能力:提供整套开发解决方案,降低研发成本 • Web端SEO:服务器端渲染
- 38.构建React Native生态 DEMO/ / App Chrome Developer Tools MVP ORP web Web
- 39.React Native资料 • facebook-react-native • awesome-react-native • react & redux
- 40.Q&A