ข้อแตกต่างระหว่าง React Native กับ React คืออะไร


730

ฉันเริ่มเรียนรู้ที่จะตอบโต้ด้วยความอยากรู้อยากเห็นและต้องการทราบความแตกต่างระหว่าง React และ React Native - แม้ว่าจะไม่สามารถหาคำตอบที่น่าพอใจโดยใช้ Google React และ React Native น่าจะมีรูปแบบเดียวกัน พวกเขามีไวยากรณ์ที่แตกต่างอย่างสิ้นเชิง?


61
ทุกคนให้คำตอบกับพจนานุกรมเมื่อคนส่วนใหญ่ถามคำถามนี้แค่อยากรู้ว่าพวกเขาใช้แทนกันได้อย่างไร: มันง่ายแค่ไหนที่จะทำการพอร์ตโค้ด React ของพวกเขาไปยัง React Native? คุณจะต้องเขียนปลายด้านหน้าของเว็บแอปของคุณให้เป็นที่แตกต่างกัน React รหัสถ้าคุณต้องการมันบน iPad? แตกต่างกันอย่างไร
Lawrence Weru

9
อะไรคือความแตกต่างที่สำคัญระหว่าง ReactJS และ React-Native? ลิงค์ที่นี่ medium.com/@alexmngn/…
core114

14
คำตอบสั้น ๆ ก็คือสร้างแอปมือถือตามปฏิกิริยาสำหรับ iOS, Android และ Windows Mobile ที่คุณสามารถรวบรวมและวางไว้ในร้านค้าแอพเพื่อให้ผู้ใช้ติดตั้ง Reactjs ใช้สำหรับสร้างเว็บเพจเพื่อใช้ในเว็บเบราว์เซอร์ ทั้งสองใช้ส่วนประกอบที่นำกลับมาใช้ใหม่ได้ แต่ไวยากรณ์ที่คุณใช้เพื่อแสดงองค์ประกอบในส่วนประกอบ (โดยใช้ JSX) นั้นแตกต่างกัน ตอบสนอง JSX แสดงผล HTML เหมือนส่วนประกอบชอบ<h1>, <p>ฯลฯ ไหนตอบสนองพื้นเมืองทำให้ส่วนประกอบมุมมอง app พื้นเมืองเช่น<View>, <Text>, <Image>, <ScrollView>ดังนั้นคุณจึงไม่สามารถนำมาใช้โดยตรง UI รหัสคอมโพเนนต์ของคุณจนกว่าคุณจะทำงานซ้ำ / แทนที่ทุกองค์ประกอบ
Ira Herman

คำตอบ:


772

ReactJSเป็นไลบรารี JavaScript ที่สนับสนุนทั้งเว็บส่วนหน้าและทำงานบนเซิร์ฟเวอร์สำหรับการสร้างส่วนต่อประสานผู้ใช้และเว็บแอปพลิเคชัน

React Nativeเป็นเฟรมเวิร์กมือถือที่คอมไพล์ส่วนประกอบของแอพเนทีฟช่วยให้คุณสามารถสร้างแอพพลิเคชั่นมือถือดั้งเดิมสำหรับแพลตฟอร์มต่าง ๆ (iOS, Android และ Windows Mobile) ใน JavaScript ที่ให้คุณใช้ ReactJS เพื่อสร้างส่วนประกอบของคุณ กระโปรงหน้ารถ

ทั้งสองติดตามส่วนขยายไวยากรณ์ JSX ไปที่ JavaScript

ทั้งสองได้รับการเปิดจาก Facebook


3
@LemuelAdane นี่เขียนขึ้นจาก Facebook เกี่ยวกับวิธีการนี้จะทำ: facebook.github.io/react/docs/environments.html นี่เป็นคำแนะนำที่ดีที่จะอธิบายวิธีการนำสิ่งนี้ไปใช้: maketea.co.uk/2014/06/30/…
Nader Dabit

61
ดังนั้นหากฉันสร้างแอปในแบบโต้ตอบเนทิฟสามารถใช้ซ้ำได้ใน reactJS หรือในทางกลับกัน
ทรอย Cosentino

12
@MelAdane ผู้โพสต์มีแนวโน้มที่จะอ้างถึงการใช้ห้องสมุด ReactJS ใน NodeJS เพื่อสร้างไฟล์ที่สร้างไว้ล่วงหน้า (ใช้บางสิ่งบางอย่างเช่น Webpack) ซึ่งสามารถให้บริการลูกค้าเป็นไฟล์คงที่
Pineda

9
หากฉันสร้าง webapp โดยใช้การตอบสนองรหัส HTML / JS เดียวกันสามารถใช้ในแอพมือถือโดยใช้ native native หรือไม่?
Ravi Maniyar

14
@RaviManiyar ไม่คุณสามารถใช้ตรรกะทางธุรกิจของคุณได้อีกครั้ง แต่คุณไม่สามารถใช้รหัส UI ได้อีก React Native ใช้คอมโพเนนต์ ui ดั้งเดิมในขณะที่ React.JS ใช้สำหรับเว็บและ UI ถูกสร้างขึ้นโดยใช้คอมโพเนนต์ html และ css
Chromonav

292

นี่คือโครงการReactโครงการ

ที่ Facebook พวกเขาคิดค้นReactเพื่อให้ JavaScript สามารถจัดการเว็บไซต์ DOM ได้เร็วขึ้นโดยใช้โมเดล DOM เสมือน

การรีเฟรชเต็ม DOM นั้นช้ากว่าเมื่อเทียบกับReact virtual-dom modelซึ่งรีเฟรชเฉพาะบางส่วนของหน้า (อ่าน: รีเฟรชบางส่วน)

ดังที่คุณอาจเข้าใจจากวิดีโอนี้Facebook ไม่ได้คิดค้น React เพราะพวกเขาเข้าใจได้ทันทีว่าการรีเฟรชบางส่วนจะเร็วกว่าแบบเดิม เดิมทีพวกเขาต้องการวิธีในการลดเวลาในการสร้างแอปพลิเคชัน Facebook อีกครั้งและโชคดีที่สิ่งนี้นำมาซึ่งการฟื้นฟู DOM บางส่วนให้มีชีวิต

