出于好奇我开始学习React,并想知道React和React Native的区别-尽管使用Google找不到令人满意的答案。React和React Native似乎具有相同的格式。它们是否具有完全不同的语法?
出于好奇我开始学习React,并想知道React和React Native的区别-尽管使用Google找不到令人满意的答案。React和React Native似乎具有相同的格式。它们是否具有完全不同的语法?
React Native 主要使用 JavaScript 进行开发,这意味着大部分启动所需的代码可以在平台之间共享。React Native 会使用本地组件进行渲染。React Native 应用程序是使用目标平台所需的语言进行开发的,例如 Objective-C 或 Swift 用于 iOS,Java 用于 Android 等等。编写的代码不能在平台之间共享且行为有所不同。它们可以直接访问平台提供的所有功能,没有任何限制。
React 是由 Facebook 开发的开源 JavaScript 库,用于构建用户界面。它通常用于处理 Web 和移动应用程序的视图层。ReactJS 用于创建可重用的 UI 组件,是目前 IT 领域最受欢迎的 JavaScript 库之一,并拥有强大的基础和庞大的社区支持。如果您学习 ReactJS,则需要了解 JavaScript、HTML5 和 CSS。
ReactJS是一个核心框架,旨在基于响应式模式构建组件隔离,您可以将其视为MVC中的V,尽管我想指出React带来了不同的感觉,特别是如果您对响应式概念不熟悉。
ReactNative是另一层,旨在拥有Android和iOS平台的常见组件集。因此,代码看起来基本相同,因为它就是ReactJS,但在移动平台上以原生方式加载。您还可以使用Java/Objective-C/Swift桥接更复杂和与平台相关的API,然后在React中使用。
React是React Native和React DOM的基本抽象,因此如果您要使用React Native,您也需要React...对于Web开发来说也是一样,只不过您需要使用React DOM而不是React Native。
由于React是基本抽象,因此一般的语法和工作流程相同,但您将使用的组件非常不同,因此您需要学习这些差异。这与React所谓的口号“学一次,随处编写”是一致的,因为如果您了解React(基本抽象),则可以在不学习另一种编程语言、语法和工作流程的情况下简单地学习平台之间的差异。
React-Native 是一个框架,而 ReactJS 则是你可以用于网站的 JavaScript 库。
React-Native 提供了默认的核心组件(如图像、文本),而 React 提供了一堆组件并使它们协同工作。
React Native是用于移动应用程序的,而React则是用于网站(前端)的。 这两个框架都是由Facebook发明的。 React Native是一个跨平台开发框架,这意味着一个人可以编写几乎相同的代码用于IOS和Android,而且它可以工作。我个人对React Native了解更多,因此就到此为止。
React Js是一个Javascript库,您可以使用它来开发和运行更快的Web应用程序。
React Native让您只使用JavaScript构建移动应用程序,它被用于移动应用程序开发。更多信息请参见https://facebook.github.io/react-native/docs/getting-started.html
关于组件的生命周期和其他所有功能,大部分都是相同的。
主要区别在于使用的JSX标记。React使用类似HTML的标记。而另一种标记是由React Native用于显示视图的。
React Js 是通过操作 HTML Dom 来完成操作的。 而 React Native 是通过操作移动端(iOS/Android)本地 UI 组件来完成操作的。
虽然有点晚,但以下是更加全面的回答和示例:
React是一个基于组件的UI库,使用“shadow DOM”来高效地更新DOM,而不是为每个更改重建整个DOM树。它最初是为Web应用程序构建的,但现在也可以用于移动设备和3D / VR。
React和React Native之间的组件不能互换,因为React Native映射到本机移动UI元素,但业务逻辑和非渲染相关代码可以重用。
最初包含在React库中,但在React被用于除Web之外的其他平台时被拆分出来。它作为DOM的入口点,与React一起使用。
例子:
import React from 'react';
import ReactDOM from 'react-dom';
class App extends Component {
state = {
data: [],
}
componentDidMount() {
const data = API.getData(); // fetch some data
this.setState({ data })
}
clearData = () => {
this.setState({
data: [],
});
}
render() {
return (
<div>
{this.state.data.map((data) => (
<p key={data.id}>{data.label}</p>
))}
<button onClick={this.clearData}>
Clear list
</button>
</div>
);
}
}
ReactDOM.render(App, document.getElementById('app'));
React Native是一个跨平台移动框架,使用React,并通过“bridge”在JavaScript和本机组件之间进行通信。因此,在使用React Native时,许多UI结构都必须不同。例如:构建列表时,如果尝试使用map
而非React Native的FlatList
来构建列表,则会遇到主要性能问题。
React Native可用于构建IOS/Android移动应用程序,以及智能手表和电视。
Expo是开始新的React Native应用程序时的首选。
Expo是一种面向通用React应用程序的框架和平台。它是围绕React Native和本地平台构建的一组工具和服务,可帮助您开发、构建、部署和快速迭代iOS、Android和Web应用程序
注意:使用Expo时,只能使用他们提供的原生API。您包含的所有其他库都需要是纯JavaScript,或者您需要退出Expo。
使用React Native的相同示例:
import React, { Component } from 'react';
import { Flatlist, View, Text, StyleSheet } from 'react-native';
export default class App extends Component {
state = {
data: [],
}
componentDidMount() {
const data = API.getData(); // fetch some data
this.setState({ data })
}
clearData = () => {
this.setState({
data: [],
});
}
render() {
return (
<View style={styles.container}>
<FlatList
data={this.state.data}
renderItem={({ item }) => <Text key={item.id}>{item.label}</Text>}
/>
<Button title="Clear list" onPress={this.clearData}></Button>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
},
});
onClick
变成onPress
,React Native使用样式表以更有效的方式定义样式,而React Native使用flexbox作为默认布局结构以保持响应性。值得一提的是,React也可用于开发3D / VR应用程序。其组件结构与React Native非常相似。https://facebook.github.io/react-360/
<h1>
、<p>
等,而 React Native 则渲染原生应用程序视图组件,例如<View>
、<Text>
、<Image>
、<ScrollView>
,因此除非重新制作/替换所有元素,否则无法直接重用 UI 组件代码。 - Ira Herman