SlideShare a Scribd company logo
SharePoint Framework, Angular and
Azure Functions
by Sébastien Levert
Our Sponsors
GOLD
SILVERLOCATION
BRONZE
MEDIA
Hi! I’m Seb!
@sebastienlevert | http://sebastienlevert.com | Product Evangelist & Partner Manager at
Agenda
SharePoint Saturday Lisbon 2017 - SharePoint Framework, Angular & Azure Functions
SPFx + Angular
Angular… But which version ?
• Works well with Angular 1.6
• Works OK with Angular 2
• Works awesome with Angular 4 (Did you just say Angular 4!?)
• Works even better with Angular 5 (NgElement to the rescue!)
Is that even possible ?
• Some are thinking it is mission impossible… But it is! And it’s much
more simpler than you think.
• You have the full power of Angular within you own SPFx webparts
• Multiple webparts can exist in a page, including their own routing
configuration
And then…That happened.
SharePoint Saturday Lisbon 2017 - SharePoint Framework, Angular & Azure Functions
Embedding an Element
public render(): void {
this.domElement.innerHTML = `
<hello-world
name="${this.properties.name}">
</hello-world>`;
}
Routing
const routes: Routes = [
{ path: '', component: SitesComponent, children: [
{ path: '', component: SitesHomeComponent },
{ path: 'sites', children: [
{ path: 'new', component: SitesFormComponent },
{ path: ':id', component: SitesViewComponent }
]},
]}
];
import { appRoutes } from "./app/app.routes"
protected get routes(): any {
return appRoutes;
}
Global Configurations
import { ConfigurationService } from
"./app/services/ConfigurationService";
ConfigurationService
{ provide: APP_INITIALIZER, useFactory: (configurationService:
ConfigurationService) => () => configurationService.load({
functionUrl: this.properties.functionUrl,
functionKey: this.properties.functionKey,
description: this.properties.description,
styles: styles
}), deps: [ConfigurationService], multi: true }
Mocking Data
if (Environment.type === EnvironmentType.Local) {
return [
{ provide: SitesService, useClass: MockSitesService },
];
} else if (Environment.type == EnvironmentType.SharePoint ||
Environment.type == EnvironmentType.ClassicSharePoint) {
return [
{ provide: SitesService, useClass: SitesService },
];
}
Mocking Data
export class MockSitesService implements ISitesService {
public createSite(siteInformation: ISiteCreationInformation):
Observable<ISiteCreationResponse> {
return Observable.of<ISiteCreationResponse>({
description: `${siteInformation.description} (Mocked)`,
email: `${siteInformation.url}@mocked.onmicrosoft.com`,
id: "00000000-0000-0000-0000-000000000000",
title: `${siteInformation.title} (Mocked)`,
url: `#${siteInformation.url}`
}).delay(2000);
}
}
Azure Functions
Why Azure Functions ?
• Cheap way to host any API in Azure
• You can use your favorite language
• Super cheap to run
• Perfect companion for any Single Page Application or any JavaScript
component
Our scenario
• Using the PnP PowerShell Cmdlets
• Connecting to the Microsoft Graph and to an Azure AD Application
• Creating a ModernTeam Site (in under 15 seconds) based on a set of
parameters
• Boom!
Make it happen
The full scenario
• Build a SharePoint Framework WebPart
• Use Angular as our main Framework
• Include 3 routes (Home, New Site and Site Information)
• Use Azure Function as my backend provisioning API
• Use the Office UI Fabric components
What about the Office UI Fabric ?
• Well…You have 2 choices : Build or Reuse
• My choice ? Reuse !
• But Seb… It’s Angular, I can’t reuse what does not exist…
• Well…The React components exist, just reuse them !
Downsides
• Can’t use the CLI to build new components and slow to compile
• Can’t use AOT to reduce the bundle size
• Lots of “hacks” in code that make this approach…
• Clearly not SPCAF compliant!
Lessons learned
• Never use any class or ids from the DOM. Always use theViewChild
attribute.
• You can use html templates using the require() approach.Try to do
that, React!
• When you have a strong AngularJS background, it feels just a little bit
weird to move to Angular, but you will get used to it!
And… Should I use it in production?
• As of today, this approach is the only approach that works.
• Use it to experiment, to learn the SharePoint Framework and
Angular altogether.
• Will require a lot of maintenance with new versions of SPFx… In
short, I would not go all in right now… But…
But…
Next Steps
Resources
• https://github.com/SharePoint/sp-dev-fx-
webparts/tree/master/samples/angular2-prototype
• https://dev.office.com/sharepoint/docs/spfx/sharepoint-framework-
overview
• http://dev.office.com/fabric#/components
• https://www.youtube.com/watch?v=Vkzr2TxHFLg&t=6s
Samples
• https://github.com/sebastienlevert/spfx-angular-boilerplate
• https://github.com/SharePoint/sp-dev-fx-webparts
Sharing is caring
• Use hashtags to share your experience
• #Office365Dev
• #MicrosoftGraph
• #AzureFunctions
• #SPFx
• Log issues & questions to the GitHub Repositories
Our Sponsors
GOLD
SILVERLOCATION
BRONZE
MEDIA
Thank you!
@sebastienlevert | http://sebastienlevert.com | Product Evangelist & Partner Manager at