ตอบสนองพื้นเมืองเป็นผลมาจาก React มันเป็นแพลตฟอร์มในการสร้างแอพพื้นฐานโดยใช้ JavaScript

ก่อนที่จะตอบโต้พื้นเมืองคุณจำเป็นต้องรู้ Java สำหรับ Android หรือ Objective-C สำหรับ iPhone และ iPad เพื่อสร้างแอปพื้นฐาน

ด้วย React Native คุณสามารถเลียนแบบพฤติกรรมของแอพเนทีฟใน JavaScript และในตอนท้ายคุณจะได้รับรหัสเฉพาะแพลตฟอร์มเป็นเอาท์พุต คุณอาจผสมรหัสเนทีฟกับ JavaScript หากคุณต้องการเพิ่มประสิทธิภาพแอปพลิเคชันของคุณเพิ่มเติม

ดังที่ Olivia Bishop กล่าวไว้ในวิดีโอว่า 85% ของรหัสพื้นฐานของReactนั้นสามารถใช้ร่วมกันระหว่างแพลตฟอร์มได้ สิ่งเหล่านี้จะเป็นส่วนประกอบของแอปพลิเคชันที่ใช้โดยทั่วไปและตรรกะทั่วไป

รหัส 15% เป็นรหัสเฉพาะแพลตฟอร์ม JavaScript เฉพาะแพลตฟอร์มเป็นสิ่งที่ให้รสชาติของแพลตฟอร์ม (และสร้างความแตกต่างในประสบการณ์)

สิ่งที่เจ๋งคือโค้ดเฉพาะแพลตฟอร์มนี้ - ถูกเขียนขึ้นแล้วดังนั้นคุณต้องใช้มัน


9
โดยส่วนตัวแล้วฉันชอบคำตอบนี้มากขึ้นเนื่องจากเป็นลิงก์รายละเอียดข้อเสนอเพิ่มเติมเพื่ออธิบายเพิ่มเติม
Cristi Potlog

7
ฉันชอบคำตอบนี้ด้วย "ก่อนจะตอบโต้ชาวพื้นเมือง ... " อย่าลืมว่ามี Xamarin ด้วย ;)
Asp อัปโหลด

117

ตอบสนอง:

React เป็นไลบรารี JavaScript ที่เปิดเผยมีประสิทธิภาพและยืดหยุ่นสำหรับการสร้างส่วนต่อประสานผู้ใช้

ตอบโต้พื้นเมือง:

React Native ช่วยให้คุณสร้างแอปมือถือโดยใช้ JavaScript เท่านั้น มันใช้การออกแบบเดียวกันกับ React เพื่อให้คุณแต่ง UI มือถือที่หลากหลายจากส่วนประกอบที่เปิดเผย
ด้วย React Native คุณจะไม่สร้าง "แอพมือถือบนเว็บ", "แอป HTML5" หรือ "แอพไฮบริด" คุณสร้างแอพมือถือตัวจริงที่แยกไม่ออกจากแอพที่สร้างขึ้นโดยใช้ Objective-C หรือ Java React Native ใช้หน่วยการสร้างพื้นฐาน UI เดียวกับแอพ iOS และ Android ปกติ คุณเพิ่งสร้างบล็อคเหล่านั้นเข้าด้วยกันโดยใช้ JavaScript และทำปฏิกิริยา
React Native ช่วยให้คุณสร้างแอปได้เร็วขึ้น แทนที่จะทำการคอมไพล์ซ้ำคุณสามารถโหลดแอปของคุณใหม่ได้ทันที ด้วยการรีโหลดใหม่คุณสามารถเรียกใช้รหัสใหม่ในขณะที่ยังคงสถานะแอปพลิเคชันของคุณ ลองดูสิ - มันเป็นประสบการณ์ที่มหัศจรรย์
React Native ผสมผสานอย่างราบรื่นกับส่วนประกอบที่เขียนใน Objective-C, Java หรือ Swift มันง่ายที่จะวางลงไปที่รหัสเนทิฟหากคุณต้องการเพิ่มประสิทธิภาพของแอปพลิเคชันของคุณ นอกจากนี้ยังง่ายต่อการสร้างบางส่วนของแอพของคุณใน React Native และเป็นส่วนหนึ่งของแอปของคุณโดยใช้รหัสเนทีฟโดยตรงนั่นคือวิธีที่แอพ Facebook ทำงาน

ดังนั้นโดยทั่วไปตอบสนองเป็นห้องสมุด UI สำหรับมุมมองของ app เว็บของคุณโดยใช้จาวาสคริปต์และJSX , React พื้นเมืองเป็นห้องสมุดพิเศษด้านบนของปฏิกิริยาที่จะทำให้แอปพลิเคพื้นเมืองiOSและAndroidอุปกรณ์

ทำปฏิกิริยาตัวอย่างโค้ด:

import React, { Component } from 'react';
import ReactDOM from 'react-dom';

class Clock extends React.Component {
  constructor(props) {
    super(props);
    this.state = {date: new Date()};
  }

  componentDidMount() {
    this.timerID = setInterval(
      () => this.tick(),
      1000
    );
  }

  componentWillUnmount() {
    clearInterval(this.timerID);
  }

  tick() {
    this.setState({
      date: new Date()
    });
  }

  render() {
    return (
      <div>
        <h1>Hello, world!</h1>
        <h2>It is {this.state.date.toLocaleTimeString()}.</h2>
      </div>
    );
  }
}

ReactDOM.render(
  <Clock />,
  document.getElementById('root')
);


ตอบสนองตัวอย่างโค้ดเนทีฟ:

import React, { Component } from 'react';
import { Text, View } from 'react-native';

class WhyReactNativeIsSoGreat extends Component {
  render() {
    return (
      <View>
        <Text>
          If you like React on the web, you'll like React Native.
        </Text>
        <Text>
          You just use native components like 'View' and 'Text',
          instead of web components like 'div' and 'span'.
        </Text>
      </View>
    );
  }
}

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับReactเยี่ยมชมเว็บไซต์อย่างเป็นทางการของพวกเขาสร้างโดยทีม Facebook:

