Какие технологические проекты, такие как Nativescript, существуют, в каком-то смысле родная платформа для связывания Javascript+ собственный рефлексирующий прокси?
Самая фундаментальная особенность Nativescript заключается в том, что он конвертирует языки различных платформ и API-интерфейсы в Javascript (или другой отдельный язык, например C#), например, для iPhone это язык Objective C и iOS API:s, а для телефонов Android - язык Java и API Android: с.
"Отражение во время сборки в прокси-сервер Javascript" является здесь центральным.
Читая различные страницы "Nativescript против чего угодно" в Интернете, я понимаю, что авторы этих страниц на самом деле не обсуждают именно этот аспект, поэтому эти статьи вообще нельзя использовать для обзора этой ситуации.
Поэтому я хочу спросить вас здесь:
Какие есть проекты, которые предоставляют эту фундаментальную функцию - привязку языка +API с разных платформ смартфонов (и, возможно, настольных компьютеров) к Javascript (или другому отдельному языку, например C#)?
ВСЕ ВЕРСИИ /HTML-рендеринг основанные на пользовательском интерфейсе решения здесь дисквалифицированы. Подходят только собственные компонентные решения пользовательского интерфейса. Не стесняйтесь также перечислять ДИСКВАЛИФИЦИРОВАННЫЕ решения для всеобщего сведения и тщательно отмечать, что они дисквалифицированы.
Следовательно, я понимаю, что Apache Cordova ( https://cordova.apache.org/docs/en/latest/guide/overview/) ДИСКВАЛИФИЦИРОВАН.
Я предпочитаю Javascript, однако давайте перечислим все проекты, независимо от того, какой язык используется на уровне объединения, поэтому Xamarin квалифицирован в этой теме.
Также для этих соответствующих квалифицированных решений, действительно ли они настолько целостны / полны, как Nativescript, в поддержке или как они сравниваются?
Для соответствующего решения предоставляют ли они также среду выполнения, которая объединяет базовые различные API пользовательского интерфейса в единый целостный API пользовательского интерфейса, который охватывает несколько платформ? (Для Xamarin я понимаю, что ответ на этот вопрос НЕТ - для разных платформ необходим разный код.)
И каковы их основные различия в подходе?
Некоторые имена, которые я выбрал, могут быть названы "React Native", "Appcelerator Titanium" и "Electron" ( https://electron.atom.io/).
Этот вопрос важен для любого создателя приложения или стартапа, такого как я, который будет во многом полагаться на решение, а также, надеюсь, внесет большой вклад, так что это долгосрочный выбор.
Итак, для каждого соответствующего решения я хочу: * ИМЯ, URL: его имя, с URL * ДИСКВАЛИФИЦИРОВАНО?: Дисквалифицировано или нет * АВТО-ОТРАЖЕНИЕ: имеет автоматическое отражение во время сборки или нет, какие-либо подробности * ЯЗЫК: язык объединения (например, Javascript) * UNIFIED UI CODE: код UI одинаков для разных платформ * PLATFORMS: поддерживаемые платформы * ПРЕОБРАЗОВАНИЯ КОДА: Любые замечания о том, как управляется исходный код приложения, например, выполняется ли он как Javascript на устройстве, - любое преобразование кода, применяемое к коду Javascript (например, для анализа пользовательских тегов, которые на самом деле сами по себе не являются допустимым Javascript), любого вида компиляции, примененной к Javascript, и т. д.
Пожалуйста, дайте мне знать.
Это чрезвычайно ценно для обзора.
Еще раз спасибо Telerik и команде Nativescript за создание этой фантастической технологии!!
1 ответ
Мобильный телефон:
Cordova / PhoneGap / Ionic - https://cordova.apache.org/ - Дисквалифицировано - Унифицированный пользовательский интерфейс - JS/HTML/CSS - В основном это веб-представление в оболочке с возможностью создавать собственные привязки, которые можно вызывать из него. В каком-то смысле вы получаете доступ к родной платформе через создаваемые вами плагины. На самом деле у Microsoft есть проект под названием Project Ace https://microsoft.github.io/ace/ который позволяет вам получить доступ к собственному API внутри вашего приложения Cordova/Phonegap. Код приложения выполняется внутри веб-просмотра; и все добавляется в ОС и плагины, которые вы встраиваете в свое приложение. Несмотря на "маркетинговые" разговоры ("Ионик" действительно плохо пытается запутать рынок здесь); Cordova/PhoneGap/Ionic действительно не является родным приложением. Он может использовать некоторые собственные элементы управления, но движок работает в веб-представлении.
Флаттер - https://flutter.io/ - Дисквалифицировано - Унифицированный интерфейс - Дартс - Это еще одна интересная запись на рынке; Это полностью скомпилированный код на всех платформах, поэтому он может быть более производительным, чем движки на основе JS. Кроме того, было написано, что это очень производительный пользовательский интерфейс (отдельный поток для пользовательского интерфейса). Чтобы получить доступ к нативным API на платформах, вам нужно создать плагины с интерфейсом, который будет ожидать скомпилированный дротик, и API iOS или Android.
Предохранитель - https://www.fusetools.com/ - дисквалифицирован - унифицированный интерфейс - JS - это интересный проект; фактически компилирует разметку в скомпилированный код. Я считаю, что движок JS работает в своем собственном потоке, а среда выполнения Fuse обрабатывает поток GUI. Насколько мне известно, все размышления / размышления должны быть сделаны с помощью плагинов.
NativeScript - https://www.nativescript.org/ - квалифицированный - унифицированный пользовательский интерфейс - JS / XML / CSS - использует один и тот же язык разметки для разметки экрана на обоих устройствах, имеет собственную встроенную систему для маршалинга вызовов в ОС на обеих платформах. Для доступа к любому ресурсу API не требуется никаких дополнительных плагинов, все на iOS и Android доступно из простого JavaScript. Запускает движок Javascript в главном потоке приложения, что может вызвать проблемы с производительностью, если основной поток занят. Благодаря своему дизайну, он может повторно использовать практически все плагины Android AAR / JAR и плагины iOS cocoapod без изменений, предоставляя множество встроенных элементов управления, которые вы обычно можете использовать, только если вы используете ObjC / Swift / Java. Он также является единственным, который имеет нулевой день доступа к новым API, потому что отражение разрешается во время выполнения.
React Native - http://www.reactnative.com/ - Дисквалифицировано - Unified UI - JS - Это также система на основе движка JavaScript, но она не имеет встроенного отражения. Практически весь доступ к API устройства должен осуществляться через скомпилированные плагины, которые предоставляют доступ к нативным API. Следует отметить, что этот движок JS работает в своем собственном потоке, а основной поток зарезервирован для графического интерфейса. Это может сделать приложения более производительными из коробки, поскольку любая блокировка будет происходить в отдельном потоке, но делает связанные с GUI плагины намного сложнее.
Xamarin - https://www.xamarin.com/ - Квалифицированный -??? - C# - Это Сорта, построенный в отражении. Когда они выпускают новые версии, они в основном создают громоздкую библиотеку с текущими отражениями. Поэтому, когда выходят новые версии ОС, они должны регенерировать тунки C#, прежде чем вы сможете их использовать. Приложение скомпилировано на iOS, на Android, я полагаю, оно использует Mono для запуска приложения. Таким образом, вы не можете делать определенные вещи во время выполнения на iOS, например, eval('console.log("hi"); /* еще больше кода JS */'), как вы можете на движках на основе JS.
Рабочий стол:
Электрон - https://electron.atom.io/ - Неквалифицированный - Единый пользовательский интерфейс - HTML/CSS/JS - Это основанная на рабочем столе среда, которая объединяет узел и хром. Таким образом, вы можете получить доступ к любому API-интерфейсу Node (который является довольно большим) и любому API-интерфейсу Chrome и создать приложение. Тем не менее, на любом более низком уровне вам понадобится создать плагин.
NW - https://nwjs.io/ - неквалифицированный - унифицированный интерфейс - HTML/CSS/JS - в основном те же заметки, что и Electron.
Пара замечаний:
Все движки на основе JavaScript НЕ компилируют код; все они запускают код JavaScript во время выполнения.
Вы можете использовать Cordova/PhoneGap/ionic, чтобы довольно легко обмениваться приложениями между настольным компьютером (используя электрон /nw), сетью и мобильным телефоном. Но это все еще веб-приложение на всех платформах.
Вы также можете использовать NativeScript с Angular для создания приложения, которое разделяет, вероятно, 98% его кодовой базы между мобильным, веб-приложением и настольным (электронным / nw) приложением. По сути, единственные отличия в некоторых приложениях - это просто разметка экрана, поскольку вам нужны теги div / input для Web и StackLayout/TextInput для мобильной стороны. Но остальная часть кода и логики могут быть общими и обращаться к элементам как обычно.