What exactly is the Ionic framework? [closed] - vue.js

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 1 year ago.
Improve this question
I am aware that with Ionic you can create cross-platform applications. These can be created in Vue, React, Angular, etc. I do however wonder which dependencies are responsible for what.
In the background, as I can see in my package.json, the Ionic framework uses Capacitor. If you run the command ionic start myApp tabs with the Ionic CLI, then a new project is created and various dependencies are installed, including Capacitor.
However, I can just as easily add Capacitor to an existing Vue.js project and I also would be able to create a cross-platform application.
My guess is therefore that Ionic is simply an additional abstraction layer above Capacitor and has implemented some components that use Capacitor APIs and for example provides different styling on different platforms.

As #Everton-Costa said, Ionic came first than capacitor and always had a great effort on providing a multi-platform stack to build apps through html5/browser capabilities and cordova for native bridging. Ionic has started early with angularjs after that with Angular(N) and now its practically web framework agnostic. Ionic have great UI components that works nicely on many browser agents and performing good with different screen's sizes etc.
I see capacitor as cordova on steroids, its plugins/modules tries to be more platform independent (ios/android/web). for example, the storage plugin you don't have to handle stuffs like isAndroid()|| isIOS() or isDesktop() to perform storage operations, the module itself chooses the best strategies for the running environment.
"Appflow" is the paid product for easing with CI/CD.

Keep in mind that Ionic came before the Capacitor and understand that both are from the same creators.
Using Ionic you may build Android, iOS, PWA, Desktop using the same code. You may also choose your preferred framework to use with Ionic like Angular, VueJS, React and so on.
Capacitor is responsible for the bridge between your code and the device's functionalities.
Advantages: custom animations, components customization, web components, design to match native iOS13, iOS Segment design, collapsible header, large title in iOS, Searchbar inside of the collapsible header, swipe to close Modals, new iOS Menu design overlay with updated animation, refresher pulling icon in iOS, Material Design refresher as well, lists Header in iOS, open source animations utility, free and open source icon library, Back Button, Card, Segment, Split Pane, encapsulate styles, full support for Ivy Angular’s new renderer and so on... More on this Article.
Appflow is a service that is offered by Ionic Team.

Related

Selectize like component for expo, react-native or flutter

Does React Native (or Flutter) have a component that works like the seletize.js jQuery plugin?
Requirements are,
Multi-select
Retrieve multiple options remotely from an API
I'm currently using selectize inside an Ionic project and I want to leave Ionic for its many performance and compatibility issues.

What is the difference between expo and react native app developing? [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 5 years ago.
Improve this question
I am going to develop react native app using Expo but I don't have idea which one is best? Please suggest me any idea?
Actually I am using Expo. Which is best Expo or normal Android or Xcode development?
When you write code in Expo (abbr. XDE), you write React Native code. Expo has two main pieces:
1) XDE: a developer tool for creating projects, viewing logs, opening on your device, publishing, etc.
2) The Expo client: an app on your phone that lets you open your projects while you're working on them, without needing to go through XCode or Android Studio, and also lets other people view them too!
But ...
With most apps in React Native, you end up needing to utilise several
third party native libraries, which Expo doesn’t current support
outside of their built in APIs. There are a lot of things that can be
done in JS only, but I’ve always ended up running into a need for
native libraries with every React Native project I’ve worked on
(several production apps). That being said, Expo does support
“detaching” your app from Expo, which will allow you to carry on with
a standard free standing React Native app.
Expo has some advantages over using normal Xcode/Studio like expo client, but it also has its cons when it comes to large scale applications . You can choose based on your needs.
If you’re just getting started and you need to get off the ground quickly, I’d definitely recommend Expo
Note: This answer is a blend from multiple developers