https://facebook.github.io/react

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับReact Nativeเยี่ยมชมเว็บไซต์ React Native ด้านล่าง:

https://facebook.github.io/react-native


40
ตัวอย่างโค้ดของคุณมีประโยชน์ แต่มันจะดีกว่ามากที่จะเห็นองค์ประกอบเดียวกันการดำเนินการในกรอบแต่ละ
poshest

8
คำตอบของคุณควรเป็นคำตอบที่ได้รับฉันมาที่นี่เพื่อดูว่า React และ React Native มีสถาปัตยกรรมเดียวกันหรือไม่และหากรหัสดูเหมือนไม่เหมือนกันสำหรับคำจำกัดความของทั้งสองไลบรารี
Gherbi Hicham

1
ฉันอยากจะเพิ่มว่าถ้าคุณเป็นคนพื้นเมืองคุณจะมีโค้ดเพียงสองบรรทัดซึ่งหนึ่งในนั้นถูกตั้งค่าโดยอัตโนมัติสำหรับร้าน (ขึ้นอยู่กับ) ใช่คุณต้องมีตัวจัดรูปแบบวันที่ แต่ก็ยังมีเพียงบรรทัดเดียว ฉันอ่านยาก "นี่คือเหตุผลว่าทำไมการตอบสนองจึงยอดเยี่ยม" เมื่อมีรหัสมากกว่า 20 เท่าของแอปดั้งเดิม ที่กล่าวว่าฉันขอขอบคุณคำตอบของคุณและเพลิดเพลินไปกับ React บนเว็บสำหรับโซลูชั่นที่ให้ในโดเมนที่ยอดเยี่ยม ฉันแค่อยากให้ผู้คนจำนวนมากรู้วิธีนำรูปแบบไปใช้โดยไม่ใช้มันเพื่อเปรียบเทียบเมื่อมันมีประโยชน์เทียบกับฝันร้ายในการบำรุงรักษา
Stephen J

58

ReactJS เป็นกรอบสำหรับการสร้างลำดับชั้นของส่วนประกอบ UI แต่ละองค์ประกอบมีสถานะและอุปกรณ์ประกอบฉาก ข้อมูลไหลจากส่วนประกอบบนไปยังส่วนประกอบระดับต่ำผ่านอุปกรณ์ประกอบฉาก สถานะถูกอัพเดตในคอมโพเนนต์ระดับบนสุดโดยใช้ตัวจัดการเหตุการณ์

React native ใช้ React framework สำหรับสร้างส่วนประกอบสำหรับแอพมือถือ React native จัดเตรียมชุดส่วนประกอบพื้นฐานสำหรับทั้งแพลตฟอร์ม iOS และ Android ส่วนประกอบบางอย่างใน React Native ได้แก่ Navigator, TabBar, Text, TextInput, View, ScrollView ส่วนประกอบเหล่านี้ใช้ส่วนประกอบ iOS UIKit ดั้งเดิมและ Android UI ภายใน React native ยังอนุญาตให้ NativeModules สามารถเขียนโค้ดใน ObjectiveC สำหรับ iOS และ Java สำหรับ Android ภายใน JavaScript


41

ข้อแรกความคล้ายคลึงกัน:ทั้ง React & React Native (RN) ถูกออกแบบมาเพื่อสร้างส่วนต่อประสานผู้ใช้ที่ยืดหยุ่น มีประโยชน์มากมายสำหรับเฟรมเวิร์กเหล่านี้ แต่สิ่งที่สำคัญที่สุดคือการนำสิ่งเหล่านั้นไปใช้เพื่อการพัฒนา UI Facebook พัฒนา RN ไม่กี่ปีหลังจากทำปฏิกิริยา

ตอบสนอง: Facebook ออกแบบกรอบนี้จะเป็นเหมือนการเขียนภายใน JavaScript ของคุณ HTML ของคุณ / XML ซึ่งเป็นเหตุผลที่แท็กจะเรียกว่า " JSX " (XML จาวาสคริปต์) และมีความคล้ายคลึงกับที่คุ้นเคยแบบ HTML เช่นแท็กเช่นหรือ<div> <p>จุดเด่นของ React คือแท็กตัวพิมพ์ใหญ่ซึ่งแสดงถึงส่วนประกอบที่กำหนดเองเช่น<MyFancyNavbar />ซึ่งมีอยู่ใน RN ด้วย แต่ตอบสนองการใช้DOM DOM มีอยู่สำหรับ HTML ดังนั้นจึงใช้ React เพื่อการพัฒนาเว็บ

React Native: RN ไม่ได้ใช้ HTML ดังนั้นจึงไม่ได้ใช้สำหรับการพัฒนาเว็บ มันใช้สำหรับ ... แทบทุกอย่างอื่น! การพัฒนาอุปกรณ์พกพา (ทั้ง iOS และ Android), อุปกรณ์อัจฉริยะ (เช่นนาฬิกา, ทีวี), ความเป็นจริงที่เพิ่มขึ้น ฯลฯ เนื่องจาก RN ไม่มี DOM ที่จะโต้ตอบกับแทนที่จะใช้แท็ก HTML ประเภทเดียวกันที่ใช้ในการตอบสนอง แท็กที่ถูกคอมไพล์แล้วเป็นภาษาอื่น ตัวอย่างเช่นแทนที่จะเป็น<div>แท็กนักพัฒนา RN ใช้<View>แท็กในตัวของ RN ซึ่งรวบรวมเป็นรหัสเนทีฟอื่น ๆ ภายใต้ประทุน (เช่นandroid.viewบน Android และUIViewiOS)

ในระยะสั้น: มันคล้ายกันมาก (สำหรับการพัฒนา UI) แต่ใช้สำหรับสื่อที่แตกต่างกัน


คำตอบที่ดี .. คุณช่วยอธิบายเพิ่มเติมอีกหน่อยได้ไหมและเพิ่มคะแนนให้มากขึ้น มันจะดีสำหรับคนที่อ่าน
sarath

