React + React Native VS Angular 2 + Native Script => как обстоят дела сегодня?
Прошу знающих людей сравнить эти две платформы, охарактеризовать преимущества и трудности один перед другим, сказать пару слов о тенденциях развития.
Основные критерии для сравнения:
* скорость разработки
* количество и качество готовых модулей
* возможности управления устройством
* уровень сложности использования кода веб-приложения и наоборот
* скорость работы приложения, размер исполняемого файла
Ещё отдельный момент. Знаю, что react поддерживает рендеринг на canvas, что бывает полезно для некоторых приложений с целью повысить производительность (например, на десктопе). Также, у react привлекает использование инлайн стилей, что повышает гибкость использования. У Angular подобного пока-что не замечал, несмотря на то, что он считается быстрее развивающимся фреймворком. Жду ваших комментариев на эту тему.
В PlayMarket есть приложение-пример NativeScript от самих Telerik - поставьте его и потыкайте. Там такие лаги, особенно при переходе между активити - абсолютно неюзабельно.
Основное различие между NativeScript и ReactNative - в NativeScript есть возможность вызывать любой нативный код из JS, в то время как ReactNative в итоге обращается к компонентам с нативной реализацией на той стороне.
И это, на мой взгляд, скорее минус NativeScript, потому что писать код для работы с платформой напрямую лучше именно на языке платформы, с нормальными подсказками, в нормальной IDE.
Плюс ReactNative гораздо более зрелый проект - у него нормальный toolchain, куча сторонних плагинов.
Поэтому я за RN. NativeScript нужно еще как минимум год.
Про ангуляр писать не буду, его роль в связке Angular2+NativeScript достаточно небольшая, как и React в ReactNative.
Спасибо за ответ, есть ещё несколько вопросов.
1) "в NativeScript есть возможность вызывать любой нативный код из JS, в то время как ReactNative в итоге обращается к компонентам с нативной реализацией на той стороне"
Возможно я не правильно понял. Получается, что NativeScript компилируется в нативный язык (java или objective-c), а ReactNative интерпретирует js, вызывая прикреплённый к приложению api движка? Что конкретно получается на выходе в результате сборки ReactNative?
2) Если сравнить возможности NativeScript и ReactNative по работе с устройством: уступает ли второй первому и если да, то насколько существенно?
3) вопрос следует из первого: если я прав, как сказывается такой подход на скорости выполнения и размере выходного файла?
4) "NativeScript нужно еще как минимум год"
Как вы считаете, что будет через год? Какие шансы, что NativeScript существенно обгонит ReactNative?
Виталий:
1) нет, NS не компилирует JS в нативный код. Он "выставляет" в глобальную область видимости объекты, соответствующие нативному API. В момент их использования JS-runtime транслирует их в native-вызовы.
2) в случае с NS вы, теоретически, имеете доступ по всей платформе через транслирование вызовов, в то время ее как с RN вы можете вызвать только то, на что написаны ответные части на языке платформы
3) NS работает медленнее RN на данном этапе развития
4) год NS нужен, чтобы хоть как-то соревноваться с RN текущей реализации, в том числе и по объему сторонних пакетов