More Related Content

PPTX
SharePoint Framework, Angular and Azure Functions
Sébastien Levert
 
PPTX
C# Async/Await Explained
Jeremy Likness
 
PPTX
European Collaboration Summit - SharePoint Framework Angular & Azure Functions
Sébastien Levert
 
PDF
Marrying angular rails
Volker Tietz
 
PPTX
PowerShell Basics for Office Apps and Servers
Greg McMurray
 
PDF
AngularJS meets Rails
Elena Torró
 
PDF
How angularjs saves rails
Michael He
 
PDF
RailsAdmin - Overview and Best practices
Benoit Bénézech
 
SharePoint Framework, Angular and Azure Functions
Sébastien Levert
 
C# Async/Await Explained
Jeremy Likness
 
European Collaboration Summit - SharePoint Framework Angular & Azure Functions
Sébastien Levert
 
Marrying angular rails
Volker Tietz
 
PowerShell Basics for Office Apps and Servers
Greg McMurray
 
AngularJS meets Rails
Elena Torró
 
How angularjs saves rails
Michael He
 
RailsAdmin - Overview and Best practices
Benoit Bénézech
 

What's hot (20)

PPTX
Introduction to Angular 2
Tuan Trung Vo
 
PDF
Quick Way to work with Models and Alloy in Appcelerator Titanium
Aaron Saunders
 
PDF
Flexible UI Components for a Multi-Framework World
Kevin Ball
 
PPT
Angular js
yogi_solanki
 
PDF
An Intro to Angular 2
Ron Heft
 
PDF
How to Use WebVR to Enhance the Web Experience
FITC
 
PDF
Smooth Animations for Web & Hybrid
FITC
 
PPTX
Advanced AngularJS Tips and Tricks
Jeremy Likness
 
PPT
Integrating AngularJS with Drupal 7
andrewmriley
 
PDF
Webrender 1.0
Daosheng Mu
 
PPTX
Single Page Applications in SharePoint with Angular
Sparkhound Inc.
 
PPTX
HTML5 Web Workers-unleashed
Peter Lubbers
 
PPTX
Angular 4
Saurabh Juneja
 
PDF
Intro to Sails.js
DevOpsDays Austin 2014
 
PDF
RailsAdmin - the right way of doing data administration with Rails 3
Bogdan Gaza
 
PDF
Introduction to A-Frame
Daosheng Mu
 
PDF
Introduction to Selenium and Ruby
Ynon Perek
 
PDF
Modern JavaScript, without giving up on Rails
Jonathan Johnson
 
PDF
Introduction to AJAX In WordPress
Caldera Labs
 
PDF
Drupal & AngularJS - DrupalCamp Spain 2014
Juampy NR
 
