SlideShare a Scribd company logo
1 of 26
#evolverocks
APPROACHES TO LEVERAGING AEM
WITHIN A SINGLE PAGE APPLICATION
PAUL MCMAHON
08/31/2016
#evolverocks 2
Paul McMahon – Managing Director at Accenture Interactive
North American AEM Practice Lead and Global Lead AEM Architect
• 14 years experience with AEM/CQ product
• First AEM/CQ implementation in 2002 (included integration to Blue Martini for
eCommerce)
Agenda
• What is a Single Page Application and why would you integrated it with AEM
• Page Patterns
• Site Patterns
• Authoring and Development Patterns
INTRODUCTION
PAUL MCMAHON
#evolverocks 3
WHAT IS A SINGLE PAGE APPLICATION
AND WHY WOULD YOU INTEGRATE IT WITH AEM
#evolverocks 4
Single-Page Applications (SPAs) are
Web apps that load a single HTML page
and dynamically update that page as the
user interacts with the app.
SPAs use AJAX and HTML5 to create
fluid and responsive Web apps, without
constant page reloads.
All of the display & rendering work
happens on the client side (browser), in
JavaScript.
Browser Browser
WCMS WCMS Other
backend
Systems
SPA
HTML HTML HTML
Traditional Site SPA Site
WHAT IS A SPA
#evolverocks 5
Enterprises are evolving toward Client/API approaches rather than continuing
to invest in Traditional Web
• Baseline experience and performance expectations for end users is now mobile native
apps; these expectations cannot be supported by traditional Web architectures
• Don’t create new systems every time you need to upgrade; instead create modular
systems capable of evolving
• Deliver architecture and high quality experience quickly; application development
lifecycle should be months, not years
• Enable fewer developers, designers, and testers to deliver applications for multiple
channels despite budget realities
WHY SINGLE PAGE APPLICATIONS
#evolverocks 6
The Client/API architectures tend to view content management systems as simply another
data source and not part of UI layer
• Enterprises are moving forward with these architectures and expecting AEM to a part of
the architecture.
• This often leads to challenges during implementations because Experience Management
requirements tend to get missed because there is often a focus on site functionality as
opposed to authoring functionality
• Having a clear patterns for how AEM can interact with SPA can help to avoid missed
expectations during implementations
• Without a clear vision for AEM’s role in a SPA based architecture AEM will often times be
relegated to a headless content repository with no role in managing the experience.
WHY IS THIS IMPORTANT
FROM AND AEM PERSPECTIVE
#evolverocks 7
APPROACHES TO INTEGRATING AEM WITH
A SPA
BASED REAL WORLD EXPERIENCE
#evolverocks 8
PAGE PATTERNS
Single Page App
(SPA Wrapper)
AEM Server-Side
Page
AEM Wrapper
for SPA
A Single Page App screen with
components. Upon user
navigation, only the relevant
sections (components) of
content are modified.
A traditional AEM server-side
page with components. Upon
user navigation, the entire page
is refreshed.
An AEM server-side page with Angular
Single Page app content. Upon user
navigation within the SPA, only relevant
components are updated. Navigating
outside of the SPA will force a full page
refresh.
PAGE PATTERN COMPARISONS
Pattern
Technical
Implementation
Benefits Drawbacks When to Use
AEM
Server-
side Page
Standard AEM
Architecture
Full authorability and
flexibility of entire site on-
demand (w/o dev). Easy
creation of microsites.
Full page refresh on every
URL change. No benefits
from the Single Page App
architecture.
Marketing pages and
Microsites.
SPA
Wrapper
Single Page App
content served as
through API from AEM
Publish servers.
SPA architecture benefits
(full page refresh on URL
change not needed, dev
tools, etc). Ease of
environment setup and
deployment (both local and
server). Ability to export
functionality to mobile app.
Partial
authorability/flexibility.
URL/Routing functionality
changes require code
change and new build
For transactional /
data-driven
applications and the
SPA encompasses the
majority of application
functionality.
AEM
Wrapper
for SPA
AEM Publish server
hosts Single Page App
content
copied/deployed onto
static web folders in
App Server.
Benefits of server-side
pages plus benefits of SPA
wrapper
Complexity of build/
deployment. Complexity
of routing between SPA
and AEM pages.
When SPA
functionality is a
subset of the overall
site functionality, or a
SPA needs to be
turned on/off on
demand
#evolverocks 10
SITE PATTERNS
• Mixed Mode Site – Mixture standard
AEM and AEM Wrapper pages in a
single site
• Experience management manages
content, html page and html
fragments, and SPA provides
functionality
• Most of experience management
capabilities are preserved with some
customization needed
• Potentially marketer has the same
control over user experience and how
content is rendered as the traditional
server side rendering
Hybrid Forest of SPA
• Single Page Site: The entire site is a
single page following the AEM Wrapper
page pattern.
• Experience management manages
content and html fragments which can
be loaded into SPA
• Some of experience management
capabilities are preserved with some
customization needed
• Marketer has some control over user
experience and how content is rendered
Single Page AEM Wrapper
• Single Page Site: The entire site is a
single page following the SPA Wrapper
pattern
• Experience management manages
content and html fragments which can
be loaded into SPA
• Most of experience management values
are lost
• Marketer has the least control over user
experience and how content is rendered
Single Page SPA Wrapper
#evolverocks 11
HYBRID FOREST OF SPAS APPROACH
MAKE THE PURIST WINCE
#evolverocks 12
Runtime Architecture
• Standard AEM physical architecture
• Web server is configured to pass all non-
API requests to dispatcher.
• API Requests are proxied back to API (or
separate API host can be used
Page Patterns
• Pages can either be standard AEM server
side pages or and AEM wrapper for SPA
pages
• SPA code is deployed CRX and served
from CRX
RUNTIME ARCHITECTURE
Browser
Web Server
AEM Instance
Cache
AEM Dispatcher
Cache
Template/
component
Content/assets
Rendering Engine
Integration API
Layer
Content
Proxy
Data
JSON
Other Backend
Systems
Data
$XXX.XX
Content/View
1 2
3
5
4
8
view
view
Data
4
6 7
#evolverocks 13
PAGE LAYOUT AND AUTHORING
SPA Component
SPAComponent
AEM
Compon
ent
AEM Component
AEM Component
AEM
Compone
nt
SPA
Compone
nt
SPA Component
• Component Types
– SPA Component
• HTL outputs content & SPA code
• SPA code can be included at template layer as
needed.
– AEM Component
• Traditional AEM component
• Authoring Experience
• Similar to traditional authoring experiences -
templates can be locked down to create
functional SPA pages with more developer
control or they can follow par sys approach
• SPA code generally doesn’t execute in author
mode.
#evolverocks 14
SINGLE PAGE AEM WRAPPER
PURIST WINCE LESS
#evolverocks 15
Runtime Architecture
• Standard AEM physical architecture
• Web server is configured to pass all non-
API requests to dispatcher.
• API Requests are proxied back to API (or
separate API host can be used
Page Patterns
• Single AEM wrapper for SPA page
• The initial page loads and all navigation
or screen transitions happen client side –
no more full page reloads
• SPA code is deployed CRX and served
from CRX
RUNTIME ARCHITECTURE
Browser
Web Server
AEM Instance
Cache
AEM Dispatcher
Cache
Template/
component
Content/assets
Rendering Engine
Integration API
Layer
Content
Proxy
Data
JSON
Modular View
Other Backend
Systems
Angular App
ControllerView
Content/View Data
1 2
3
5
4
6
8
9
view
view
Content JSON
Modular View
Modular View
Angular App
Controller
view
Data $XXX.XX
7
#evolverocks 16
PAGE LAYOUT AND AUTHORING
SPA Component
SPAComponent
AEM
Compon
ent
AEM Component
AEM Component
AEM
Compone
nt
SPA
Compone
nt
SPA Component
• Authoring Experience
• Similar to Hybrid Forest of SPAs, except the
AEM page represent routes in the SPA instead
site page
• Because it is full SPA on some of the templates
authors give up control to developers. The
degree which this true depends on the developer
• Requires a mixture of routes defined in code
(meaning certain AEM page must exist and must
be of a particular template
• SPA code does not execute in Author mode
#evolverocks 17
SINGLE PAGE SPA WRAPPER
PURIST HAPPY
#evolverocks 18
Runtime Architecture
• Standard AEM physical architecture
• Web server is serve most calls from doc
root
• Specific URLs like /content are
configured to route to dispatcher
• Calls from the SPA to AEM for content
can be routed through the API layer or go
direct to dispatcher based on preference
Page Patterns
• Single SPA wrapper page
RUNTIME ARCHITECTURE
Browser
Web Server
AEM Instance(publish and author)
Cache
AEM Dispatcher
Cache
Template/
component*
Content/assets
Rendering Engine
Integration API
Layer
Content(headless)
Content Data
Proxy
Data
JSON
Data
JSON
Other Backend
Systems
Angular App
Angular App
ControllerView
12
53
4
6
8
9
7
Content JSON
ControllerView
Data $XX.XXX
#evolverocks 19
PAGE LAYOUT AND AUTHORING
• Authoring Experience
• Authors generally have little to no control over
layout
• Developers typically control which components
are on which screens.
• There are patterns to allow more control of
specific routes or screens, but those tend to be
the exception rather than rule.
• For most content AEM serves up either JSON
raw content to be consumed by SPA components
• In some cases AEM may render and HTML
fragment for inclusion by the SPA
SPAComponent
SPA Component
SPA
Component
SPA
Componen
t
AEM Component
AEM
Componen
t
AEM
Componen
t
#evolverocks 20
AUTHORING & DEVELOPMENT PATTERNS
#evolverocks 21
Server Side Page
• Standard AEM
Marketing Pages Wrapped by SPA
• Applies to either of wrapper patterns
• Everything between header and footer controlled by author – standard AEM authoring
tools enabled.
• Renders HTML fragment server side
• Dynamic route creation – authors can create new routes on demand for marketing pages
SPA Route as a AEM Page
• Relevant to the wrapper patterns
• Every developer defined SPA route also has an AEM page
• Depending on the route the level of control authors have may vary – there may be a well
defined content model supported by that route defined in the template, or sections of the
routes views may be designated for author control with HTML fragments rendered server
side
AUTHORING PATTERNS
#evolverocks 22
Content Fragments
• Reusable content fragments potentially referenced by multiple locations in a SPA
• Allows for either HTML fragment rendering or raw JSON content
• Requires the SPA developer know the URL of the fragment to be included, or some other
configuration mechanism to inform the SPA of the fragment URL
Simple Text Configuration
• Simple name-value pair text mapping
• Great for simple text content like field labels or descriptions
• Can be used in a variety of taxonomy patterns – on config page per route, or apply global
inheritance and override rules.
• Can be used to allow authors to point to images or content fragments
AUTHORING PATTERNS
#evolverocks 23
Authored SPA Components
• Allows authoring of a component the includes SPA functionality
• HTL prints out some combination of server side rendered content with embedded SPA
directives
• A mechanism must be designed trigger the SPA directives client side
• Most common in Hybrid Forest of SPAs, but can be applicable in other patterns
AUTHORING PATTERNS
#evolverocks 24
Authoring
• Preview – have to provide a punch out mechanism to allow full SPA preview
• May need a staging environment to do accurate preview
• SPA components may need switches – one version with a mockup of the component for
author mode and one version for publish mode
Development
• One set of developers can end up feeling like second class citizens without investment in
good process and tools
• These process and tools are not yet standardized so the must be built out for each
implementation
• Requires either T skilled developers for really good collaboration between SPA and AEM
developers
CHALLENGES
#evolverocks 25
ABOUT US
Mail
paul..m.mcmahon@Accenture.com
Twitter
https://twitter.com/Acc
entureSocial
Linkledin
https://www.linkedin.com/company/a
ccenture-interactive
Paul McMahon
Managing Director
Accenture Interactive
Contact Us
https://www.accenture.com
Phone
602.337.4608
#evolverocks
THANK YOU!

More Related Content

What's hot

Asp.Net 2.0 Presentation
Asp.Net 2.0 PresentationAsp.Net 2.0 Presentation
Asp.Net 2.0 Presentationsasidhar
 
Extra aem development tools by Justin Edelson
Extra aem development tools by Justin EdelsonExtra aem development tools by Justin Edelson
Extra aem development tools by Justin EdelsonAEM HUB
 
IMMERSE'16 Introduction to adobe experience manager back end
IMMERSE'16 Introduction to adobe experience manager back endIMMERSE'16 Introduction to adobe experience manager back end
IMMERSE'16 Introduction to adobe experience manager back endAdobeMarketingCloud
 
AEM GEMS Session Template Editor Sept 14 2016
AEM GEMS Session Template Editor Sept 14 2016AEM GEMS Session Template Editor Sept 14 2016
AEM GEMS Session Template Editor Sept 14 2016AdobeMarketingCloud
 
SharePoint Development with the SharePoint Framework
SharePoint Development with the SharePoint FrameworkSharePoint Development with the SharePoint Framework
SharePoint Development with the SharePoint FrameworkJoAnna Cheshire
 
The Next Step in Responsive - RESS
The Next Step in Responsive - RESSThe Next Step in Responsive - RESS
The Next Step in Responsive - RESSAnthony Laurence
 
Asp.net Overview and Controllers
Asp.net Overview and ControllersAsp.net Overview and Controllers
Asp.net Overview and ControllersMustafa Saeed
 
How to Develop Highly Customizable Off-the-Shelf Software (Aleksey Stukalov)
How to Develop Highly Customizable Off-the-Shelf Software  (Aleksey Stukalov)How to Develop Highly Customizable Off-the-Shelf Software  (Aleksey Stukalov)
How to Develop Highly Customizable Off-the-Shelf Software (Aleksey Stukalov)Юрий Артамонов
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMconnectwebex
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMAdobeMarketingCloud
 
Sample google app engine applications
Sample google app engine applicationsSample google app engine applications
Sample google app engine applicationsAurel Medvegy
 

What's hot (18)

Asp.Net 2.0 Presentation
Asp.Net 2.0 PresentationAsp.Net 2.0 Presentation
Asp.Net 2.0 Presentation
 
Evolve18 | Abhishek Dwevidi & Varun Mitra | Intro to Adobe Experience Manager...
Evolve18 | Abhishek Dwevidi & Varun Mitra | Intro to Adobe Experience Manager...Evolve18 | Abhishek Dwevidi & Varun Mitra | Intro to Adobe Experience Manager...
Evolve18 | Abhishek Dwevidi & Varun Mitra | Intro to Adobe Experience Manager...
 
EVOLVE'16 | Maximize | Ben Hubble & Lynn Tabet | Scaling the AEM Customer Exp...
EVOLVE'16 | Maximize | Ben Hubble & Lynn Tabet | Scaling the AEM Customer Exp...EVOLVE'16 | Maximize | Ben Hubble & Lynn Tabet | Scaling the AEM Customer Exp...
EVOLVE'16 | Maximize | Ben Hubble & Lynn Tabet | Scaling the AEM Customer Exp...
 
Extra aem development tools by Justin Edelson
Extra aem development tools by Justin EdelsonExtra aem development tools by Justin Edelson
Extra aem development tools by Justin Edelson
 
IMMERSE'16 Introduction to adobe experience manager back end
IMMERSE'16 Introduction to adobe experience manager back endIMMERSE'16 Introduction to adobe experience manager back end
IMMERSE'16 Introduction to adobe experience manager back end
 
Sling Dynamic Include
Sling Dynamic IncludeSling Dynamic Include
Sling Dynamic Include
 
rmp
rmprmp
rmp
 
The Technical Side of Harvard.edu Redesign
The Technical Side of Harvard.edu RedesignThe Technical Side of Harvard.edu Redesign
The Technical Side of Harvard.edu Redesign
 
Evolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to Avoid
Evolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to AvoidEvolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to Avoid
Evolve 19 | Ameeth Palla | Adobe Asset Link - Use Cases and Pitfalls to Avoid
 
AEM GEMS Session Template Editor Sept 14 2016
AEM GEMS Session Template Editor Sept 14 2016AEM GEMS Session Template Editor Sept 14 2016
AEM GEMS Session Template Editor Sept 14 2016
 
SharePoint Development with the SharePoint Framework
SharePoint Development with the SharePoint FrameworkSharePoint Development with the SharePoint Framework
SharePoint Development with the SharePoint Framework
 
The Next Step in Responsive - RESS
The Next Step in Responsive - RESSThe Next Step in Responsive - RESS
The Next Step in Responsive - RESS
 
Asp.net Overview and Controllers
Asp.net Overview and ControllersAsp.net Overview and Controllers
Asp.net Overview and Controllers
 
EVOLVE'16 | Deploy | Abhishek Dwevedi | Introduction to AEM Assets
EVOLVE'16 | Deploy | Abhishek Dwevedi | Introduction to AEM AssetsEVOLVE'16 | Deploy | Abhishek Dwevedi | Introduction to AEM Assets
EVOLVE'16 | Deploy | Abhishek Dwevedi | Introduction to AEM Assets
 
How to Develop Highly Customizable Off-the-Shelf Software (Aleksey Stukalov)
How to Develop Highly Customizable Off-the-Shelf Software  (Aleksey Stukalov)How to Develop Highly Customizable Off-the-Shelf Software  (Aleksey Stukalov)
How to Develop Highly Customizable Off-the-Shelf Software (Aleksey Stukalov)
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
 
Sample google app engine applications
Sample google app engine applicationsSample google app engine applications
Sample google app engine applications
 

Viewers also liked

Dynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQDynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQNetcetera
 
Creating Real-Time Data Mashups with Node.JS and Adobe CQ
Creating Real-Time Data Mashups with Node.JS and Adobe CQCreating Real-Time Data Mashups with Node.JS and Adobe CQ
Creating Real-Time Data Mashups with Node.JS and Adobe CQiCiDIGITAL
 
Bridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEMBridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEMrbl002
 
CRX2Oak - all the secrets of repository migration
CRX2Oak - all the secrets of repository migrationCRX2Oak - all the secrets of repository migration
CRX2Oak - all the secrets of repository migrationTomasz Rękawek
 
Introducing Apache Jackrabbit OAK
Introducing Apache Jackrabbit OAKIntroducing Apache Jackrabbit OAK
Introducing Apache Jackrabbit OAKYash Mody
 
Corevist extension for hybris Commerce Accelerator for B2B
Corevist extension for hybris Commerce Accelerator for B2BCorevist extension for hybris Commerce Accelerator for B2B
Corevist extension for hybris Commerce Accelerator for B2BKids4Peace International
 
Pitneybowes.com: A multinational, multilingual AEM launch
Pitneybowes.com: A multinational, multilingual AEM launchPitneybowes.com: A multinational, multilingual AEM launch
Pitneybowes.com: A multinational, multilingual AEM launchStephen Evermore
 
Multi Site Manager
Multi Site ManagerMulti Site Manager
Multi Site Managershivani garg
 

Viewers also liked (20)

Dynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQDynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQ
 
Creating Real-Time Data Mashups with Node.JS and Adobe CQ
Creating Real-Time Data Mashups with Node.JS and Adobe CQCreating Real-Time Data Mashups with Node.JS and Adobe CQ
Creating Real-Time Data Mashups with Node.JS and Adobe CQ
 
Bridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEMBridging the Gap: Single-Page Apps and AEM
Bridging the Gap: Single-Page Apps and AEM
 
CRX2Oak - all the secrets of repository migration
CRX2Oak - all the secrets of repository migrationCRX2Oak - all the secrets of repository migration
CRX2Oak - all the secrets of repository migration
 
Introducing Apache Jackrabbit OAK
Introducing Apache Jackrabbit OAKIntroducing Apache Jackrabbit OAK
Introducing Apache Jackrabbit OAK
 
Corevist extension for hybris Commerce Accelerator for B2B
Corevist extension for hybris Commerce Accelerator for B2BCorevist extension for hybris Commerce Accelerator for B2B
Corevist extension for hybris Commerce Accelerator for B2B
 
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM Developer Tooling
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM Developer ToolingEVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM Developer Tooling
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM Developer Tooling
 
EVOLVE'16 | Deploy | Varun Mitra | Understanding the Multi Site Manager
EVOLVE'16 | Deploy | Varun Mitra | Understanding the Multi Site ManagerEVOLVE'16 | Deploy | Varun Mitra | Understanding the Multi Site Manager
EVOLVE'16 | Deploy | Varun Mitra | Understanding the Multi Site Manager
 
EVOLVE'16 | Enhance | Gordon Pike | Rev Up Your Marketing Engine
EVOLVE'16 | Enhance | Gordon Pike | Rev Up Your Marketing EngineEVOLVE'16 | Enhance | Gordon Pike | Rev Up Your Marketing Engine
EVOLVE'16 | Enhance | Gordon Pike | Rev Up Your Marketing Engine
 
Pitneybowes.com: A multinational, multilingual AEM launch
Pitneybowes.com: A multinational, multilingual AEM launchPitneybowes.com: A multinational, multilingual AEM launch
Pitneybowes.com: A multinational, multilingual AEM launch
 
EVOLVE'16 | Maximize | Davide Zanella | AEM & Public Sector
EVOLVE'16 | Maximize | Davide Zanella | AEM & Public SectorEVOLVE'16 | Maximize | Davide Zanella | AEM & Public Sector
EVOLVE'16 | Maximize | Davide Zanella | AEM & Public Sector
 
EVOLVE'14 | Keynote | Cat Reusswig | Building a Great AEM Team
EVOLVE'14 | Keynote | Cat Reusswig | Building a Great AEM TeamEVOLVE'14 | Keynote | Cat Reusswig | Building a Great AEM Team
EVOLVE'14 | Keynote | Cat Reusswig | Building a Great AEM Team
 
EVOLVE'14 | Maximize | Robinson Kelly | Multilingual Localization
EVOLVE'14 | Maximize | Robinson Kelly | Multilingual LocalizationEVOLVE'14 | Maximize | Robinson Kelly | Multilingual Localization
EVOLVE'14 | Maximize | Robinson Kelly | Multilingual Localization
 
EVOLVE'16 | Maximize | Gina Petruccelli & Libby Schaper | Web Accessibility &...
EVOLVE'16 | Maximize | Gina Petruccelli & Libby Schaper | Web Accessibility &...EVOLVE'16 | Maximize | Gina Petruccelli & Libby Schaper | Web Accessibility &...
EVOLVE'16 | Maximize | Gina Petruccelli & Libby Schaper | Web Accessibility &...
 
EVOLVE'16 | Deploy | Varun Mitra | Introduction to Back End Development in AEM
EVOLVE'16 | Deploy | Varun Mitra | Introduction to Back End Development in AEMEVOLVE'16 | Deploy | Varun Mitra | Introduction to Back End Development in AEM
EVOLVE'16 | Deploy | Varun Mitra | Introduction to Back End Development in AEM
 
EVOLVE'13 | Enhance | Localization | Keith Brazil
EVOLVE'13 | Enhance | Localization | Keith BrazilEVOLVE'13 | Enhance | Localization | Keith Brazil
EVOLVE'13 | Enhance | Localization | Keith Brazil
 
EVOLVE'16 | Enhance | Murthy Peri | Empowering Digital Markets with Agile and...
EVOLVE'16 | Enhance | Murthy Peri | Empowering Digital Markets with Agile and...EVOLVE'16 | Enhance | Murthy Peri | Empowering Digital Markets with Agile and...
EVOLVE'16 | Enhance | Murthy Peri | Empowering Digital Markets with Agile and...
 
Multi Site Manager
Multi Site ManagerMulti Site Manager
Multi Site Manager
 
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM  EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM
EVOLVE'16 | Deploy | Varun Mitra | Introduction to AEM
 
EVOLVE'16 | Deploy | Abhishek Dwevedi | Understanding a Typical AEM Deployment
EVOLVE'16 | Deploy | Abhishek Dwevedi | Understanding a Typical AEM DeploymentEVOLVE'16 | Deploy | Abhishek Dwevedi | Understanding a Typical AEM Deployment
EVOLVE'16 | Deploy | Abhishek Dwevedi | Understanding a Typical AEM Deployment
 

Similar to Approaches to Leveraging AEM within a Single Page Application

Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMAdobeMarketingCloud
 
SharePoint Framework - Developer Preview
SharePoint Framework - Developer PreviewSharePoint Framework - Developer Preview
SharePoint Framework - Developer PreviewSean McLellan
 
Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Jeremy Likness
 
Integrating Social Apps with Content Driven Sites using Apache Rave and Sprin...
Integrating Social Apps with Content Driven Sites using Apache Rave and Sprin...Integrating Social Apps with Content Driven Sites using Apache Rave and Sprin...
Integrating Social Apps with Content Driven Sites using Apache Rave and Sprin...ate.douma
 
Introduction Asp.Net Core, MVC, Docker (Linux), Postman and Swagger
Introduction Asp.Net Core, MVC, Docker (Linux), Postman and SwaggerIntroduction Asp.Net Core, MVC, Docker (Linux), Postman and Swagger
Introduction Asp.Net Core, MVC, Docker (Linux), Postman and SwaggerAgusto Sipahutar
 
Server and client rendering of single page apps
Server and client rendering of single page appsServer and client rendering of single page apps
Server and client rendering of single page appsThomas Heymann
 
JOB PORTALProject SummaryTitle JOB-PORT.docx
JOB PORTALProject SummaryTitle    JOB-PORT.docxJOB PORTALProject SummaryTitle    JOB-PORT.docx
JOB PORTALProject SummaryTitle JOB-PORT.docxchristiandean12115
 
SpringPeople Building Web Sites with ASP.NET MVC FRAMEWORK
SpringPeople Building Web Sites with ASP.NET MVC FRAMEWORKSpringPeople Building Web Sites with ASP.NET MVC FRAMEWORK
SpringPeople Building Web Sites with ASP.NET MVC FRAMEWORKSpringPeople
 
Single page application and Framework
Single page application and FrameworkSingle page application and Framework
Single page application and FrameworkChandrasekar G
 
React js Online Training
React js Online TrainingReact js Online Training
React js Online TrainingLearntek1
 
React-Js-Online-Training-9028522.ppsx
React-Js-Online-Training-9028522.ppsxReact-Js-Online-Training-9028522.ppsx
React-Js-Online-Training-9028522.ppsxKulbir4
 

Similar to Approaches to Leveraging AEM within a Single Page Application (20)

JavaScript MVC Frameworks: Backbone, Ember and Angular JS
JavaScript MVC Frameworks: Backbone, Ember and Angular JSJavaScript MVC Frameworks: Backbone, Ember and Angular JS
JavaScript MVC Frameworks: Backbone, Ember and Angular JS
 
Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
 
Aem offline content
Aem offline contentAem offline content
Aem offline content
 
Benefits of developing single page web applications using angular js
Benefits of developing single page web applications using angular jsBenefits of developing single page web applications using angular js
Benefits of developing single page web applications using angular js
 
SharePoint Framework - Developer Preview
SharePoint Framework - Developer PreviewSharePoint Framework - Developer Preview
SharePoint Framework - Developer Preview
 
Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5
Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5
Evolve 19 | Benjie Wheeler | Intro to Adobe Experience Manager 6.5
 
Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!
 
Integrating Social Apps with Content Driven Sites using Apache Rave and Sprin...
Integrating Social Apps with Content Driven Sites using Apache Rave and Sprin...Integrating Social Apps with Content Driven Sites using Apache Rave and Sprin...
Integrating Social Apps with Content Driven Sites using Apache Rave and Sprin...
 
Introduction Asp.Net Core, MVC, Docker (Linux), Postman and Swagger
Introduction Asp.Net Core, MVC, Docker (Linux), Postman and SwaggerIntroduction Asp.Net Core, MVC, Docker (Linux), Postman and Swagger
Introduction Asp.Net Core, MVC, Docker (Linux), Postman and Swagger
 
Server and client rendering of single page apps
Server and client rendering of single page appsServer and client rendering of single page apps
Server and client rendering of single page apps
 
JOB PORTALProject SummaryTitle JOB-PORT.docx
JOB PORTALProject SummaryTitle    JOB-PORT.docxJOB PORTALProject SummaryTitle    JOB-PORT.docx
JOB PORTALProject SummaryTitle JOB-PORT.docx
 
SpringPeople Building Web Sites with ASP.NET MVC FRAMEWORK
SpringPeople Building Web Sites with ASP.NET MVC FRAMEWORKSpringPeople Building Web Sites with ASP.NET MVC FRAMEWORK
SpringPeople Building Web Sites with ASP.NET MVC FRAMEWORK
 
Single page application and Framework
Single page application and FrameworkSingle page application and Framework
Single page application and Framework
 
ASP.pptx
ASP.pptxASP.pptx
ASP.pptx
 
Flamingo Commerce Intro
Flamingo Commerce IntroFlamingo Commerce Intro
Flamingo Commerce Intro
 
L13 Presentation Layer Design
L13 Presentation Layer DesignL13 Presentation Layer Design
L13 Presentation Layer Design
 
Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...
Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...
Evolve 19 | Gordon Pike | Prepping for Tomorrow - Creating a Flexible AEM Arc...
 
React js Online Training
React js Online TrainingReact js Online Training
React js Online Training
 
React-Js-Online-Training-9028522.ppsx
React-Js-Online-Training-9028522.ppsxReact-Js-Online-Training-9028522.ppsx
React-Js-Online-Training-9028522.ppsx
 
Angular js 1.3 basic tutorial
Angular js 1.3 basic tutorialAngular js 1.3 basic tutorial
Angular js 1.3 basic tutorial
 

More from Evolve The Adobe Digital Marketing Community

More from Evolve The Adobe Digital Marketing Community (20)

Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
Evolve 19 | Sarah Xu & Kanika Gera | Adobe I/O - Why You Need it to Execute o...
 
Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5
Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5
Evolve 19 | Upen Manickam & Amanda Gray | Adventures in SPA with AEM 6.5
 
Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...
Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...
Evolve 19 | Giancarlo Berner | JECIS 2 - The Beginning of a New Era in Buildi...
 
Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...
Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...
Evolve 19 | Paul Legan & Kristin Jones | Anatomy of a Solid AEM Implementatio...
 
Evolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM Projects
Evolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM ProjectsEvolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM Projects
Evolve 19 | Rabiah Coon & Rebecca Blaha | Rockstar Kickoffs for AEM Projects
 
Evolve19 | Nick Panagopoulos | World Focus: Translation Tips and Trends
Evolve19 | Nick Panagopoulos | World Focus: Translation Tips and TrendsEvolve19 | Nick Panagopoulos | World Focus: Translation Tips and Trends
Evolve19 | Nick Panagopoulos | World Focus: Translation Tips and Trends
 
Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...
Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...
Evolve 19 | Rabiah Coon, Sabrina Schmidt & Noah Linge | Industry Focus | Furn...
 
Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...
Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...
Evolve 19 | Carl Madaffari | Best Practices | From Customer Data to Customer ...
 
Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...
Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...
Evolve 19 | Kevin Campton & Sharat Radhakrishnan | Industry Focus | Autodesk ...
 
Evolve 19 | Gina Petruccelli | Let’s Dig Into Requirements
Evolve 19 | Gina Petruccelli | Let’s Dig Into RequirementsEvolve 19 | Gina Petruccelli | Let’s Dig Into Requirements
Evolve 19 | Gina Petruccelli | Let’s Dig Into Requirements
 
Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...
Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...
Evolve 19 | Dave Fox | Retaining Niche Talent in a Highly Competitive Environ...
 
Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...
Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...
Evolve 19 | Paul Legan | Going Beyond Metadata: Extracting Meaningful Informa...
 
Evolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe Sensei
Evolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe SenseiEvolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe Sensei
Evolve19 | Giancarlo Berner & Brett Butterfield | AI & Adobe Sensei
 
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft AzureEvolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
Evolve 19 | Jayan Kandathil | Running AEM Workloads on Microsoft Azure
 
Evolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver Everywhere
Evolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver EverywhereEvolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver Everywhere
Evolve 19 | Amol Anand & Daniel Gordon | Author in AEM Once - Deliver Everywhere
 
Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...
Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...
Evolve 19 | Bruce Swann | Adobe Campaign - Capabilities, Roadmap, and Fit wit...
 
Evolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go Live
Evolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go LiveEvolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go Live
Evolve 19 | Pete Hoback & Francisco Fagalde | AEM QA, UAT, & Go Live
 
Evolve 19 | Harsh Walia | Best Practices - Adobe Experience Manager
Evolve 19 | Harsh Walia | Best Practices - Adobe Experience ManagerEvolve 19 | Harsh Walia | Best Practices - Adobe Experience Manager
Evolve 19 | Harsh Walia | Best Practices - Adobe Experience Manager
 
Evolve19 | Michel Holland | Marketo - Delivering the Best Experience for the ...
Evolve19 | Michel Holland | Marketo - Delivering the Best Experience for the ...Evolve19 | Michel Holland | Marketo - Delivering the Best Experience for the ...
Evolve19 | Michel Holland | Marketo - Delivering the Best Experience for the ...
 
Evolve18 | Abhishek Dwevidi & Varun Mitra | Introduction to AEM Integration w...
Evolve18 | Abhishek Dwevidi & Varun Mitra | Introduction to AEM Integration w...Evolve18 | Abhishek Dwevidi & Varun Mitra | Introduction to AEM Integration w...
Evolve18 | Abhishek Dwevidi & Varun Mitra | Introduction to AEM Integration w...
 

Recently uploaded

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 

Recently uploaded (20)

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

Approaches to Leveraging AEM within a Single Page Application

  • 1. #evolverocks APPROACHES TO LEVERAGING AEM WITHIN A SINGLE PAGE APPLICATION PAUL MCMAHON 08/31/2016
  • 2. #evolverocks 2 Paul McMahon – Managing Director at Accenture Interactive North American AEM Practice Lead and Global Lead AEM Architect • 14 years experience with AEM/CQ product • First AEM/CQ implementation in 2002 (included integration to Blue Martini for eCommerce) Agenda • What is a Single Page Application and why would you integrated it with AEM • Page Patterns • Site Patterns • Authoring and Development Patterns INTRODUCTION PAUL MCMAHON
  • 3. #evolverocks 3 WHAT IS A SINGLE PAGE APPLICATION AND WHY WOULD YOU INTEGRATE IT WITH AEM
  • 4. #evolverocks 4 Single-Page Applications (SPAs) are Web apps that load a single HTML page and dynamically update that page as the user interacts with the app. SPAs use AJAX and HTML5 to create fluid and responsive Web apps, without constant page reloads. All of the display & rendering work happens on the client side (browser), in JavaScript. Browser Browser WCMS WCMS Other backend Systems SPA HTML HTML HTML Traditional Site SPA Site WHAT IS A SPA
  • 5. #evolverocks 5 Enterprises are evolving toward Client/API approaches rather than continuing to invest in Traditional Web • Baseline experience and performance expectations for end users is now mobile native apps; these expectations cannot be supported by traditional Web architectures • Don’t create new systems every time you need to upgrade; instead create modular systems capable of evolving • Deliver architecture and high quality experience quickly; application development lifecycle should be months, not years • Enable fewer developers, designers, and testers to deliver applications for multiple channels despite budget realities WHY SINGLE PAGE APPLICATIONS
  • 6. #evolverocks 6 The Client/API architectures tend to view content management systems as simply another data source and not part of UI layer • Enterprises are moving forward with these architectures and expecting AEM to a part of the architecture. • This often leads to challenges during implementations because Experience Management requirements tend to get missed because there is often a focus on site functionality as opposed to authoring functionality • Having a clear patterns for how AEM can interact with SPA can help to avoid missed expectations during implementations • Without a clear vision for AEM’s role in a SPA based architecture AEM will often times be relegated to a headless content repository with no role in managing the experience. WHY IS THIS IMPORTANT FROM AND AEM PERSPECTIVE
  • 7. #evolverocks 7 APPROACHES TO INTEGRATING AEM WITH A SPA BASED REAL WORLD EXPERIENCE
  • 8. #evolverocks 8 PAGE PATTERNS Single Page App (SPA Wrapper) AEM Server-Side Page AEM Wrapper for SPA A Single Page App screen with components. Upon user navigation, only the relevant sections (components) of content are modified. A traditional AEM server-side page with components. Upon user navigation, the entire page is refreshed. An AEM server-side page with Angular Single Page app content. Upon user navigation within the SPA, only relevant components are updated. Navigating outside of the SPA will force a full page refresh.
  • 9. PAGE PATTERN COMPARISONS Pattern Technical Implementation Benefits Drawbacks When to Use AEM Server- side Page Standard AEM Architecture Full authorability and flexibility of entire site on- demand (w/o dev). Easy creation of microsites. Full page refresh on every URL change. No benefits from the Single Page App architecture. Marketing pages and Microsites. SPA Wrapper Single Page App content served as through API from AEM Publish servers. SPA architecture benefits (full page refresh on URL change not needed, dev tools, etc). Ease of environment setup and deployment (both local and server). Ability to export functionality to mobile app. Partial authorability/flexibility. URL/Routing functionality changes require code change and new build For transactional / data-driven applications and the SPA encompasses the majority of application functionality. AEM Wrapper for SPA AEM Publish server hosts Single Page App content copied/deployed onto static web folders in App Server. Benefits of server-side pages plus benefits of SPA wrapper Complexity of build/ deployment. Complexity of routing between SPA and AEM pages. When SPA functionality is a subset of the overall site functionality, or a SPA needs to be turned on/off on demand
  • 10. #evolverocks 10 SITE PATTERNS • Mixed Mode Site – Mixture standard AEM and AEM Wrapper pages in a single site • Experience management manages content, html page and html fragments, and SPA provides functionality • Most of experience management capabilities are preserved with some customization needed • Potentially marketer has the same control over user experience and how content is rendered as the traditional server side rendering Hybrid Forest of SPA • Single Page Site: The entire site is a single page following the AEM Wrapper page pattern. • Experience management manages content and html fragments which can be loaded into SPA • Some of experience management capabilities are preserved with some customization needed • Marketer has some control over user experience and how content is rendered Single Page AEM Wrapper • Single Page Site: The entire site is a single page following the SPA Wrapper pattern • Experience management manages content and html fragments which can be loaded into SPA • Most of experience management values are lost • Marketer has the least control over user experience and how content is rendered Single Page SPA Wrapper
  • 11. #evolverocks 11 HYBRID FOREST OF SPAS APPROACH MAKE THE PURIST WINCE
  • 12. #evolverocks 12 Runtime Architecture • Standard AEM physical architecture • Web server is configured to pass all non- API requests to dispatcher. • API Requests are proxied back to API (or separate API host can be used Page Patterns • Pages can either be standard AEM server side pages or and AEM wrapper for SPA pages • SPA code is deployed CRX and served from CRX RUNTIME ARCHITECTURE Browser Web Server AEM Instance Cache AEM Dispatcher Cache Template/ component Content/assets Rendering Engine Integration API Layer Content Proxy Data JSON Other Backend Systems Data $XXX.XX Content/View 1 2 3 5 4 8 view view Data 4 6 7
  • 13. #evolverocks 13 PAGE LAYOUT AND AUTHORING SPA Component SPAComponent AEM Compon ent AEM Component AEM Component AEM Compone nt SPA Compone nt SPA Component • Component Types – SPA Component • HTL outputs content & SPA code • SPA code can be included at template layer as needed. – AEM Component • Traditional AEM component • Authoring Experience • Similar to traditional authoring experiences - templates can be locked down to create functional SPA pages with more developer control or they can follow par sys approach • SPA code generally doesn’t execute in author mode.
  • 14. #evolverocks 14 SINGLE PAGE AEM WRAPPER PURIST WINCE LESS
  • 15. #evolverocks 15 Runtime Architecture • Standard AEM physical architecture • Web server is configured to pass all non- API requests to dispatcher. • API Requests are proxied back to API (or separate API host can be used Page Patterns • Single AEM wrapper for SPA page • The initial page loads and all navigation or screen transitions happen client side – no more full page reloads • SPA code is deployed CRX and served from CRX RUNTIME ARCHITECTURE Browser Web Server AEM Instance Cache AEM Dispatcher Cache Template/ component Content/assets Rendering Engine Integration API Layer Content Proxy Data JSON Modular View Other Backend Systems Angular App ControllerView Content/View Data 1 2 3 5 4 6 8 9 view view Content JSON Modular View Modular View Angular App Controller view Data $XXX.XX 7
  • 16. #evolverocks 16 PAGE LAYOUT AND AUTHORING SPA Component SPAComponent AEM Compon ent AEM Component AEM Component AEM Compone nt SPA Compone nt SPA Component • Authoring Experience • Similar to Hybrid Forest of SPAs, except the AEM page represent routes in the SPA instead site page • Because it is full SPA on some of the templates authors give up control to developers. The degree which this true depends on the developer • Requires a mixture of routes defined in code (meaning certain AEM page must exist and must be of a particular template • SPA code does not execute in Author mode
  • 17. #evolverocks 17 SINGLE PAGE SPA WRAPPER PURIST HAPPY
  • 18. #evolverocks 18 Runtime Architecture • Standard AEM physical architecture • Web server is serve most calls from doc root • Specific URLs like /content are configured to route to dispatcher • Calls from the SPA to AEM for content can be routed through the API layer or go direct to dispatcher based on preference Page Patterns • Single SPA wrapper page RUNTIME ARCHITECTURE Browser Web Server AEM Instance(publish and author) Cache AEM Dispatcher Cache Template/ component* Content/assets Rendering Engine Integration API Layer Content(headless) Content Data Proxy Data JSON Data JSON Other Backend Systems Angular App Angular App ControllerView 12 53 4 6 8 9 7 Content JSON ControllerView Data $XX.XXX
  • 19. #evolverocks 19 PAGE LAYOUT AND AUTHORING • Authoring Experience • Authors generally have little to no control over layout • Developers typically control which components are on which screens. • There are patterns to allow more control of specific routes or screens, but those tend to be the exception rather than rule. • For most content AEM serves up either JSON raw content to be consumed by SPA components • In some cases AEM may render and HTML fragment for inclusion by the SPA SPAComponent SPA Component SPA Component SPA Componen t AEM Component AEM Componen t AEM Componen t
  • 20. #evolverocks 20 AUTHORING & DEVELOPMENT PATTERNS
  • 21. #evolverocks 21 Server Side Page • Standard AEM Marketing Pages Wrapped by SPA • Applies to either of wrapper patterns • Everything between header and footer controlled by author – standard AEM authoring tools enabled. • Renders HTML fragment server side • Dynamic route creation – authors can create new routes on demand for marketing pages SPA Route as a AEM Page • Relevant to the wrapper patterns • Every developer defined SPA route also has an AEM page • Depending on the route the level of control authors have may vary – there may be a well defined content model supported by that route defined in the template, or sections of the routes views may be designated for author control with HTML fragments rendered server side AUTHORING PATTERNS
  • 22. #evolverocks 22 Content Fragments • Reusable content fragments potentially referenced by multiple locations in a SPA • Allows for either HTML fragment rendering or raw JSON content • Requires the SPA developer know the URL of the fragment to be included, or some other configuration mechanism to inform the SPA of the fragment URL Simple Text Configuration • Simple name-value pair text mapping • Great for simple text content like field labels or descriptions • Can be used in a variety of taxonomy patterns – on config page per route, or apply global inheritance and override rules. • Can be used to allow authors to point to images or content fragments AUTHORING PATTERNS
  • 23. #evolverocks 23 Authored SPA Components • Allows authoring of a component the includes SPA functionality • HTL prints out some combination of server side rendered content with embedded SPA directives • A mechanism must be designed trigger the SPA directives client side • Most common in Hybrid Forest of SPAs, but can be applicable in other patterns AUTHORING PATTERNS
  • 24. #evolverocks 24 Authoring • Preview – have to provide a punch out mechanism to allow full SPA preview • May need a staging environment to do accurate preview • SPA components may need switches – one version with a mockup of the component for author mode and one version for publish mode Development • One set of developers can end up feeling like second class citizens without investment in good process and tools • These process and tools are not yet standardized so the must be built out for each implementation • Requires either T skilled developers for really good collaboration between SPA and AEM developers CHALLENGES