React Native vs CRNA [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Closed 2 years ago.
Locked. This question and its answers are locked because the question is off-topic but has historical significance. It is not currently accepting new answers or interactions.
I want to start with React Native app development and need help to decide on which path I should go.
The main question is: should I go with React Native or create react native app?
From what I understand, CRNA really is react native using the expo client and tools, with a more comfortable use (no dev account required, etc)
I can see the advantages with using CRNA over react native (no being no need to set up dependencies, faster time to start with developing, no need for iPhone dev account or xcode+android combi, etc.)
However, as not all native libraries are included, I see myself in the need to export my app at a later point anyway and continue to work with xcode and Android Studio just like before.
So, if CRNA is just a nice way to get started with everything, then I would go for vanilla react native right away as I see no point in a temporary solution at all.
Also, and maybe you can correct me on this, I do not like the idea to have just another wrapper on top of my app, unless there are some more crucial advantages which I missed out.
So could you please share your experience on this? If you have developed apps with react native in the past, which path did you go and which path will you go in the future? React Native, CRNA or React Native and expo environment?
Hi I will also share some of my experience on the topic.
Since I have a front end background and was not familiar with XCode or Android Studio I've decided to start my native app developement from CRNA.
Indeed with just a text editor, purely with javascript and utilizing built-in expo SDK components I was quickly able to implement and publish to Play Store a fairly simple app.
That I find truly amazing :)
However after publishing the app I realized there are some pitfalls that unable it to compete with similar rival Java apps:
The biggest IMO is the size of the apk generated with exp
service.
For the app with just 3 screens and not a lot business logic, 25 mb and about 60mb after install is really a lot.
According to expo devs more complex apps will be approximately the same size or only slighty larger due to the bulk of the size being the native dependencies, and not actual javascript side.
But this still is a big problem and I will probably have to anyway eject the app to optimze the build size
So in general CRNA is a great and fast way to start and have something working but still before publishing the app to the users you'll not avoid seting up your custom build and all the dependencies like Android Studio
I think create-react-native-app is a good way to start so that you can focus on the React part of react native, especially if you are not familiar with React. And when you are ready to do things with native you can simply eject with npm run eject
When I started a new project with react native late last year, there was no create-react-native-app and I evaluated expo first. I didn’t like it as there were no easy native integration unless you eject when I know for sure we will need native integration. Therefore I went with vanilla react native. Also I already had experience with React on the web and iOS and Android native development.
TLDR
if you create project by create_react_native_app myproject
then it contains expo setting (not recomended )
if you create project by react-native myproject
then its plain react-native (recommended for small ,medium,large to projects )
Note : to use react-native command in terminal use this link
I would like to share my experience of app development . As I was new with react I started with CRNA and it went smoothly . Expo really provides many features like push notification , animations (recommended Lottie by Airbnb) and peace of mind that you can eject your app anytime you want to use native libraries with app . Best part is you don't have to rewrite any code and all expo exclusive features will work as well .
Therefore CRNA(use as much you can)+eject(when you need native libraries) = sweet spot .

Main differences between Appcelerator Titanium and React native

Both frameworks are (hybrid) mobile app frameworks which try to access the native UI components with the JavaScript API provided by the different platforms like iOS and Android. They don't use any HTML and CSS for the UI design like e.g. Ionic do and they are not wrapper frameworks but actually a kind of cross-compiler frameworks. That's what i found out. BUT I didn't get the actual differences between these two frameworks. Why should i prefer one of these? Are they doing exactly the same job?
best regards, Tom
I know this is quite old, but I'll give my answer for the benefit of anyone else arriving here.
Full disclosure, I worked for Appcelerator from 2012-2019.
In short, they're both quite similar.
You write a specific flavor of JavaScript that includes custom objects
Your JavaScript code gets compressed, minified, etc. so it becomes the input to an interpreter that gets shipped with your app
When your app runs, it launches the interpreter which starts executing your code
At this point, JavaScript is being run in "native land", so the interpreter can act as a bridge between your JavaScript code and the native SDK
The result is a native app with access to features of the underlying platform
A "native app" shouldn't simply be defined as an app that runs natively, because that would make a PhoneGap app a native app.
A "native app" should be defined as an app that runs and behaves natively. That means, an app that abides by the native OS' ui/ux guidelines.
MAIN DIFFERENCES?
I'd have to say that the main difference is its internal design. Appcelerator started in 2007, when "mobile" was very young.
React Native was launched in 2015.
In 2015 mobile was already in full swing, and mobile OS' were pretty mature, so I infer that React Native's design benefits from all lessons learned by Appcelerator (and others).
As for which one is better, I'd say React, because Titanium is now dead.

Getting sproutcore application files to use them in a native app via Appcelerator Titanium

I would like build a app using sproucore framework, but i also want to integrate it with Titanium to have some desktop capability like file system, packaging, offline working etc...
I know that with sproutcore 2 this would be pretty easy since it allows to use the framework like a normal javascript library. But the project is still in beta and the docs are patchy at most (I consider patchy even the 1.x docs, actually).
So, I want to ask, which would be the best way to go to integrate sproutcore and Titanium API?
Titanium's main mission is to use JavaScript to build native apps, not to provide a OS-access layer for web apps. It would be hard to mix native and SproutCore UI elements.
That being said, here's some information that might help you:
Titanium has reversed it's application model starting with version 1.0:
http://developer.appcelerator.com/question/71/what-happened-to-html--css
The main app doesn't run in a web view anymore, instead it runs directly in JavaScriptCore and creates only native UI elements. One of the native UI elements is a web view
(http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.UI.WebView-object)
and it's possible to make that full screen and run your SproutCore app inside of the web view. From there, you can call out to Titanium to call Titanium methods for file system access and the like.
Also, if you only target the desktop, you could even access the JavaScript context object of a webview and use it directly in JavaScriptCore.
Johannes