Introduction to Angular 2
Tuan Trung Vo
 
Quick Way to work with Models and Alloy in Appcelerator Titanium
Aaron Saunders
 
Flexible UI Components for a Multi-Framework World
Kevin Ball
 
Angular js
yogi_solanki
 
An Intro to Angular 2
Ron Heft
 
How to Use WebVR to Enhance the Web Experience
FITC
 
Smooth Animations for Web & Hybrid
FITC
 
Advanced AngularJS Tips and Tricks
Jeremy Likness
 
Integrating AngularJS with Drupal 7
andrewmriley
 
Webrender 1.0
Daosheng Mu
 
Single Page Applications in SharePoint with Angular
Sparkhound Inc.
 
HTML5 Web Workers-unleashed
Peter Lubbers
 
Angular 4
Saurabh Juneja
 
Intro to Sails.js
DevOpsDays Austin 2014
 
RailsAdmin - the right way of doing data administration with Rails 3
Bogdan Gaza
 
Introduction to A-Frame
Daosheng Mu
 
Introduction to Selenium and Ruby
Ynon Perek
 
Modern JavaScript, without giving up on Rails
Jonathan Johnson
 
Introduction to AJAX In WordPress
Caldera Labs
 
Drupal & AngularJS - DrupalCamp Spain 2014
Juampy NR
 
Ad

Similar to SharePoint Saturday Lisbon 2017 - SharePoint Framework, Angular & Azure Functions (20)

PPTX
SharePoint Fest Seattle - SharePoint Framework, Angular & Azure Functions
Sébastien Levert
 
PPTX
SharePoint Saturday Twin Cities - SharePoint Framework, Angular & Azure Funct...
Sébastien Levert
 
PPTX
SharePoint Saturday Vancouver - SharePoint Framework, Angular and Azure Funct...
Sébastien Levert
 
PPTX
SharePoint Fest DC - SharePoint Framework, Angular and Azure Functions
Sébastien Levert
 
PPTX
European SharePoint Conference 2017 - SharePoint Framework, Angular & Azure F...
Sébastien Levert
 
PPTX
SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
Sébastien Levert
 
PPTX
SharePoint Saturday New York 2017 - SharePoint Framework, Angular and Azure F...
Sébastien Levert
 
PPTX
North American Collaboration Summit 2018 - SharePoint Framework, Angular and ...
Sébastien Levert
 
PPTX
North American Collaboration Summit 2018 - SharePoint Framework, Angular & Az...
Sébastien Levert
 
PPTX
SharePoint Saturday Utah 2018 - SharePoint Framework, Angular and Azure Funct...
Sébastien Levert
 
PPTX
React or Angular and SharePoint Framework Development
Darin Dickey
 
PPTX
Angular vs React: Building modern SharePoint interfaces with SPFx
Dimcho Tsanov
 
PPTX
Chris O'Brien - Introduction to the SharePoint Framework for developers
Chris O'Brien
 
PDF
SPS Paris: Building great client-side web parts with spfx, pnp-js-core, React...
Bill Ayers
 
PDF
D1 - Building Great Client-side Web Parts with SPFx, PnP-JS-Core, ReactJS and...
SPS Paris
 
PPTX
SharePoint Framework at a glance
Haaron Gonzalez
 
PPTX
Making share point rock with angular and react
Joseph Jorden
 
PDF
SPUnite17 Building Great Client Side Web Parts with SPFx
NCCOMMS
 
PPTX
Build Your First SharePoint Framework Webpart
Eric Overfield
 
PPTX
[Patel] SPFx: An ISV Insight into latest Microsoft's customization model
European Collaboration Summit
 
SharePoint Fest Seattle - SharePoint Framework, Angular & Azure Functions
Sébastien Levert
 
SharePoint Saturday Twin Cities - SharePoint Framework, Angular & Azure Funct...
Sébastien Levert
 
SharePoint Saturday Vancouver - SharePoint Framework, Angular and Azure Funct...
Sébastien Levert
 
