React-Native-Web против ReactJS

Просто случайно увидел React-Native-Web (RNW), о чем я подумал? Зачем нам нужна еще одна версия React for Web? У нас уже был ReactJS (RJS).

Поэтому я зашел на его веб-сайт и увидел документ, в котором говорится, что он позволяет вам использовать нативный компонент, используя React DOM, высокое качество и т. Д.

Я до сих пор не совсем понимаю различия и преимущества использования RNW.

Может ли кто-нибудь просветить меня некоторыми конкретными примерами, данными о производительности и т. Д., Пожалуйста?

Я знаю, что Twitter и несколько других приложений используют его, но просто сказать мне, что Twitter использует его, достаточно хорошо, но недостаточно ясно, чтобы указать на различия.


person Franva    schedule 12.06.2019    source источник


Ответы (3)


Честно говоря, аргументы в пользу использования react-native-web несколько эстетичны, например:

React Native - это чистый язык пользовательского интерфейса. Он определяет некоторые базовые компоненты, которые определяют примитивы пользовательского интерфейса, и считается, что они не зависят от платформы, на которой они работают. Все компоненты, которые мы можем создать в React Native, основаны на примитивах, таких как View, Text или Image, которые являются базовыми элементами, имеющими смысл для любого визуального интерфейса, независимо от того, где он запущен.

С другой стороны, примитивы React - это просто узлы DOM - теги HTML, такие как div, p или a, которые не являются чистым пользовательским интерфейсом. Они не были созданы для определения визуального языка; скорее, они предназначены для структурирования и понимания гипертекста. Примитивы React имеют значение за пределами интерфейса, и это значение не имеет особого смысла вне браузеров.

который взят из здесь. Я разработал приложения и веб-сайты как ReactJ, так и RN, и единственное реальное преимущество, которое я вижу, - это унифицированный язык кодирования. Поскольку я начал с RN, а затем добавил ReactJS в свое резюме, мне было неудобно найти эквивалент компонентов RN в ReactJs, о, я должен использовать p и span вместо Text? О, черт возьми, это тип ввода = text 'not' TextInput 'и т. д. и т. д. Я думаю, вы поняли мою точку зрения. Наверное, то же самое и с разработчиками React, пришедшими в мир RN. Но у него тоже есть свои минусы, и, к сожалению, использование react-native-web требует некоторых проблем, и вы должны ПОДГОТОВИТЬ свой проект к этому.

Спасибо за ваше объяснение. Не могли бы вы быть более конкретными и предоставить более подробную информацию или примеры для некоторых проблем? Благодарность!

Например, React-Native (и некоторые его библиотеки) основаны на структуре Promise, которая не является обычным JS, или Object.assign добавлен ES6, чтобы вы могли их использовать. необходимо изменить файлы webpack.config.js и .bael-rc, добавить несколько строк внутри этих файлов. Если вы используете другие вспомогательные инструменты, такие как Flow, Jest и т. Д., Их тоже нужно настроить. Это, безусловно, замедляет вас при запуске, но если вы посвятите время настройке, это окупится в долгосрочной перспективе.

person DNA.h    schedule 12.06.2019

Если вам нужно перенести приложение, поддерживающее реакцию, в Интернет, используйте RNW. Если вам нужно создать только веб-приложение, используйте реакцию с библиотекой пользовательского интерфейса, например, material-ui (моя любимая библиотека пользовательского интерфейса).

person axlider    schedule 12.06.2019
comment
Некоторые компоненты response-native недоступны в react-native-web для переноса их в Интернет. Это вызывает большую проблему! Для выполнения такой работы вам потребуется много изменений. - person Amir Fo; 17.06.2020

Проблема

Некоторые компоненты, такие как react-navigation, pickler, компоненты доступа к контактам и т. Д., Не полностью поддерживаются response-native-web, и вы получите ошибку модуля / компонента не разрешено при создании веб-вывода! Для решения этой проблемы лучше всего разделить код (компоненты) на 4 части (папки):

   project-folder/
       android/
       ios/
       web/
       common/

Вы напишете компоненты, которые поддерживаются всеми платформами, в общей папке, а некоторые компоненты, зависящие от платформы, в их собственных папках.

Как разработчик, вы будете использовать множество условий и кодов при рендеринге, поскольку, по моему мнению, кодовая база будет достаточно большой, чтобы сбивать с толку!

Другой проблемой будет отзывчивость веб-приложения. Много лет назад мы пытались сделать так, чтобы веб-сайты, созданные для настольных компьютеров, отображались на мобильных экранах с возможностью отклика. В наши дни мы пытаемся сделать мобильные веб-сайты адаптивными к экранам рабочего стола и не иметь много space-between на экранах рабочего стола!

Другие подходы

  1. Вы можете использовать react-native для разработки приложений только для ios и android, а также использовать HTML, JS или reactjs для разработки веб-сайтов.

  2. Вы можете разрабатывать веб-сайты PWA, которые устанавливаются браузерами для Android и iOS и могут хранить данные для использования в автономном режиме.

person Amir Fo    schedule 17.06.2020