1
ใส่คำตอบนี้ให้ด้านบน
JerryGoyal

38
  1. React-Native เป็นเฟรมเวิร์กสำหรับการพัฒนาแอปพลิเคชัน Android และ iOS ที่ใช้รหัส Javascript 80% - 90%

ในขณะที่ React.js เป็นไลบรารี Javascript หลักสำหรับการพัฒนาเว็บแอปพลิเคชัน

  1. ในขณะที่คุณใช้แท็กเช่น<View>, <Text>มากบ่อยในการตอบสนอง-พื้นเมือง React.js ใช้แท็กเว็บ HTML เช่น<div> <h1> <h2>ซึ่งเป็นเพียงคำพ้องความหมายในพจนานุกรมของเว็บการพัฒนามือถือ /

  2. สำหรับ React.js คุณต้องใช้ DOM สำหรับการแสดงเส้นทางของแท็ก html ในขณะที่สำหรับแอปพลิเคชันมือถือ: React-Native ใช้ AppRegistry เพื่อลงทะเบียนแอปของคุณ

ฉันหวังว่านี่เป็นคำอธิบายที่ง่ายสำหรับความแตกต่าง / ความคล้ายคลึงกันอย่างรวดเร็วใน React.js และ React-Native


25

เราไม่สามารถเปรียบเทียบได้อย่างแน่นอน มีความแตกต่างในกรณีที่ใช้

(อัปเดต 2018)


ReactJS

React เป็นเป้าหมายหลักในการพัฒนาเว็บ

    • DOM เสมือนจริงของ React นั้นเร็วกว่าโมเดลการรีเฟรชทั่วไปเนื่องจาก DOM เสมือนจะรีเฟรชเฉพาะบางส่วนของหน้า
    • คุณสามารถใช้องค์ประกอบโค้ดใน React ซ้ำช่วยให้คุณประหยัดเวลาได้มาก (คุณสามารถใช้ React Native ได้เช่นกัน)
    • ในฐานะที่เป็นธุรกิจการแสดงผลของหน้าเว็บของคุณอย่างสมบูรณ์จากเซิร์ฟเวอร์ไปยังเบราเซอร์จะปรับปรุง SEO ของ app
    • มันช่วยเพิ่มความเร็วในการดีบั๊กทำให้ชีวิตของนักพัฒนาของคุณง่ายขึ้น
    • คุณสามารถใช้การพัฒนาแอพมือถือไฮบริดเช่น Cordova หรือ Ionic เพื่อสร้างแอพมือถือด้วย React แต่เป็นการสร้างแอพมือถืออย่างมีประสิทธิภาพด้วย React Native จากหลายจุด

ตอบสนองพื้นเมือง

ส่วนขยายของ React , niched บนการพัฒนามือถือ

    • เน้นหลักของมันคือทั้งหมดที่เกี่ยวกับโทรศัพท์มือถือเชื่อมต่อผู้ใช้
    • iOS และ Androidได้รับการคุ้มครอง
    • นำกลับมาตอบสนอง UI พื้นเมืองส่วนประกอบและโมดูลอนุญาตให้แอปไฮบริดที่จะทำให้กำเนิด
    • ไม่จำเป็นต้องยกเครื่องแอปเก่าของคุณ สิ่งที่คุณต้องทำคือเพิ่มส่วนประกอบ React Native UI ลงในรหัสของแอพที่มีอยู่โดยไม่ต้องเขียนซ้ำ
    • ไม่ใช้ภาษา HTML ในการแสดงผลแอป นำเสนอส่วนประกอบทางเลือกที่ทำงานในลักษณะเดียวกันดังนั้นจึงไม่ยากที่จะเข้าใจ
    • เนื่องจากรหัสของคุณไม่ได้รับการแสดงผลในหน้า HTML นี่หมายความว่าคุณจะไม่สามารถนำไลบรารีที่คุณใช้ก่อนหน้านี้มาใช้ซ้ำกับ Reactที่แสดงผล HTML, SVG หรือ Canvas ได้
    • React Native ไม่ได้ทำจากองค์ประกอบของเว็บและไม่สามารถจัดสไตล์ได้ในลักษณะเดียวกัน ภาพเคลื่อนไหว CSS ลาก่อน!

หวังว่าฉันช่วยคุณ :)


17

ในแง่ที่เรียบง่าย React และ React Native จะปฏิบัติตามหลักการออกแบบเดียวกันยกเว้นในกรณีของการออกแบบส่วนต่อประสานผู้ใช้

  1. React native มีชุดแท็กแยกต่างหากสำหรับการกำหนดส่วนติดต่อผู้ใช้สำหรับอุปกรณ์เคลื่อนที่ แต่ทั้งคู่ใช้ JSX เพื่อกำหนดส่วนประกอบ
  2. ความตั้งใจหลักของทั้งสองระบบคือการพัฒนาส่วนประกอบ UI ที่ใช้งานได้อีกครั้งและลดความพยายามในการพัฒนาโดยการจัดองค์ประกอบ
  3. หากคุณวางแผนและโครงสร้างรหัสอย่างถูกต้องคุณสามารถใช้ตรรกะทางธุรกิจเดียวกันสำหรับมือถือและเว็บ

อย่างไรก็ตามมันเป็นห้องสมุดที่ยอดเยี่ยมในการสร้างส่วนต่อประสานผู้ใช้สำหรับมือถือและเว็บ


16

React เป็นไลบรารี JavaScript ที่เปิดเผยมีประสิทธิภาพและยืดหยุ่นสำหรับการสร้างส่วนต่อประสานกับผู้ใช้ส่วนประกอบของคุณจะบอกสิ่งที่คุณต้องการเรนเดอร์ - จากนั้น React จะอัปเดตและแสดงองค์ประกอบที่ถูกต้องอย่างมีประสิทธิภาพเมื่อข้อมูลของคุณเปลี่ยนแปลง ที่นี่ ShoppingList เป็นคลาสคอมโพเนนต์ React หรือชนิดคอมโพเนนต์ React

