Я работаю над проектом для домашних животных (веб-приложение), и мне было интересно, следует ли мне реагировать, потому что было бы легко создавать собственные приложения из этого кода (в будущем, если мне нужно).
-
И если ответ "да", каковы наилучшие практики для
большинство resuse?
-
Если ответ отрицательный, вы можете порекомендовать альтернативу?
Дополнительная информация о моей ситуации.
Я относительно новичок, и моя альтернатива будет хороша с html с bootstrap и jquery. Я рассматриваю возможность использования asp.net mvc и web api.
Ответ 1
Обмен логикой приложений между веб-приложением React и приложением React Native, при этом возможность индивидуального рендеринга компонентов уникальна для каждой платформы!
По-моему, это отличный вариант, который у нас есть. Я дам вам обзор подхода и несколько советов.
В идеальном мире мы могли бы поделиться 100% кода. Насколько я знаю, это невозможно, но мы все же можем поделиться большим количеством кода. Хотя React Native похож на React, очень важно отметить, что код рендеринга отличается. Вместо веб-объектов, таких как <div>
или <span>
, вы используете React Native, такие как <View>
, <Text>
и другие встроенные компоненты.
Однако бизнес-логика в большинстве случаев - это просто JavaScript, хотя и одна из важных вещей, которые мы можем поделиться!
План
Основываясь на используемой вами архитектуре Flux, это будет означать, что ваш магазин (ы), редукторы, действия будут общим кодом, а также большей частью бизнес-логики (внутри служб или что-то еще), а также константы и утилиты.
Уровень пользовательского интерфейса затем будет написан специально для каждой собственной платформы с использованием React Native и для Интернета с использованием React. Не только потому, что необходимо заменить элементы HTML компонентами React Native, но также и потому, что компоненты, вероятно, будут иметь совсем другое поведение в мобильном приложении.
Некоторые общие рекомендации/советы
-
Рассмотрим хорошую архитектуру и структуру кода, чтобы максимально использовать код (и логику приложения). Попробуйте отделить компоненты представления пользовательского интерфейса (которые будут разными для каждой платформы).
-
Взгляните на Особенности среды JavaScript в документах React Native. При использовании React Native вы будете запускать код JavaScript в двух средах:
- На iOS-симуляторах и устройствах, эмуляторах и устройствах Android. React Native использует JavaScriptCore, который является механизмом JavaScript, который включает Safari. В iOS JSC не используется JIT из-за отсутствия записываемой исполняемой памяти в приложениях iOS.
- При использовании отладки Chrome он запускает весь код JavaScript внутри самого Chrome и общается с собственным кодом через WebSocket. Таким образом, вы используете V8.
Хотя обе среды очень похожи, вы можете столкнуться с некоторыми несоответствиями.
-
Рассмотрим различные стратегии совместного использования кода. Чтобы получить доступ к общему коду, приложения, которые вы строите, не должны жить в одной и той же базе кода или репозитории git.
Более реалистично, у вас было бы два или более проектов, размещенных отдельно, поэтому пакет npm является одним из самых простых способов совместного использования кода между ними.
Это легко сделать, как создать новый пакет и установить его как зависимость внутри каждого из ваших проектов. Для пути к общему проекту вы можете использовать репозиторий git, а не указывать на общедоступный пакет на npm.
Даже если вы создаете только веб-приложение, , вы могли бы потратить некоторое время на размышление о том, как можно обобщить часть общего кода, поэтому его проще использовать в будущем.
Ответ 2
Это возможно и жизнеспособно. Вы должны иметь представление для каждой платформы (web/android/ios), потому что у каждого есть свои компоненты.
Бизнес-логика должна быть вне поля зрения. Использование флюса может упростить ваш проект с помощью native, поскольку он перемещает взаимодействие api на слой данных, позволяя виду быть просто представлением.