SharePoint Fest DC - SharePoint Framework, Angular and Azure Functions
Sébastien Levert
 
European SharePoint Conference 2017 - SharePoint Framework, Angular & Azure F...
Sébastien Levert
 
SharePoint Fest Chicago 2017 - SharePoint Framework, Angular & Azure Functions
Sébastien Levert
 
SharePoint Saturday New York 2017 - SharePoint Framework, Angular and Azure F...
Sébastien Levert
 
North American Collaboration Summit 2018 - SharePoint Framework, Angular and ...
Sébastien Levert
 
North American Collaboration Summit 2018 - SharePoint Framework, Angular & Az...
Sébastien Levert
 
SharePoint Saturday Utah 2018 - SharePoint Framework, Angular and Azure Funct...
Sébastien Levert
 
React or Angular and SharePoint Framework Development
Darin Dickey
 
Angular vs React: Building modern SharePoint interfaces with SPFx
Dimcho Tsanov
 
Chris O'Brien - Introduction to the SharePoint Framework for developers
Chris O'Brien
 
SPS Paris: Building great client-side web parts with spfx, pnp-js-core, React...
Bill Ayers
 
D1 - Building Great Client-side Web Parts with SPFx, PnP-JS-Core, ReactJS and...
SPS Paris
 
SharePoint Framework at a glance
Haaron Gonzalez
 
Making share point rock with angular and react
Joseph Jorden
 
SPUnite17 Building Great Client Side Web Parts with SPFx
NCCOMMS
 
Build Your First SharePoint Framework Webpart
Eric Overfield
 
[Patel] SPFx: An ISV Insight into latest Microsoft's customization model
European Collaboration Summit
 
Ad

More from Sébastien Levert (20)

PPTX
SharePoint Fest Chicago 2019 - Build a Full Intranet in 70 minutes
Sébastien Levert
 
PPTX
SharePoint Fest Chicago 2019 - Building tailored search experiences in Modern...
Sébastien Levert
 
PPTX
SharePoint Fest Chicago 2019 - From SharePoint to Office 365 Development
Sébastien Levert
 
PPTX
ESPC19 - Supercharge Your Teams Experience with Advanced Development Techniques
Sébastien Levert
 
PPTX
ESPC19 - Build Your First Microsoft Teams App Using SPFx
Sébastien Levert
 
PPTX
SharePoint Fest Seattle 2019 - From SharePoint to Office 365 Development
Sébastien Levert
 
PPTX
SharePoint Fest Seattle 2019 - Building tailored search experiences in Modern...
Sébastien Levert
 
PPTX
SPC19 - Building tailored search experiences in Modern SharePoint
Sébastien Levert
 
PPTX
SharePoint Fest 2019 - Build an intelligent application by connecting it to t...
Sébastien Levert
 
PPTX
SharePoint Fest DC 2019 - Bot Framework and Microsoft Graph - Join The Revolu...
Sébastien Levert
 
PPTX
SharePoint Fest DC 2019 - From SharePoint to Office 365 Development
Sébastien Levert
 
PPTX
Webinar - 2020-03-24 - Build your first Microsoft Teams app using SPFx
Sébastien Levert
 
PPTX
SPTechCon Austin 2019 - Top 10 feature trends to make you fall in love with y...
Sébastien Levert
 
PPTX
SPTechCon Austin 2019 - From SharePoint to Office 365 development
Sébastien Levert
 
PPTX
SharePoint Fest Chicago 2018 - From SharePoint to Office 365 development
Sébastien Levert
 
PPTX
SharePoint Saturday Vienna 2018 - Top 10 feature trends to make you fall in l...
Sébastien Levert
 
PPTX
SharePoint Saturday Vienna 2018 - Building a modern intranet in 60 minutes
Sébastien Levert
 
PPTX
European SharePoint Conference 2018 - Build an intelligent application by con...
Sébastien Levert
 
PPTX
SharePoint Saturday Belgium 2018 - APIs, APIs everywhere!
Sébastien Levert
 
