Salesforce Lightning - The "Enterprise" JavaScript Component Framework

I presented to the the San Diego Salesforce Developer Group a couple of weeks ago during Lightning Developer Week using a deck supplied by Salesforce. The slide on Lightning Components (below) really didn’t resonate with me and got me thinking. When viewed in comparison to other frameworks, Salesforce Lightning reminds me of that Sesame Street song, “One to these Things is not like the other…”. While Salesforce Lightning is an entire component framework and platform for developing enterprise applications, most of the other component frameworks concern themselves mainly with the “view” portion of the application. Let’s see from a high level how they compare.

Google Polymer

Polymer is a framework for building components and SPAs on top of Web Components technologies. Polymer components look very similar to Angular Directives and in the long run I’m not sure how Polymer and Angular are going to live together at Google? Apparently Angular will implement a lot of the same functionality in 2.0. Harshit Pandey has a number of great posts on how to build applications on Salesforce using Polymer. IMHO, Polymer is probably the closest in comparison to Lightning.

Facebook React

React is a JavaScript library for building view components. That’s all. It’s key feature is fast DOM manipulation via a Shadow DOM. Since there’s no specific data transport layer, React relies on Flux for this functionality. React supports inheritance through mixins.

Twitter Flight

Flight is also an event-driven JavaScript framework that maps behavior to DOM nodes for the view layer. It doesn’t prescribe or provide any particular approach to rendering or providing data to a web application. Similar to React, Flight supports inheritance through mixins.

Mozilla Brick

Brick is a collection of UI components designed for easy and quick building of web application UIs. Brick is not a framework. It is only concerned with building webapp interfaces using the Web Components standard.

Saleforce Lightning

Lightning is different for those above in that it was designed first and foremost for enterprise applications. Lighting has a rich, elegant event driven architecture that appeals to JavaScript developers and all of the power of the platform. Unlike other component frameworks where you typically have to roll your own backend functionality, authentication and connectivity, with Lightning you simply expose server-side Apex functionality with a single annotation and then instruct the component to utilize it. That’s it! Now you have access to workflow, data validation, queues, bulk processing, reporting, dashboards and much, much more.

Lighting components encapsulate functionality, markup and CSS into reusable, functional units that can be assembled into larger components or complete applications. Plus, with a simple appHostable tag you can expose your component in Salesforce1 and instantly become a mobile application!

The power of the component framework is in its ease of customization. Developers can combine multiple components into larger ones or even applications and build upon one another with Java-like inheritance. Simply include the extends tag and your component has all of the functionality of its super component.

In addition to creating entirely new applications, with the Lightning Extensions Pilot, you can write components that override standard Salesforce functionality. Soon you’ll no longer have to create a custom Visualforce Page simply to make a single field on the page layout act differently. Lightning Components will allow you to define your own functionality for parts of the standard Salesforce interface.

However, Salesforce isn’t resting on its laurels with Lightning. Currently in Pilot, the Lightning App Builder allows non-developers to drag and drop Lightning Components to assemble enterprise application. This enables both coders and non-coders to become enterprise application developers.

Processing close to 3 Billion transactions a day, Salesforce knows how to build enterprise applications. The Lightning Component framework is enterprise application development.