Few months back, we got an opportunity to work on a project where our client wanted to modernize their product (web application) by taking advantage of the latest and greatest technologies available in market. Considering ourselves as experts in AngularJs, I started selling AngularJs as much as I could. I explained how AngularJs is different from all other front end frameworks out there. I explained how AngularJs is a full fledged framework in itself and can take care of everything from the front end side right from rendering html, binding data, abstracting html with the help of components and directives to communicating with back end by abstracting data with the help of services. I also explained how Typescript can make code more readable and easy to maintain.
However my client had done some research on these frameworks. He proposed VueJs and asked me to compare Angular with Vue. The reason he proposed VueJs was its small learning curve involved as compared to AngularJs.
Although I had heard of VueJs in past but I didn’t pay much attention to it as I thought nothing can beat AngularJs because of its backing from Google and a strong community support. I wanted to collect enough references to convince my client to use Angular.
I started reading about VueJs. The first stop was obviously their website. I went to their getting started guide. I followed their steps and within ten minutes I had a page with VueJs up and running. Being from Angular background, it was like a piece of cake to use Vue. I somehow liked how easy it was to get going with this framework.
Although I had started feeling that VueJs was a good option for small applications, I started to read more about this framework. I was curious to know if Vue can provide advanced features like router, services, dependency injection and all that stuff.
Although the core library of VueJs is focussed on the vue layer only, it does have libraries to support advanced features created by VueJs team as well as by community members. vue-router is the library used for routing. Vue recommends using vuex for state management. VueJs uses ES6 modules and classes and hence you can import any class into a vue file by using import statement.
VueJs has a command line interface (vue-cli) just like AngulsrJs provides with some predefined templates to initialize a project of your choice. VueJs has a well defined testing framework called vue-test-utils. It has a great documentation and is easy to set up.
By the next working day, I was ready to take up this project in VueJs. We worked on a prototype and then started the development. This project turned out to be one of the smoothly happening projects with awesome UI and well defined architecture sitting on top of VueJs.
More than getting to know about VueJs, this incident was an eye opener for us. Now whenever I hear about some new framework, I try to gather enough information about it to see if it can become our next development framework and that is beauty of our profession – to keep reinventing ourselves.