PPTX
Nashville SharePoint User Group 2018 - Building a modern intranet in 60 minutes
Sébastien Levert
 
SharePoint Fest Chicago 2019 - Build a Full Intranet in 70 minutes
Sébastien Levert
 
SharePoint Fest Chicago 2019 - Building tailored search experiences in Modern...
Sébastien Levert
 
SharePoint Fest Chicago 2019 - From SharePoint to Office 365 Development
Sébastien Levert
 
ESPC19 - Supercharge Your Teams Experience with Advanced Development Techniques
Sébastien Levert
 
ESPC19 - Build Your First Microsoft Teams App Using SPFx
Sébastien Levert
 
SharePoint Fest Seattle 2019 - From SharePoint to Office 365 Development
Sébastien Levert
 
SharePoint Fest Seattle 2019 - Building tailored search experiences in Modern...
Sébastien Levert
 
SPC19 - Building tailored search experiences in Modern SharePoint
Sébastien Levert
 
SharePoint Fest 2019 - Build an intelligent application by connecting it to t...
Sébastien Levert
 
SharePoint Fest DC 2019 - Bot Framework and Microsoft Graph - Join The Revolu...
Sébastien Levert
 
SharePoint Fest DC 2019 - From SharePoint to Office 365 Development
Sébastien Levert
 
Webinar - 2020-03-24 - Build your first Microsoft Teams app using SPFx
Sébastien Levert
 
SPTechCon Austin 2019 - Top 10 feature trends to make you fall in love with y...
Sébastien Levert
 
SPTechCon Austin 2019 - From SharePoint to Office 365 development
Sébastien Levert
 
SharePoint Fest Chicago 2018 - From SharePoint to Office 365 development
Sébastien Levert
 
SharePoint Saturday Vienna 2018 - Top 10 feature trends to make you fall in l...
Sébastien Levert
 
SharePoint Saturday Vienna 2018 - Building a modern intranet in 60 minutes
Sébastien Levert
 
European SharePoint Conference 2018 - Build an intelligent application by con...
Sébastien Levert
 
SharePoint Saturday Belgium 2018 - APIs, APIs everywhere!
Sébastien Levert
 
Nashville SharePoint User Group 2018 - Building a modern intranet in 60 minutes
Sébastien Levert
 

Recently uploaded (20)

PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
CIFDAQ'S Market Insight: BTC to ETH money in motion
CIFDAQ
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
Chapter 1 Introduction to CV and IP Lecture Note.pdf
Getnet Tigabie Askale -(GM)
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
Software Development Methodologies in 2025
KodekX
 
PDF
Revolutionize Operations with Intelligent IoT Monitoring and Control
Rejig Digital
 
PDF
Chapter 2 Digital Image Fundamentals.pdf
Getnet Tigabie Askale -(GM)
 
PPTX
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PPT
L2 Rules of Netiquette in Empowerment technology
Archibal2
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
CIFDAQ'S Market Insight: BTC to ETH money in motion
CIFDAQ
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
Chapter 1 Introduction to CV and IP Lecture Note.pdf
Getnet Tigabie Askale -(GM)
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Software Development Methodologies in 2025
KodekX
 
Revolutionize Operations with Intelligent IoT Monitoring and Control
Rejig Digital
 
Chapter 2 Digital Image Fundamentals.pdf
Getnet Tigabie Askale -(GM)
 
How to Build a Scalable Micro-Investing Platform in 2025 - A Founder’s Guide ...
Third Rock Techkno
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
L2 Rules of Netiquette in Empowerment technology
Archibal2
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 

