Когда я разрабатываю гибридные приложения с React Native. Преобразуется ли написанный мной код JavaScript в Java-код или Java-байт-код для среды выполнения Dalvik/ART при создании приложения Android из моего кода React Native? Или только компоненты пользовательского интерфейса скомпилированы в нативные компоненты пользовательского интерфейса? Или библиотека, такая как Fetch API, компилирует код JavaScript в Java-код или Java-байт-код?
Компилирует ли React Native JavaScript в Java для Android?
Ответ 1
В принципе, вы пишете Javascript. Javascript общается с собственными компонентами (Java на Android, Objective C на iOS, С# в Windows).
Связь происходит через так называемый "мост". Если в любое время вы чувствуете, что это сообщение слишком сильно замедляет работу, вы можете реализовать функциональность Javascript в Java, Objective C или С# соответственно, чтобы запустить чисто native. В этом случае вы пишете непосредственно в собственном коде, поэтому нет Javascript для встроенной компиляции.
Это принесет жертву совместимость для производительности. Обычно это необязательно.
Ответ 2
Код остается родным кодом JavaScript и не преобразуется в какой-либо другой формат. Гибридные приложения запускаются внутри собственного приложения-контейнера, которое вызывает механизм времени выполнения JavaScript, который заботится о выполнении кода JavaScript. Надеюсь, это прояснит вопрос.
Ответ 3
По материалам книги "React Made Native Easy" :
По сути, React Native можно рассматривать как набор React компоненты, где каждый компонент представляет соответствующий нативный виды и компоненты.
Кроме того, в React Native architechture есть две части:
Собственный код/модули: Большая часть нативного кода для iOS написана на Objective C или Swift, а в случае Android - написано на Java. Но для написания нашего приложения React Native мы вряд ли когда-нибудь нужно написать собственный код для iOS или Android.
Javascript VM: JS Virtual Machine, которая выполняет весь наш код JavaScript. На iOS/Android симуляторы и устройства React Native использует JavaScriptCore, который является движком JavaScript, который обеспечивает Сафари. JavaScriptCore изначально является движком JavaScript с открытым исходным кодом. построен для WebKit. В случае iOS React Native использует JavaScriptCore предоставляется платформой iOS. Впервые он был представлен в iOS 7 вместе с с OS X Mavericks.
И для связи между этими частями:
Собственный мост React: Собственный мост React - это мост C++/Java, который отвечает за общение между нативом и Javascript нить. Пользовательский протокол используется для передачи сообщений.
Ответ 4
reat native работает как оболочка, например, если вы хотите поместить кнопку в свой макет, вы просто помещаете тег кнопки в макет, но эта кнопка происходит от нативной кнопки android, и вы просто используете определенный API из модуля пользовательского интерфейса, называемый реагировать-нативный. Вы можете легко создать собственный модуль и использовать его в своем собственном проекте.
Ответ 5
Реагировать на родной
Реагировать → JavaScriptCore → Собственный код → "Что вы видите"
Гибридное приложение
JavaScript → Собственная оболочка WebView → "Что вы видите"
Ответ 6
Цитата с сайта напрямую
С React Native вы не создаете "мобильное веб-приложение", "приложение HTML5" или "гибридное приложение". Вы создаете настоящее мобильное приложение, которое неотличимо от приложения, созданного с помощью Objective-C или Java. React Native использует те же основные базовые компоненты пользовательского интерфейса, что и обычные приложения для iOS и Android. Вы просто добавляете эти строительные блоки, используя JavaScript и React.
Итак, вы кодируете javascript и преобразуетесь в собственный код.