当前位置: 首页 > news >正文

react 和 react native 的开发过程区别

React 和 React Native 虽然都使用 React 思想和语法(函数组件、Hooks、JSX 等),但在 开发流程、渲染机制、UI 组件、样式处理、运行平台 等方面有明显差异。以下是对比总结:

 

✅ 一、开发目的和平台不同

对比项ReactReact Native
应用类型Web 应用(浏览器)移动 App(iOS / Android)
渲染目标HTML + CSS原生组件(View、Text 等)
运行环境浏览器手机系统(通过 JS Bridge)

 

✅ 二、UI 组件不同

React 使用的是 DOM 元素,React Native 使用的是原生组件:

功能React (Web)React Native (App)
容器<div><View>
文本<p> / <span><Text>
图片<img src="" /><Image source={...} />
输入框<input /> / <textarea /><TextInput />
按钮<button><TouchableOpacity> / <Pressable>
表单校验AntD、Form 表单等Formik、react-hook-form 等(配合使用)

 

✅ 三、样式写法不同

项目React(Web)React Native(App)
样式语言CSS / SASS / styled-componentsJS 对象(StyleSheet.create)
单位px、rem、% 等没有单位,默认就是 dp(设备无关像素)
支持的样式基于 CSS 全面支持(动画、伪类等)样式属性有限,不支持如 hover 等特性
响应式布局媒体查询 + vw/vh 等Flex 布局 + Dimensions 响应式方案

示例对比:

// React Web
<div className="box">Hello</div>
<style>.box { color: red; padding: 10px; }
</style>// React Native
<View style={{ color: 'red', padding: 10 }}><Text>Hello</Text>
</View>

✅ 四、开发调试方式不同

对比项ReactReact Native
启动方式npm start → 浏览器访问使用 Expo 或 RN CLI → 手机/模拟器运行
预览方式浏览器iOS / Android 真机 or 模拟器
调试方式浏览器 DevToolsChrome DevTools / React Native Debugger / Flipper
热更新HMR(浏览器自动刷新)Fast Refresh(设备自动刷新)

 

✅ 五、三方库和生态不同

内容ReactReact Native
UI 库AntD / MUI / TailwindCSS 等React Native Elements / NativeBase 等
路由React RouterReact Navigation
状态管理Redux / MobX / Zustand 等同上,但注意需适配原生组件
网络请求Axios / FetchAxios / Fetch / plus 网络状态监听库
动画库Framer Motion / GSAPReanimated / react-native-animatable

 

✅ 六、常见开发差异总结

开发项ReactReact Native
页面跳转React RouterReact Navigation
表单处理AntD Form / react-hook-formFormik / react-hook-form(自适配 RN)
文件上传<input type="file" />需使用原生模块(ImagePicker、DocumentPicker)
通知权限浏览器原生通知原生模块(如 react-native-push-notification
调用摄像头等硬件基本不涉及需使用原生模块(如 expo-camerareact-native-camera

 

✅ 七、打包发布差异

项目ReactReact Native
构建命令npm run build → 生成 dist 静态文件使用 Expo / Xcode / Android Studio 打包成 APK / IPA
部署平台阿里云、Vercel、GitHub Pages 等应用市场(App Store、Google Play)或企业内部发布

 

http://www.dtcms.com/a/311346.html

相关文章:

  • 【相机】曝光时间长-->拖影
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第7章 事务
  • openwrt下安装istore(基于pve)
  • Ollama前端:open-webui
  • [Linux入门] Ubuntu 系统中 iptables 的配置与使用
  • JavaScript:Ajax(异步通信技术)
  • 学习模板元编程(2)std::true_type/false_type
  • 垃圾收集器ParNewCMS与底层三色标记算法详解
  • Redisson高并发实战:Netty IO线程免遭阻塞的守护指南
  • JVM 03 类加载机制
  • uniapp scroll-view解析
  • 常用git命令
  • 算法训练营DAY46 第九章 动态规划part13
  • 【龙芯99派新世界】buildroot快速使用笔记
  • SPI通信中CS片选的两种实现方案:硬件片选与软件片选
  • 电力系统分析学习笔记(二)- 标幺值计算与变压器建模
  • QT5.12.8 QTabWidget 透明样式QSS
  • Flask + YARA-Python*实现文件扫描功能
  • C++音视频开发:基础面试题
  • STM32 GPIO 中8种配置模式
  • 图漾AGV行业常用相机使用文档
  • 快速了解机器学习
  • 【机器学习】非线性分类算法详解(下):决策树(最佳分裂特征选择的艺术)与支持向量机(最大间隔和核技巧)
  • Python Pandas.unique函数解析与实战教程
  • mac中使用gvm install没有效果
  • 【Android】进度条ProgressBar 可拖拽进度条Seekbar
  • 云运维解决方案(word)
  • Python 入门指南:从零基础到环境搭建
  • 数字化转型-灯塔工厂建设
  • StyleX:Meta推出的高性能零运行时CSS-in-JS解决方案