SharePoint generally is a great framework for building modern business apps and I am not simply referring to apps built using the app model. I am talking about all the combination of solutions that focus on using client side components coupled with the rich REST API that SharePoint offers.
SharePoint offers a lot when it comes to resources that can be leveraged from a client side framework such as Ember or Angular.
- Document libraries
- A robust security model
- User profile store
- Extensive REST API
SharePoint developers (SharePoint farm solutions developers) have been leveraging successfully those resources to build enterprise systems for many years. But this has had sometimes not so good results due to the fact that those solutions can sometimes affect the whole SharePoint server farm in a way that is detrimental to anything else running in that server farm.
The solution for that, as dictated my Microsoft with the introduction of the app model, is to make more use of the “platform“ personality of SharePoint. This allows effectively to write code that does not run within the same process as SharePoint code does and helps avoid (most of the times at least) the common pitfalls of SharePoint farm solutions.
SharePoint + EmberJS customer order system
One example of such use of SharePoint is to employ Ember JS with a few lists in SharePoint to build some sort of order management system.
- Two SharePoint lists (Customers and Orders with the required metatada)
- EmberJS used to provide front end and business logic
- SharePoint REST API to allow Ember to work with the list data
- A Single Html page (our SPA) containing the handlebars templates for use in the system
- App.js referenced within the html page
The following is sample code used in app.js
Note: SPData in the snippet above is an abstraction to working with SharePoint rest and SharePoint JSOM.
The advantages of building your system this way are multiple. Among them the easy of change and adaptation without lengthy deployments and the fact that no custom code will be executed with the SharePoint process.