แอป React Native เป็นแอพมือถือตัวจริง ด้วย React Native คุณจะไม่สร้าง "แอพมือถือบนเว็บ", "แอป HTML5" หรือ "แอพไฮบริด" คุณสร้างแอพมือถือตัวจริงที่แยกไม่ออกจากแอพที่สร้างขึ้นโดยใช้ Objective-C หรือ Java React Native ใช้หน่วยการสร้างพื้นฐาน UI เดียวกับแอพ iOS และ Android ปกติ

ข้อมูลเพิ่มเติม


13

ReactJS เป็นเฟรมเวิร์กหลักหมายถึงการสร้างส่วนประกอบแยกตามรูปแบบปฏิกิริยาคุณสามารถคิดว่ามันเป็น V จาก MVC แม้ว่าฉันต้องการจะระบุว่าการตอบสนองจะให้ความรู้สึกที่แตกต่างกันโดยเฉพาะอย่างยิ่งถ้าคุณคุ้นเคย .

ReactNative เป็นอีกเลเยอร์ที่ตั้งใจให้มีส่วนประกอบชุดสำหรับแพลตฟอร์ม Android และ iOS ที่ใช้กันทั่วไป ดังนั้นรหัสดูเหมือนโดยทั่วไปเหมือนกับ ReactJS เพราะเป็น ReactJS แต่โหลดในแพลตฟอร์มมือถือ นอกจากนี้คุณยังสามารถเชื่อมโยง API ที่ซับซ้อนมากขึ้นและแพลตฟอร์มที่สัมพันธ์กับ Java / Objective-C / Swift ขึ้นอยู่กับระบบปฏิบัติการและใช้ภายใน React


13

React Nativeได้รับการพัฒนาเป็นหลักใน JavaScript ซึ่งหมายความว่ารหัสส่วนใหญ่ที่คุณต้องใช้ในการเริ่มต้นสามารถแชร์ผ่านแพลตฟอร์มต่างๆได้ React Native จะแสดงผลโดยใช้ส่วนประกอบดั้งเดิม React Native apps ได้รับการพัฒนาในภาษาที่ต้องการโดยแพลตฟอร์มเป้าหมาย, Objective-C หรือ Swift สำหรับ iOS, Java สำหรับ Android, ฯลฯ รหัสที่เขียนไม่ได้ใช้ร่วมกันในแพลตฟอร์มและพฤติกรรมที่แตกต่างกันไป พวกเขาสามารถเข้าถึงคุณลักษณะทั้งหมดที่เสนอโดยแพลตฟอร์มโดยตรงโดยไม่มีข้อ จำกัด ใด ๆ

Reactเป็นห้องสมุด JavaScript แบบโอเพ่นซอร์สที่พัฒนาโดย Facebook เพื่อสร้างส่วนต่อประสานผู้ใช้ มันใช้สำหรับจัดการเลเยอร์มุมมองสำหรับเว็บและแอพมือถือ ReactJS ใช้ในการสร้างส่วนประกอบ UI ที่นำกลับมาใช้ใหม่ได้ปัจจุบันเป็นหนึ่งในไลบรารี JavaScript ที่ได้รับความนิยมมากที่สุดในฟิลด์นั้นและมีรากฐานที่แข็งแกร่งและชุมชนขนาดใหญ่ที่อยู่ด้านหลังหากคุณเรียนรู้ ReactJS คุณต้องมีความรู้ JavaScript, HTML5 และ CSS


12

Reactคือนามธรรมพื้นฐานของReact NativeและReact DOMดังนั้นถ้าคุณจะทำงานกับ React Native คุณจะต้อง React ... เหมือนกันกับเว็บ แต่แทนที่จะเป็น React Native คุณจะต้อง React DOM

เนื่องจาก React เป็น abstraction พื้นฐาน syntax ทั่วไปและเวิร์กโฟลว์จึงเหมือนกัน แต่ส่วนประกอบที่คุณจะใช้แตกต่างกันมากดังนั้นคุณจะต้องเรียนรู้ความแตกต่างเหล่านี้ซึ่งตรงกับ React ที่เรียกว่า moto ซึ่งเป็น "Learn หนึ่งครั้งที่ใดก็ได้" คุณรู้ว่า React (abstraction พื้นฐาน) คุณสามารถเรียนรู้ความแตกต่างระหว่างแพลตฟอร์มโดยไม่ต้องเรียนรู้ภาษาการเขียนโปรแกรมไวยากรณ์และเวิร์กโฟลว์อื่น


11

React-Native เป็นเฟรมเวิร์กโดยที่ ReactJS เป็นไลบรารี javascript ที่คุณสามารถใช้สำหรับเว็บไซต์ของคุณ

React-native จัดเตรียมส่วนประกอบหลักเริ่มต้น (รูปภาพข้อความ) โดยที่ React จะให้ส่วนประกอบมากมายและทำให้พวกมันทำงานร่วมกันได้


10

React Js เป็นห้องสมุด Javascript ที่คุณสามารถพัฒนาและเรียกใช้เว็บแอปพลิเคชันได้เร็วขึ้นโดยใช้ React

React Native ช่วยให้คุณสร้างแอปมือถือโดยใช้ JavaScript เท่านั้นซึ่งใช้สำหรับการพัฒนาแอปพลิเคชันมือถือ ข้อมูลเพิ่มเติมที่นี่https://facebook.github.io/react-native/docs/getting-started.html


9

ในส่วนที่เกี่ยวกับวงจรชีวิตของส่วนประกอบและระฆังและนกหวีดอื่น ๆ ส่วนใหญ่จะเหมือนกัน

ความแตกต่างส่วนใหญ่คือมาร์กอัป JSX ที่ใช้ React ใช้อันที่คล้ายกับ html อีกอันคือมาร์กอัปที่ใช้โดยเจ้าของภาษาเพื่อแสดงมุมมอง


8

