很多人刚开始接触移动端开发时,听到 React Native 这个词,第一反应是:这到底是个库还是个框架?它和 React 有什么区别?能不能直接上手做项目?其实答案没那么复杂。
React Native 确实是一个框架
从软件工程的定义来看,框架是一套提供基础结构、规范开发流程,并允许你在其约束下扩展功能的工具集。React Native 完全符合这个定义。它不只是一个 UI 库,而是提供了一整套构建原生移动应用的解决方案,包括组件系统、样式处理、导航机制、原生模块桥接等。
比如你写一个简单的页面,用的是 React 的语法,但底层调用的是 iOS 和 Android 的原生控件。这意味着你写的 View 实际上变成了平台对应的 UIView 或 android.view.ViewGroup。这种“写 JavaScript,产出原生体验”的能力,正是靠 React Native 框架在背后协调完成的。
和 React 的关系就像 cousins
React 是用于构建 Web 页面的 UI 库,而 React Native 是专为移动端设计的框架。它们共享相似的编程模型——组件化、状态管理、JSX 语法,但渲染目标完全不同。React 输出到 DOM,React Native 输出到原生视图。
举个例子,你在 Web 上用 <div> 布局,在 RN 里就得用 <View>;<span> 要换成 <Text>。这些组件不是浏览器标签,是 React Native 自己定义的一套跨平台抽象。
import { View, Text, StyleSheet } from 'react-native';
function App() {
return (
<View style={styles.container}>
<Text style={styles.label}>你好,世界</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
label: {
fontSize: 16,
},
});
上面这段代码跑在手机上,不会生成任何 HTML,而是通过 JavaScript 引擎和原生桥接,创建出真正的原生文本和容器组件。
为什么有人觉得它不是框架?
因为 React Native 把很多细节藏起来了。你只需要写 JS/JSX,不用操心线程调度、内存管理或者平台通信。这种“轻量感”让人误以为它只是一个渲染层。再加上早期版本依赖第三方导航、状态管理库,看起来像是拼凑出来的方案。
但现在不一样了。Expo 这类生态工具已经能把整个开发流程包圆,从初始化项目、调试、热更新到打包发布,一气呵成。这就是典型框架该干的事。
实际开发中怎么看待它的角色?
如果你要做一个跨平台 App,React Native 提供了完整的起点。你可以用 npx react-native init MyApp 直接生成项目骨架,里面有 iOS 和 Android 的原生工程,也有 JS 入口文件。这种开箱即用的结构,明显超出了“库”的范畴。
它也规定了你该怎么组织代码、怎么处理样式、怎么与原生交互。这些约定大于配置的设计思路,正是现代框架的核心特征。