RN业务框架搭建
一、背景
业务线增多,为了快速构建RN业务架构,则需要一套基础业务模板,包含
- RN基础框架
- 工程化规范配置: 代码规范 ESlint,Prettier git提交规范 gi-cz husky
- 路由
- 状态机
- 网络
- UI
- 常用工具库
二、具体流程
RN基础框架
为了能使用 React Native CLI 直接创建,要满足基础结构
- tempalte - package.json - template.config.js
template.config.js中的placeholderName就是template项目的名字,cli会根据这个直接替换成用户的项目名
module.exports = { // Placeholder used to rename and replace in files // package.json, index.json, android/, ios/ placeholderName: "ProjectName", // Directory with template templateDir: "./template", // Path to script, which will be executed after init // postInitScript: "./script.js" };
用官方的基础模板
npx react-native init template
基础框架自动发布到npm,通过GitHub Action自动发布
前端工程化配置 husky + lint-staged
在团队开发时,为了保证每个人提交的代码格式统一,采用husky + lint-staged 配置git hooks,自动触发格式化操作,对通过git add命令添加到暂存区的代码进行格式化
路由
使用的react-navigation@6.x版本
yarn add @react-navigation/native react-native-screens react-native-safe-area-context
react-native-screens
软件包需要一个额外的配置步骤才能在 Android 设备上正常工作。编辑MainActivity.kt
或MainActivity.java
位于 下的文件android/app/src/main/java/<your package name>/
。将突出显示的代码添加到
MainActivity
类的主体中:kotlinclass MainActivity: ReactActivity() { // ... override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(null) } // ... }
并确保在此文件顶部的包声明下方添加以下导入声明:
javaimport android.os.Bundle;
需要进行此更改,以避免与 View 状态在 Activity 重新启动期间未一致持久相关的崩溃。
react-native-config多环境配置集成
设置环境变量,可以统一在env文件中设置后,作用与js,安卓,ios原生代码及原生配置中
ios配合多个scheme可以在手机上安装不同环境的安装包
安卓配合多渠道打包可以在手机上安装不同环境的安装包
fastlane持续集成,自动化打包
- fastlane init 初始化
- fastlane ver 运行ver这个lane
- fastlane ver ver:1.0.0 运行ver这个lane,并且传递ver这个参数
- fastlane match init 初始化macth
- fastlane match development 匹配开发模式并且初始化相关配置
store
Mobx到zustand
mobx用类组件分析,全面拥抱hooks,用函数组件分析zustand
zustand核心useSyncExternalStore
axios网络请求
三、集成的库及其作用
- react-native-gesture-handler Gesture Handler 旨在取代 React Native 的内置触摸系统,称为Gesture Responder System。
- react-native-safe-area-context 获取机型的刘海儿,安全区等距离
- react-native-config 设置环境变量,可以统一在env文件中设置后,作用与js,安卓,ios原生代码及原生配置中
- react-native-bootsplash 启动页