react 和 react native 的开发过程区别

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

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

对比项 React React 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-components JS 对象(StyleSheet.create)
单位 px、rem、% 等 没有单位,默认就是 dp(设备无关像素)
支持的样式 基于 CSS 全面支持(动画、伪类等) 样式属性有限,不支持如 hover 等特性
响应式布局 媒体查询 + vw/vh 等 Flex 布局 + Dimensions 响应式方案

示例对比:

javascript 复制代码
// 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>

✅ 四、开发调试方式不同

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

✅ 五、三方库和生态不同

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

✅ 六、常见开发差异总结

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

✅ 七、打包发布差异

项目 React React Native
构建命令 npm run build → 生成 dist 静态文件 使用 Expo / Xcode / Android Studio 打包成 APK / IPA
部署平台 阿里云、Vercel、GitHub Pages 等 应用市场(App Store、Google Play)或企业内部发布
相关推荐
一点七加一1 小时前
Harmony鸿蒙开发0基础入门到精通Day07--JavaScript篇
开发语言·javascript·ecmascript
Anlici6 小时前
连载小说大学生课设 需求&架构
前端·javascript·后端
i源7 小时前
Java语言处理Js文件内容格式化
java·javascript
2501_938769997 小时前
React Server Components 进阶:数据预取与缓存
前端·react.js·缓存
“负拾捌”8 小时前
基于NodeJs实现一个MCP客户端(会话模式和无会话模式)
javascript·ai·node.js·大模型·mcp
蒜香拿铁8 小时前
Angular【基础语法】
前端·javascript·angular.js
元直数字电路验证8 小时前
ASP.NET Core Web APP(MVC)开发中无法全局配置 NuGet 包,该怎么解?
前端·javascript·ui·docker·asp.net·.net
我有一棵树9 小时前
Vue 项目中全局样式的正确写法:不要把字体和主题写在 #app 上
前端·javascript·vue.js
前端小咸鱼一条10 小时前
15. setState的更新是异步的吗
react.js
龙仔CLL10 小时前
微前端乾坤vue3项目使用tinymce,通过npm,yarn,pnpm包安装成功,但是引用报错无法使用
javascript·arcgis·npm