2015-06-28 3 views
3

Facebook сказал, что React Native строит по принципу учиться раз, писать везде и что его целью является не писать кросс-платформенный код.React Собственная межплатформенная кодовая база

NativeScript, который очень похож на ReactNative в том смысле, что оба они используют Node.js, предлагают возможность совместного использования одного и того же кода на нескольких платформах, написав конкретный код платформы в файлах, в которых используются собственные компоненты, которые не могут использоваться совместно. Он делает это путем простого соглашения об именах, например foo.ios.js.

Поскольку Facebook еще не выпустил свой код для React Native для других платформ, кроме iOS. Это то, что они, вероятно, будут поддерживать в будущем?

+0

«в том смысле, что они оба используют Node.js» - React Native не использует NodeJS –

+0

@BenjaminGruenbaum: Ну, они перечисляют его в соответствии с [требованиями] (https://facebook.github.io/react-native/docs /getting-started.html), поэтому, похоже, они действительно используют Node.js. –

+1

Node.js используется для разработки, а не как фактический движок. React Native использует JavaScriptCore и NativeScript использует JavaScriptCore для iOS и V8 для Android. –

ответ

3

Я думаю, что существует слишком много различий между Android, iOS и Web, что имеет смысл строить общую кодовую базу для всех проектов. Версия Android будет иметь не только собственные компоненты, но и логика экранов приложений и навигации будет отличаться (у iOS/Android/Web все довольно разные шаблоны навигации). Также есть множество собственных компонентов как часть проектов iOS/Android, и они влияют на то, как приложение запускается/отлаживается и т. Д., Поэтому, вероятно, гораздо лучше сохранить компоненты Android и IOS в виде отдельных проектов.

Как я понимаю (и посочувствовать) Facebok модель:

Всякий раз, когда есть общие функциональные возможности (в JavaScript), которые можно разделить без зависимости прореагировать-родные взгляды, они будут делать это в качестве отдельного компонента, могут быть повторно использованы через web/iOS/Android. Например, у них есть ретрансляционная библиотека, созданная для веб-Facebook. Он абстрагирует доступ к открытым данным на серверах Facebook - точно такая же ретрансляционная библиотека может использоваться в любой среде, поскольку она не имеет зависимости от представлений, логики приложения и реагирует как таковая.

Я очень согласен с таким подходом - лучший способ сделать кросс-платформенный, это следовать той же практике:

  1. сделать что-то работу в одной из сред
  2. делают его отдельно, одно- целевая библиотека без зависимостей реагировать, взгляды, логика навигации.
  3. использовать библиотеку в другом месте

Так на Android и IOS и Web реагируют на основе заявка на тот же «проект» всегда будет три разных баз кода, но они могут иметь довольно много общего кода яваскрипта в форме повторных библиотек.

+0

Вы проверили NativeScript? –

+0

Это более «философское» утверждение, а не конкретный инструмент. Мы разработали множество приложений для разных платформ, и хотя некоторые внутренние компоненты довольно распространены на разных платформах, пользовательский интерфейс, навигационные шаблоны совершенно разные.Они достаточно различны, что не имеет смысла делать один проект для создания iOS и Android. Основная часть приложения - то есть то, что видит пользователь, должно быть как-то иначе. Поэтому я очень уверен, что повторное использование кода в виде библиотек - лучшее, что вы можете сделать для кросс-платформенного приложения. Мы сделали это на C раньше и отлично поработали. –

+4

Согласитесь с тем, что говорит Джарек - общая кодовая база для целых проектов на нескольких платформах, по-видимому, является антитезой того, для чего был создан React Native. Существует множество фреймворков, которые позволяют вам писать один раз и запускаться в любом месте, и это приводит к очень плохому пользователю. Я установил приложения для iOS с значками общих значков Android, приложениями для Android с языком разработки iOS, и это просто плохой опыт. Просто потому, что вы можете что-то сделать, это не значит, что вам нужно. –

Смежные вопросы