Comparison between UI5 and Angular with Bootstrap
Hi to all,
Everything is just my point of view and I’m still pretty new to UI5. If you have a different opinion about anything here, i’d love to hear from you. And because I really like lists and tables, lets start with one, comparing different parts/features. I gave everything up to three stars:
|Feature||UI5||Angular / Bootstrap|
|Databinding (one-way, two-way)||***||***|
|Predefined Compontents (Layout, Tables, Forms, Buttons, …)||***||*|
|Testing||* (not sure yet)||***|
|Support for different Data (REST, XML, JSON, OData,…)||***||***|
As you can see, basically both ways work fine for me. That’s why I will focus on the differences that matter to me. As far as I can see, concerning predefined components/widgets/whatever UI5 is the strongest JS-library I’ve ever seen. Bootstrap also covers the basic needs, like tables, lists, datepicker, grid-layout, etc., but with UI5 I can build tons of apps without ever having the need for my own custom component.
Testing is a big topic for me and I’m still not sure, which is a good way to go in regards to UI5-testing. I tried out QUnit-Tests and they worked well. I’m still not sure about how to test certain areas or what is the right thing to test. On the other hand, I know there is good support for mocking data. Angular has a well-build testing library to mock and test everything I ever needed. It integrates great with testrunners and testframework, e.g. Karma and Jasmine, and can be also be run in a Continuos Integration Environment like Jenkins. Maybe UI5 is much more advanced in testing and I will learn this soon.
Customizing is a different story. Angular and bootstrap can be customized really, really good. Adding custom styles and functions, wrapping directives, integrating parts of it with your own code, etc. is easy. With UI5 its also possible to customize and e.g. extend predefined components. I think the strong point of UI5 (and Fiori) is, that it gives you a way how your app should work out-of-the-box. If you or your customer has some special wishes how something should look or feel, you have to jump out of this box and build (nearly) from scratch. (opinions from more experiences developers is greatly welcome 🙂 )
The learning curve in UI5 is really low. Getting into it and expanding my knowledge was, after a dumb start, really great. Angular on the other hand has a light start and soon you hit a wall. Going over this wall takes time and patience and afterwards its getting fun again.
Finally, I think Angular and Bootstrap are there to help you develop your way, while UI5 is showing you its own shiny way.
Nice comparison. I am trying to find more info on server side JS handling. Also, I have not seen how Angular works with OData (have only used it with JSON). What did you see/find?
On a completely separate note.....I am looking for a better server and client side framework that can easily work with a MySQL database (and/or services).....something other than the old LAMP stack or newer MEAN stack.....ideas? (and I have only looked at Meteor briefly)
There are some Angular-Plugins which work very nicely with Odata. When I tried them out, I realized that I either didn't configure them properly or there were some which just don't work with Odata 2, but only with Odata 3 upwards. So basically I haven't found any which gave me similar benefits from Odata like UI5 does. But if you only want to use it as a plain REST-Service, even angular-resource would be enough.
I have been mostly working on UI5 and recently trying out AngularJS and Bootstrap.
UI5 is strong as a framework and with the SAP Backed controls and cloud platform, the deployment onto the server and integrating with oData is streamlined.
AngularJS and Bootstrap are an open world. Complete creative freedom do design as you like and allows you to design the best performing apps. However, I agree with you on the learning curve that we soon hit a wall (and I am about it do that).
oData is best suited for people within SAP to easily transition to JS. Angular needs a bit more effort in understanding NodejS and npm modules.