The following simple examples show basic functionality of native JavaScript. I will be adding examples that show the diversity of the numberous JavaScript libraries and frameworks including AnglularJS and VueJS. Native JavaScript is becoming a growing preference to some libraries, especially jQuery, as the newer versions have drastically expanded capabilities. Released in 2015, ECMAScript 6 (ECMAScript being the true name of JavaScript) added classes and modules. In 2016, ECMAScript 7 added Array.protoype.includes
for checking arrays for a value to return true/false depending on its existance, control of effects (another advantage of jQuery previously), among other features. However, ECMAScript 6 & 7 are currently poorly supported in browsers. In June of 2017, ECMAScript 8 was released adding more data binding features, mathematics enhancements, value types, tuples, among other features. Hopefully, this version will become more browser-friendly (or vice-versa) to fully open up its new features. w3schools (part of the World Wide Web Consortium (aka "W3C") has a list of JavaScript versions (including Browser Support details for ECMAScript 5 & 6).
After being released initially in 2006, jQuery has become quite likely the most widely used JavaScript library. Much of this is that it mutates much of the tediousness of plain JavaScript into a much more straight-forward syntax. This is especially true when regarding Document Object Model elements, animations, event handling and Ajax applications. jQuery's prewritteen functions for grabbing HTML "id" attributes, button events, and so forth most often include less code and with less repitition. Hence it's mantra of "write less, do more".
jQuery has also expanded by adding the jQuery UI library designed for better handling of user interface features such as interactions, effects, widgets, and even themes. jQuery Mobile is also very widely used for making mobile sites quickly or adding it to "responsive breakpoints" of desktop sites for responsive, mutli-platform/multi-device websites and applications. There have been rumors recently of developers starting to transition away from using jQuery as much due to other powerful libraries, recent native JavaScript's version "ECMAScript 7" being more powerful, and the often bloated code that jQuery can lead to.
Vue.js has gained quick popularity after being released just three years ago in 2014. An advanced framework, complete with a "vue-router" package, that was bit to simplify the process of building interactive user interfaces. As Wikipedia reports, it has power in SPA's (Single Page Applications) as well as transitions (regarding the "DOM", Document Object Model) and runs by the use of templates and components. It is considered an lightweight alternative to AngularJS, however it is a library designed to sit on top of framework architecture rather than to be relied on by itself. Goals for Vue.js are versatility and simplicity. Laravel comes with Vue.js out of the box, making it an more powerful choice for more "lightweight" needs where an entire JavaScript framework is overkill.
AngularJS
In my experience so far, I don't think there is a more commonly debated topic than discussing how relevant (in the past or today) AngularJS really is. It's true that new JavaScript frameworks and libraries seem to pop up nearly monthly, but Angular is one that really took off leaving other frameworks such as Ember or Knockout quite a bit behind, although Knockout seems to still be used on occasion. Developed by Google in 2010, it's goal as a front-end framework was to provide both client-side MVC (Model View Controller) and MVVM (model-view-viewmodel) architectures for rich web applications that can be updated in real-time, provide declarative programming for the user interfaces and connecting software components. By separating the client-side of the application with the server-side, you can dramatically improve dynamic capabilities using two-way binding. These topics can become complex and out of the scope of a simple descriptions. However, I attached some resources for a couple of these topics below for aspiring programmers and developers.
- Model-View-Controller (MVC) | From TechTarget.com
- "Understanding the basics of MVVC Design Pattern" | From Microsoft Developer
- Declarative Programming | From Wikipedia
- Data Binding Explained | From AngularJS's Developer Guide
Node.js is likely unlike any other JavaScript library or framework that I know of. Very different from most, if not all, JavaScript frameworks is that Node.js is a server-side framework that runs on asynchronous programming. To make it even more of an advantage is that it is a runtime built on top of Chrome's V8 JavaScript engine. Further, Node.js explains that it "uses an event-driven, non-blocking I/O model that makes it lightweight and efficient"(source). Node's packaging ecosystem, npm (run by command line) is the largest ecosystem of open source libraries in the world. The packages are as varied as they are numerous. In fact, the previously mentioned Vue.js requires Node's npm. Other popular package tools requiring npm include Grunt (a JavaScript Task Runner), Bower (front-end package management), and others ranging from utility packages to debugging additions and more.
There are many, many other JavaScript frameworks and libraries exist and it is very often debated on which ones to use or even how important many of these are considering they appear and disappear so rapidly. In most cases, it would come down to the developer, the needs of the project, and the scale of the project. Some of these "Best of (Year)" lists/reviews are below.
The many lists:
- Best JavaScript Frameworks, LIbraries and Tools to use in 2017 (Source: Sitepoint.com)
- Top 23 Best Free JavaScript Frameworks for Web Developers 2017 (Source: colorlib.com)
- Top 7 Most Popular JavaScript Frameworks in 2017 (Source: superdevresources.com)
- 5 Best JavaScript Frameworks in 2017 (Source: hackernoon.com)
- ...and the list goes on.