React or Angular and SharePoint Framework Development Darin Dickey SharePoint Saturday February 9, 2019
Exploring a SharePoint Framework Project 1. Client-side Web Parts Review 2. Supported Libraries and Frameworks 3. Pure JS vs Angular vs React 4. Angular 5. React
Thank You SPSUtah 2019 Sponsors! PLATINUM • Lucidworks • ZAACT GOLD • JourneyTEAM • Sovereign SP SILVER • SkySync ShareSki & SharePint
About Me
Winner 2018 Intranet Reloaded The ‘Special Jury award’ was set-up for projects that achieved outstanding results across all entries and therefore deserved special recognition. The special category was won by LDS Church and their project ‘The workforce intranet ecosystem’.
Quick Web Part Primer =
SPFx Client-side web parts =
Demo A few interesting SPFx web parts custom developed by ICS
They are still web parts! Built for the modern, JavaScript-driven web Runs directly inside a SharePoint Page Client-side web parts
Web Parts vs Extensions Web Part Extensions
Demo A very brief demo of a SPFx extension
SPFx Development Toolkit
SPFx Development Toolkit
SPFx Development Toolkit
SPFx Development Toolkit
Any Framework or Library Welcome
Only 3 Options in Yeoman SharePoint Generator
Demo SharePoint Generator Options
Question: Why use 'No JavaScript Framework'?
Question: Why use Knockout?
TypeScript
Demo TypeScript Static Typing Examples
TypeScript – Object Oriented
Demo TypeScript Object Oriented
Angular OR React?
Question: Why use Angular?
Question: Why you might NOT want to use Angular?
Question: Why use React?
Question: Why NOT use React?
React One-Way Binding <input> searchString = “Holidays 2019”;
Angular Two-Way Binding searchString = “Holidays 2019”; <input>
Demo Using React One-way Binding
Question: Why NOT use React?
React JSX – Code + HTML
Angular – Clean separation of Markup and Code
Demo Using React to create asearch web part
Getting started with Angular and SPFx
But wait, how do I use Angular in SPFx if the Yeoman generator does not support (yet)? Add all the Angular related modules and its dependencies to the package.json file.
AngularCLI https://github.com/maliksahil/SPFxAngularCLI • npm install • gulp serve
Demo Angular CLI project
Demo Angular Person Details
Angular OR React? Use React Use Angular Simple App with Fewer Views More Complicated App with Complex Routing
Angular OR React? Use React Use Angular Mostly Read-only, Presentation Form with Multiple Input Fields, Drop Downs, Radio Buttons, Checkboxes, and Other Controls
Angular OR React? Use React Use Angular SharePoint App that consumes SP and/or External Data Non SharePoint App that Consumes SP and/or External Data
Angular OR React? Use React Use Angular SharePoint App, SharePoint Hosted Azure Hosted
Angular OR React? Use React Use Angular Office UI Fabric Other UX Design Framework
Angular OR React? Use React Use Angular Zippier More Robust
Angular OR React? Use React Use Angular You Choose Supporting Libraries (Redux, Flux, React Router, SPHttpClient) Angular Provides Entire Framework (Router, Http Requests, Event Bindings)
Angular OR React? Use React Use Angular Need to Ship Quickly Timeline to Delivery is More Flexible
Vue?
Vue
Summary  Front-end developers can finally dive into SharePoint development  React or Angular? You decide!  SPFx offers rich support for any client side toolkit
React or Angular and SharePoint Framework Development

React or Angular and SharePoint Framework Development

Editor's Notes

  • #17 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #18 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #20 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #21 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #22 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #24 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #27 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #28 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #29 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #30 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #34 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #36 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #38 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #39 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #40 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.
  • #52 This file contains information about your bundle(s) and any external dependencies and localized resources. - The entries section contains the default bundle information. - The externals section contains the libraries that are not bundled with the default bundle.