React Native สำหรับแอปพลิเคชันมือถือในขณะที่ React สำหรับเว็บไซต์ (Front-end) ทั้งสองเป็นเฟรมเวิร์กที่คิดค้นโดย Facebook React Native เป็นกรอบการพัฒนาข้ามแพลตฟอร์มซึ่งหมายความว่าเราสามารถเขียนรหัสเกือบทั้ง iOS และ Android ได้ โดยส่วนตัวฉันรู้มากขึ้นเกี่ยวกับ React Native ดังนั้นฉันจะปล่อยไว้ที่นี้


8

React Js กำลังจัดการกับ HTML Dom แต่ React native กำลังจัดการกับส่วนประกอบ UI ดั้งเดิมของอุปกรณ์พกพา (iOS / Android)


7

ReactJSเป็นห้องสมุดจาวาสคริปต์ที่ใช้ในการสร้างเว็บอินเตอร์เฟส คุณจะต้องมี Bundler เช่น webpack และพยายามติดตั้งโมดูลที่คุณต้องการสร้างเว็บไซต์ของคุณ

React Nativeเป็นเฟรมเวิร์กของจาวาสคริปต์และมาพร้อมกับทุกสิ่งที่คุณต้องการในการเขียนแอพหลายแพลตฟอร์ม (เช่น iOS หรือ Android) คุณจะต้องติดตั้ง xcode และ android studio เพื่อสร้างและปรับใช้แอปของคุณ

ซึ่งแตกต่างจาก ReactJS, React-Native ไม่ได้ใช้ HTML แต่ส่วนประกอบที่คล้ายกันซึ่งคุณสามารถใช้ ios และ Android ในการสร้างแอพของคุณ ส่วนประกอบเหล่านี้ใช้ส่วนประกอบดั้งเดิมที่แท้จริงเพื่อสร้างแอพ iOS และ Android เนื่องจากแอป React-Native นี้ให้ความรู้สึกเหมือนจริงไม่เหมือนกับแพลตฟอร์มการพัฒนาไฮบริด ส่วนประกอบยังเพิ่มความสามารถในการนำรหัสของคุณกลับมาใช้ใหม่โดยที่คุณไม่จำเป็นต้องสร้างส่วนต่อประสานผู้ใช้เดียวกันบน ios และ android


6

กล่าวง่ายๆคือ ReactJS คือไลบรารีหลักซึ่งส่งคืนสิ่งที่แสดงผลตามสภาพแวดล้อมของโฮสต์ (เบราว์เซอร์, มือถือ, เซิร์ฟเวอร์, เดสก์ท็อป .. เป็นต้น) นอกเหนือจากการเรนเดอร์มันยังมีวิธีอื่น ๆ เช่นวงจรการใช้งาน hooks .. เป็นต้น

ในเบราว์เซอร์จะใช้อีกไลบรารี react-dom เพื่อแสดงองค์ประกอบ DOM ในมือถือใช้ส่วนประกอบ React-Native เพื่อแสดงผลองค์ประกอบ UI (และ IOS) Android เฉพาะแพลตฟอร์ม ดังนั้น,

react + react-dom = การพัฒนาเว็บไซต์

react + react-native = การพัฒนาอุปกรณ์พกพา


4

REACTเป็นห้องสมุด Javascript เพื่อสร้างเว็บแอปพลิเคชันขนาดใหญ่ / เล็กเช่น Facebook

REACT NATIVEเป็นเฟรมเวิร์กของจาวาสคริปต์เพื่อพัฒนาแอปพลิเคชั่นมือถือดั้งเดิมบน Android, IOS และ Windows Phone

ทั้งสองถูกเปิดจาก Facebook


3

นี่คือความแตกต่างที่ฉันรู้เกี่ยวกับ:

  1. พวกเขามีแท็ก html ที่แตกต่างกัน: React Native ใช้สำหรับจัดการข้อความและแทนที่เป็น React
  2. React Native ใช้ส่วนประกอบที่สัมผัสได้แทนองค์ประกอบปุ่มปกติ
  3. React Native มีส่วนประกอบ ScrollView และ FlatList สำหรับแสดงผลรายการ
  4. React Native ใช้ AsyncStorage ในขณะที่ React กำลังใช้ที่จัดเก็บในตัวเครื่อง
  5. ใน React Native เราเตอร์ทำหน้าที่เป็นสแต็กในขณะที่ React เราใช้ส่วนประกอบเส้นทางสำหรับการทำแผนที่การนำทาง


3

React vs React Native

ReactJS

  • React ใช้สำหรับสร้างเว็บไซต์เว็บแอพสปา ฯลฯ
  • React เป็นไลบรารี Javascript ที่ใช้สำหรับสร้างลำดับชั้น UI
  • รับผิดชอบการเรนเดอร์ส่วนประกอบ UI ซึ่งถือเป็นส่วน V ของกรอบ MVC
  • DOM เสมือนจริงของ React เร็วกว่าโมเดลการรีเฟรชทั่วไปเนื่องจาก DOM เสมือนรีเฟรชเฉพาะบางส่วนของหน้าดังนั้นการลดเวลารีเฟรชหน้า
  • React ใช้ส่วนประกอบเป็นหน่วยพื้นฐานของ UI ซึ่งสามารถนำมาใช้ซ้ำได้ซึ่งจะช่วยประหยัดเวลาการเข้ารหัส ง่ายและง่ายต่อการเรียนรู้

ตอบสนองพื้นเมือง

  • React Native เป็นเฟรมเวิร์กที่ใช้สร้างแอพเนทีฟข้ามแพลตฟอร์ม หมายความว่าคุณสามารถสร้างแอพที่มีอยู่ในตัวและแอพเดียวกันจะทำงานบน Android และ iOS
  • React native มีประโยชน์ทั้งหมดของ ReactJS
  • React native ช่วยให้นักพัฒนาซอฟต์แวร์สามารถสร้างแอปแบบเนทีฟในรูปแบบเว็บ
  • นักพัฒนาส่วนหน้าสามารถกลายเป็นนักพัฒนามือถือได้อย่างง่ายดาย

2

