spsboston 2016-09-10 - best practices for small-scale client-side development in sharepoint
TRANSCRIPT
Best Practices for Small-ScaleClient-Side Development in SharePointMarc D AndersonPresident, Sympraxis Consulting LLC
SPS Boston 2016 is made possible by our Sponsors
MindsharpContego Cyber
Solutions
Visit extaCloud’s booth for Drink Tickets!
Champions Bar6pm
LOCATED IN BOSTON MARRIOTT CAMBRIDGE
2 Cambridge Center Cambridge, MA 02142
(1 min walk from Microsoft)http://
www.championscambridge.com/
ShareP nt
Who Is Marc? Co-Founder and President of Sympraxis Consulting LLC, located in the Boston suburb of Newton, MA, USA. Sympraxis focuses on enabling collaboration throughout the enterprise using the SharePoint application platform.
Over 30 years of experience in technology professional services and software development. Over a wide-ranging career in consulting as well as line manager positions, Marc has proven himself as a problem solver and leader who can solve difficult technology problems for organizations across a wide variety of industries and organization sizes.
Author of SPServices Awarded Microsoft MVP for SharePoint Server 2011-2016
• We can build real solutions by using SharePoint and Office 365 as service endpoints that provide us with all sorts of critical business data. On the spectrum between power user dev and enterprise development, there’s plenty of room for departmental or even company-wide solutions that work entirely client side. Often the difference between “enterprise” development and the rest comes down to two factors:• The governance or guidance around deployment• The size of the development team
• In this in-depth session, we’ll look at some better practices for building solutions, storing and managing code, and source code control for smaller size projects that don’t have complex deployment requirements.
Overview
SharePoint Development ModelEvolution
2003
ASP.NETASP.NET Web Parts, Full Trust APIs, Server Side Event Receivers…
2007
ASP.NETASP.NET Web Parts, Full Trust APIs, Server Side Event Receivers…
2010
ASP.NETASP.NET Web Parts, Full Trust APIs, Server Side Event Receivers…
2013ASP.NETASP.NET Web Parts, Full Trust APIs, Server Side Event Receivers…
2001
ASP Digital Dashboards, File System Storage, etc.
Server Side Development
of customers are leveraging cloud for their applications—from pilots to production apps2
72%“Nearly of large enterprises will likely have hybrid cloud deployments by the end of 2017”1
50%
Sources:1. Gartner, Inc. 2013. Press Release: http://www.gartner.com/newsroom/id/25993152. 451 Research, Hosting and Cloud Study, 2014
Development models Across SharePoint Versions Server Side Client Side
Sandboxed solutions
App modelSandboxed solutions
App modelSandboxed solutions
App modelSandboxed solutions
SharePoint Framework
Client Side Code Has Been in SharePoint Forever
This Is Not Your Grandfather's Client Side…
…or your Grandmother's, for that matter
• Use your favorite tools• Choose your favorite frameworks• Write your solutions with HTML, CSS, and JavaScript• Watch your users smile
SharePoint Development Is [Becoming] Web Development
• Decide what you need the functionality to be
• Choose your development tools to best achieve the functionality
• Consider how you might package• Build• Devise your deployment scheme• Deploy
Decouple Development and Deployment Decisions
"Client Side" Is Not One ThingSimple
Complex
Content Editor Web Part
SharePoint Framework
One-off, quick solutions with JavaScript / HTML embedded directly in the CEWPCode can still be centralized
Script Editor Web Part
Centralized code artifacts with a light development pipeline
Centralized code artifacts with a more robust development pipeline
Reusable components (Client Side Web Parts) with a more formal development processCentralized admin and deployment
Each approach still has value, even in the "modern" era
High Level Structure of Building SharePoint Solutions
Data Access / Initial Manipulation
"Document Ready"
ViewModel / Application Logic
Templates
JavaScript HTMLApplication Styling
CSS
•Has to coexist with SharePoint's CSS•Be very specific with your selectors
•Avoid hauling in SharePoint's baggage unless you need it
Services Across SharePoint Versions
Deprecated
Deprecated
Endpoint
/_vti_bin/listdata.svc
/_apiDeprecated
NoneSOAP REST
https://graph.microsoft.com/v1.0
Widgets in one Site Collection
Widget in one tenant/farm, multiple site collections
Widgets used across multiple tenants/farms*
Store code in a library in a specific subsite X XStore code in a library in the root site of the Site Collection XStore code in a Site Collection specifically for client side code O OCreate an actual CDN (Azure, AWS, dedicated server, other commercial CDN provider…)**
X O - Good solution O – Optional solution, potentially overkill X – Not a great choice* - Not referencing any code that would be part of a commercial solution.** - CDNs or Content Delivery Networks allow “content” to be made highly available to end users everywhere.
See: Code Creep - SharePoint "CDN" by Julie Turner (@jfj1997)
Where Should I Put My Stuff?
If you store your code in a different Site Collection or CDN, you may need to bootstrap it into place.
• Microsoft guidance is to no longer edit the master page – and we don't have to
• Adding a User Custom Action allows you to load the first JavaScript file with a ScriptLink
• RequireJS (or several alternatives – see system.js) allow you to bootstrap the rest of your code into the page
• Because your script references can be built in code, you can even do versioning
Bootstrapping JavaScript
See: The easiest way to add Script and Brand your SharePoint and SharePoint Online by John Liu
• HTML files are trickier to load because CEWPs can't use a Content Link outside the Site Collection• jQuery $.get()• Widget Wrangler• RequireJS with text plugin
Bootstrapping HTML
See: jQuery $.get(), Office Dev PnP Web Cast – Introducing Widget Wrangler for SharePoint development, RequireJS text plugin
• Don't be caught up in the "shiny penny" syndrome
• Compare your known requirements with the frameworks' capabilities
• Ask yourself:•What types of solutions do we need to build?•What does our governance tell us about our deployment model?•How big is the development team?•What are our current skills?
Choose a Framework
The Popularity Contest
See: The State Of JavaScript: Front-End Frameworks: A few preliminary results
Source Control and Code Management
See: Sympraxis’ SharePoint Client Side Development Pipeline
spsave
Code Editor
Source Control and Code Management: gulpfile
See: Sympraxis’ SharePoint Client Side Development Pipeline
• SPFx uses common Web development tools and frameworks
• How deeply you go depends on your specific needs
What Do You Need to Know?
• Developing SharePoint Widgets in TypeScript with Bob German @ 2:30
• Preparing for the next shift in SharePoint development with Jay Landrum @ 4pm
SharePoint Framework Sessions
Demos
Contact InformationEmail [email protected]
Twitter @sympmarcBlog http://sympmarc.com
SPServices http://spservices.codeplex.comSPXSLT http://spxslt.codeplex.comBooks http://sympmarc.com/books
The Middle Tier Manifesto http://bit.ly/middletier