SharePoint Saturday Lisbon 2017 - SharePoint Framework, Angular & Azure Functions

  • 1. SharePoint Framework, Angular and Azure Functions by Sébastien Levert
  • 3. Hi! I’m Seb! @sebastienlevert | http://sebastienlevert.com | Product Evangelist & Partner Manager at
  • 7. Angular… But which version ? • Works well with Angular 1.6 • Works OK with Angular 2 • Works awesome with Angular 4 (Did you just say Angular 4!?) • Works even better with Angular 5 (NgElement to the rescue!)
  • 8. Is that even possible ? • Some are thinking it is mission impossible… But it is! And it’s much more simpler than you think. • You have the full power of Angular within you own SPFx webparts • Multiple webparts can exist in a page, including their own routing configuration
  • 11. Embedding an Element public render(): void { this.domElement.innerHTML = ` <hello-world name="${this.properties.name}"> </hello-world>`; }
  • 12. Routing const routes: Routes = [ { path: '', component: SitesComponent, children: [ { path: '', component: SitesHomeComponent }, { path: 'sites', children: [ { path: 'new', component: SitesFormComponent }, { path: ':id', component: SitesViewComponent } ]}, ]} ]; import { appRoutes } from "./app/app.routes" protected get routes(): any { return appRoutes; }
  • 13. Global Configurations import { ConfigurationService } from "./app/services/ConfigurationService"; ConfigurationService { provide: APP_INITIALIZER, useFactory: (configurationService: ConfigurationService) => () => configurationService.load({ functionUrl: this.properties.functionUrl, functionKey: this.properties.functionKey, description: this.properties.description, styles: styles }), deps: [ConfigurationService], multi: true }
  • 14. Mocking Data if (Environment.type === EnvironmentType.Local) { return [ { provide: SitesService, useClass: MockSitesService }, ]; } else if (Environment.type == EnvironmentType.SharePoint || Environment.type == EnvironmentType.ClassicSharePoint) { return [ { provide: SitesService, useClass: SitesService }, ]; }
  • 15. Mocking Data export class MockSitesService implements ISitesService { public createSite(siteInformation: ISiteCreationInformation): Observable<ISiteCreationResponse> { return Observable.of<ISiteCreationResponse>({ description: `${siteInformation.description} (Mocked)`, email: `${siteInformation.url}@mocked.onmicrosoft.com`, id: "00000000-0000-0000-0000-000000000000", title: `${siteInformation.title} (Mocked)`, url: `#${siteInformation.url}` }).delay(2000); } }
  • 17. Why Azure Functions ? • Cheap way to host any API in Azure • You can use your favorite language • Super cheap to run • Perfect companion for any Single Page Application or any JavaScript component
  • 18. Our scenario • Using the PnP PowerShell Cmdlets • Connecting to the Microsoft Graph and to an Azure AD Application • Creating a ModernTeam Site (in under 15 seconds) based on a set of parameters • Boom!
  • 20. The full scenario • Build a SharePoint Framework WebPart • Use Angular as our main Framework • Include 3 routes (Home, New Site and Site Information) • Use Azure Function as my backend provisioning API • Use the Office UI Fabric components
  • 21. What about the Office UI Fabric ? • Well…You have 2 choices : Build or Reuse • My choice ? Reuse ! • But Seb… It’s Angular, I can’t reuse what does not exist… • Well…The React components exist, just reuse them !
  • 22. Downsides • Can’t use the CLI to build new components and slow to compile • Can’t use AOT to reduce the bundle size • Lots of “hacks” in code that make this approach… • Clearly not SPCAF compliant!
  • 23. Lessons learned • Never use any class or ids from the DOM. Always use theViewChild attribute. • You can use html templates using the require() approach.Try to do that, React! • When you have a strong AngularJS background, it feels just a little bit weird to move to Angular, but you will get used to it!
  • 24. And… Should I use it in production? • As of today, this approach is the only approach that works. • Use it to experiment, to learn the SharePoint Framework and Angular altogether. • Will require a lot of maintenance with new versions of SPFx… In short, I would not go all in right now… But…
  • 29. Sharing is caring • Use hashtags to share your experience • #Office365Dev • #MicrosoftGraph • #AzureFunctions • #SPFx • Log issues & questions to the GitHub Repositories
  • 31. Thank you! @sebastienlevert | http://sebastienlevert.com | Product Evangelist & Partner Manager at