React Js - React JS เป็นไลบรารีจาวาสคริปต์ส่วนหน้าซึ่งเป็นห้องสมุดขนาดใหญ่ไม่ใช่เฟรมเวิร์ก

  • มันเป็นไปตามวิธีการตามองค์ประกอบซึ่งช่วยในการสร้าง
    ส่วนประกอบ UI ที่นำมาใช้ใหม่
    • มันถูกใช้สำหรับการพัฒนาเว็บที่ซับซ้อนและอินเทอร์แอคทีฟและ UI มือถือ
    • แม้ว่าจะเปิดให้บริการเฉพาะในปี 2558 แต่ก็มีชุมชนที่ใหญ่ที่สุดแห่งหนึ่งที่ให้การสนับสนุน

ReactNative - React Native เป็นกรอบแอปพลิเคชันมือถือโอเพนซอร์ซ


2

สายไปงานเลี้ยงเล็กน้อย แต่นี่เป็นคำตอบที่ครอบคลุมมากขึ้นด้วยตัวอย่าง:

เกิดปฏิกิริยา

React เป็นไลบรารี UI ที่ใช้คอมโพเนนต์ที่ใช้ "shadow DOM" เพื่ออัปเดต DOM อย่างมีประสิทธิภาพด้วยสิ่งที่มีการเปลี่ยนแปลงแทนที่จะสร้างทั้งต้นไม้ DOM ใหม่สำหรับการเปลี่ยนแปลงทุกครั้ง มันถูกสร้างขึ้นครั้งแรกสำหรับเว็บแอป แต่ตอนนี้สามารถใช้กับมือถือ & 3D / vr ได้เช่นกัน

ส่วนประกอบระหว่าง React และ React Native ไม่สามารถแลกเปลี่ยนได้เนื่องจาก React Native maps ไปยังองค์ประกอบ UI ของอุปกรณ์เคลื่อนที่บนมือถือ แต่ตรรกะทางธุรกิจและรหัสที่เกี่ยวข้องกับการไม่แสดงผลสามารถนำมาใช้ซ้ำได้

ReactDOM

ถูกรวมเข้ากับไลบรารี React ในตอนแรก แต่ถูกแยกออกเมื่อ React ถูกใช้สำหรับแพลตฟอร์มอื่นนอกเหนือจากเว็บ มันทำหน้าที่เป็นจุดเริ่มต้นของ 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 และสื่อสารระหว่าง Javascript และเป็นแบบดั้งเดิมผ่านทาง "bridge" เนื่องจากสิ่งนี้โครงสร้าง UI จำนวนมากจึงต้องแตกต่างเมื่อใช้ React Native ตัวอย่างเช่นเมื่อมีการสร้างรายการคุณจะทำงานเป็นปัญหาประสิทธิภาพการทำงานที่สำคัญถ้าคุณพยายามที่จะใช้ในการสร้างรายชื่อแทนการตอบสนองของพื้นเมืองmap FlatListReact Native สามารถใช้สร้างแอพมือถือ IOS / Android รวมถึงสมาร์ทวอทช์และทีวี

งานแสดงสินค้า

Expo เป็น go-to เมื่อเริ่มต้นแอป React Native ใหม่

Expo เป็นกรอบและแพลตฟอร์มสำหรับแอปพลิเคชันตอบโต้สากล เป็นชุดเครื่องมือและบริการที่สร้างขึ้นรอบ ๆ React Native และแพลตฟอร์มดั้งเดิมที่ช่วยให้คุณพัฒนาสร้างปรับใช้และทำซ้ำอย่างรวดเร็วบน iOS, Android และเว็บแอป

หมายเหตุ:เมื่อใช้งาน Expo คุณสามารถใช้ Native Api ที่จัดให้เท่านั้น ห้องสมุดเพิ่มเติมทั้งหมดที่คุณรวมจะต้องเป็นจาวาสคริปต์ที่บริสุทธิ์หรือคุณจะต้องนำงานแสดงสินค้าออก

ตัวอย่างเดียวกันโดยใช้ 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,
    },
});

แตกต่าง:

  • โปรดสังเกตว่าทุกอย่างที่อยู่นอกการเรนเดอร์จะยังคงเหมือนเดิมนี่คือเหตุผลว่าทำไมตรรกะทางธุรกิจ / วงจรตรรกะของวงจรชีวิตสามารถถูกนำมาใช้ซ้ำใน React และ React Native
  • ใน React Native ส่วนประกอบทั้งหมดจะต้องนำเข้าจาก react-native หรือไลบรารี UI อื่น
  • การใช้ API ของบางอย่างที่แมปไปยังองค์ประกอบดั้งเดิมมักจะมีประสิทธิภาพมากกว่าการพยายามจัดการทุกอย่างที่ด้านจาวาสคริปต์ อดีต คอมโพเนนต์การแม็พเพื่อสร้างรายการกับการใช้ flatlist
  • ความแตกต่างเล็ก ๆ น้อย ๆ : สิ่งต่าง ๆonClickกลายเป็นonPressReact Native ใช้สไตล์ชีทเพื่อกำหนดสไตล์ในแบบที่มีประสิทธิภาพมากขึ้นและ React Native ใช้ flexbox เป็นโครงสร้างเค้าโครงเริ่มต้นเพื่อให้สิ่งต่าง ๆ ตอบสนอง
  • เนื่องจากไม่มี "DOM" ดั้งเดิมใน React Native จึงสามารถใช้ไลบรารี javascript บริสุทธิ์ได้ทั้ง React และ React Native เท่านั้น

React360

นอกจากนี้ยังมีมูลค่าการกล่าวขวัญว่า React สามารถใช้ในการพัฒนาแอพพลิเคชั่น 3D / VR โครงสร้างส่วนประกอบคล้ายกับ React Native มาก https://facebook.github.io/react-360/


1

reactjs ใช้ react-dom ไม่ใช่เบราว์เซอร์ Dom ขณะที่ native ใช้ virtual dom แต่ทั้งสองใช้ไวยากรณ์เดียวกันนั่นคือถ้าคุณสามารถใช้ reactjs ได้จากนั้นคุณสามารถใช้ react native เนื่องจากไลบรารีส่วนใหญ่ที่คุณใช้ใน reactjs นั้นมีอยู่ใน react ดั้งเดิม เช่นการนำทางตอบโต้ของคุณและห้องสมุดทั่วไปอื่น ๆ ที่มีเหมือนกัน


คำตอบสั้น ๆ ก็คือสร้างแอปมือถือตามปฏิกิริยาสำหรับ iOS, Android และ Windows Mobile ที่คุณสามารถรวบรวมและวางไว้ในที่เก็บแอพเพื่อให้ผู้ใช้ติดตั้ง Reactjs ใช้สำหรับสร้างเว็บเพจเพื่อใช้ในเว็บเบราว์เซอร์ ทั้งสองใช้ส่วนประกอบที่นำกลับมาใช้ใหม่ได้ แต่ไวยากรณ์ที่คุณใช้เพื่อแสดงองค์ประกอบในส่วนประกอบ (โดยใช้ JSX) นั้นแตกต่างกัน ตอบสนอง JSX แสดงผล HTML เหมือนส่วนประกอบชอบ<h1>, <p>ฯลฯ ไหนตอบสนองพื้นเมืองวาทกรรมพื้นเมืองส่วนประกอบมุมมอง app เช่นและ<View> <Text>
Ira Herman

1

ในการตอบกลับความคิดเห็นจาก@poshestด้านบนนี่คือรหัสนาฬิกาแบบดั้งเดิมของ React ที่โพสต์ก่อนหน้านี้ใน React (ขออภัยฉันไม่สามารถแสดงความคิดเห็นในส่วนโดยตรงมิฉะนั้นฉันจะเพิ่มรหัสที่นั่น):

ตอบสนองตัวอย่างโค้ดเนทีฟ

import { AppRegistry } from 'react-native';
import React, { Component } from 'react';
import { View, Text, StyleSheet } from 'react-native';

class Clock extends Component {
  constructor(props) {
    super(props);
    this.state = { date: new Date() };
  }

  componentDidMount() {
    this.timerID = setInterval(
      () => this.tick(),
      1000
    );
  }

  componentWillUnmount() {
    clearInterval(this.timerID);
  }

  tick() {
    this.setState({
      date: new Date()
    });
  }

  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.sectionTitle}>Hello, world!</Text>
        <Text style={styles.sectionDescription}>It is {this.state.date.toLocaleTimeString()}.</Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    backgroundColor: 'white',
    flex: 1,
    justifyContent: 'center',
  },
  sectionTitle: {
    fontSize: 24,
    fontWeight: '600',
    color: 'black',
    alignSelf: 'center',
  },
  sectionDescription: {
    marginTop: 8,
    fontSize: 18,
    fontWeight: '400',
    color: 'darkgrey',
    alignSelf: 'center',
  },
});

AppRegistry.registerComponent("clock", () => Clock);

โปรดทราบว่าการจัดแต่งทรงผมนั้นเป็นทางเลือกของฉันทั้งหมดและไม่พยายามที่จะทำซ้ำโดยตรง<h1>และ<h2>แท็กที่ใช้ในรหัสการตอบสนอง


1

ข้อแตกต่างบางประการมีดังนี้:
1 -React-Native เป็นเฟรมเวิร์กที่ใช้สร้างแอพมือถือโดยที่ ReactJS เป็นไลบรารี javascript ที่คุณสามารถใช้กับเว็บไซต์ของคุณ
2- React-Native ไม่ใช้ HTML เพื่อแสดงผลแอปในขณะที่ React ใช้
3- React-Native ใช้สำหรับพัฒนาแอปมือถือเท่านั้นในขณะที่ใช้สำหรับเว็บไซต์และมือถือ


0

ตอบสนองพื้นเมือง

  • มันเป็นกรอบสำหรับการสร้างแอปพลิเคชันดั้งเดิมโดยใช้ JavaScript

  • มันรวบรวมองค์ประกอบของแอพพื้นฐานซึ่งทำให้คุณสามารถสร้างแอปพลิเคชั่นมือถือดั้งเดิม

  • ไม่จำเป็นต้องยกเครื่องแอปเก่าของคุณ สิ่งที่คุณต้องทำคือเพิ่มส่วนประกอบ React Native UI ลงในรหัสของแอพที่มีอยู่โดยไม่ต้องเขียนซ้ำ

ทำปฏิกิริยา js

  • รองรับทั้งเว็บหน้าและทำงานบนเซิร์ฟเวอร์เพื่อสร้างส่วนต่อประสานผู้ใช้และเว็บแอปพลิเคชัน

  • นอกจากนี้ยังช่วยให้เราสามารถสร้างส่วนประกอบ UI ที่ใช้ซ้ำได้

  • คุณสามารถใช้ส่วนประกอบรหัสใน React JS ได้อีกครั้งซึ่งจะช่วยให้คุณประหยัดเวลาได้มาก


0

React.js มักเรียกว่า React หรือ ReactJS เป็นไลบรารี JavaScript ที่รับผิดชอบในการสร้างลำดับชั้นของส่วนประกอบ UI หรือกล่าวอีกนัยหนึ่งซึ่งรับผิดชอบในการสร้างการแสดงผลขององค์ประกอบ UI มันให้การสนับสนุนทั้งส่วนหน้าและฝั่งเซิร์ฟเวอร์

React Native เป็นเฟรมเวิร์กสำหรับสร้างแอปพลิเคชั่นในเครื่องโดยใช้ JavaScript ตอบโต้การคอมไพล์เนทีฟกับส่วนประกอบแอปเนทีฟซึ่งทำให้คุณสามารถสร้างแอปพลิเคชั่นมือถือดั้งเดิมได้ ใน React JS React เป็นนามธรรมพื้นฐานของ React DOM สำหรับแพลตฟอร์มเว็บในขณะที่ React Native นั้น React ยังคงเป็นนามธรรมพื้นฐาน แต่เป็น React Native ดังนั้นไวยากรณ์และเวิร์กโฟลว์จึงยังคงเหมือนเดิม แต่ส่วนประกอบต่างกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.