SlideShare a Scribd company logo
1 of 35
Download to read offline
by Wolfgang Ziegler // fago
Pre-Rendering Media Sites with
Nuxt.js & Netlify

Wolfgang Ziegler // fago

Twitter: @the_real_fago

Core contributions:
 Drupal 8 Entity API & Typed Data API

Contrib:
 Rules, Entity API, Field Collection, Profile2

CEO / CTO of drunomics GmbH
About me
What‘s pre-rendering
Data source (e.g. Drupal)
+
Pre-render process
=
Static files
(.html, .css, .js, ..)
Why to pre-render?
●
Performance – static sites are fast!
●
Easy way to decouple
- without SEO concerns
- while keeping hosting cost &
complexity down!
The progressive Vue.js framework!
http://nuxtjs.org
Why Vue.js?
●
Approachable
– Tries to stick HTML , JavaScript, CSS standards
– Great documentation!
●
Versatile
– easy to get started
– incrementally adoptable (router, store, …)!
●
Performant!
– 20kB gzipped, Virtual DOM
●
follows Vue.js principles
●
includes all needed for fully-fledged applications
– Transpilation, CSS (Pre-)Processors
– Routes, with automatic code splitting, ...
●
Modular (PWA, Axios, ...)
●
Performant & Enjoyable
Nuxt.js Rendering
●
Single Page Application (SPA)
– Small initial page → JavasScript + APIs
●
Server Side Rendered
– „universal“ or „isomorphic“ mode
●
Statically generated
– It‘s pre-rendered – no need for a server!
– Can be combined with API requests
Netlify
●
All-in-one (hosting) platform for static
sites
●
Automatic deployment after Git
commits
●
Builds your app per branch / PR
●
Atomic deployments, SSL, automatically
managed CDN, free tier
Netlify + Nuxt.js
●
npx create-nuxt-app ams-demo
●
Push to Github
●
Log into netlify.com and connect it
●
Configure build command:
npm run generate
●
Deploy!
Results...
●
https://github.com/fago/nuxt-netlify-ams
→ Build time: 50s. Total deploy time: 50s
https://5db7774547e9e00008f5f780--
pensive-goldberg-02ea42.netlify.com/
Great setup for serving content
●
Drupal serves as editoral application
●
After changes, the Netlify builds gets
triggered! (via API)
●
Deployment happens fully-automated!
●
Fast and reliable CDN powered site!
… but how do you
●
deal with instant updates?
●
handle large amounts of content?
●
handle personalized content?
Personalization via API
●
Have a general pre-rendered site
●
Login via API
●
Fetch personalized data via API
●
Let Vue.js handle DOM updates
Instant updates
●
Regularly pre-generating static sites!
●
but still…
pre-rendered pages might be not fresh
enough!
●
Use APIs to fetch latest updates!
→ Apply changes via Vue.js
Massive amount of content
●
Pre-rendering huge amount of content and
pages takes time!
~12.000 pages takes about 20min!
●
Incremental pre-rendering is not there!
●
Thus: Pre-render parts & deliver main
content via Drupal
Pre-render the page shell
+ Main content
=
Pre-rendered content
Dynamic content
Pre-rendered page Drupal provided
content
Complete page
So rendering on the backend again?
●
Only render simplified markup using
„Custom Elements“
●
Render custom elements client-side with Vue.js!
<pg-quote>
<p>Rendering custom elements is as easy as pie!</p>
<span slot="author">fago</span>
</pg-quote>
<pg-twitter src="#the-twitter-post-link">
<h3 slot="title">The title value</h3>
</pg-twitter>
Lupus Decoupled Drupal
Pre-render the page shell
+ Main content
=
Pre-rendered content
Dynamic content
Pre-rendered page Drupal provided
content
Complete page
Frontproxy: Pre-build page response
●
Make Drupal provide the main content via API
+ needed page metadata via API
●
Handle requests by
– fetching pre-generated page shell
– Main content from API
●
Form-submissions, sessions etc. all working as
usual!
●
github.com/drunomics/lupus-frontproxy
Frontproxy + API backend
example.com/{ path }
static.example.com/layout
—default.html
example.com/api/{ path}
Cookies,
Form-data,
...
Lupus CE Renderer module
●
Switches main content renderer to deliver it
via API
●
Only handles main content – no block layout!
●
Adds page metadata (title, breadcrumbs,
metatags)
●
https://drupal.org/project/lupus_ce_renderer
Client-side route changes!
●
First page request → Handled by the
frontproxy!
●
Subsequent page requests:
– Client-side application fetches main content from
API
– Apply changes (Page content, Page metadata)
→ Better UX and performance by avoiding
full page reloads!
Custom Elements
●
Enable client-side rendering via Vue.js /
Web / or React components
●
SEO-friendly without pre-rendering:
– HTML responses with regular content in slots!
– Custom Elements are standardized by the
W3C as part of the web components spec
●
Simplified and more semantic markup!
Custom Elements & SEO
●
render essential data with standard HTML
tags and attribtues
●
Keep links between your pages!
<a is="teaser-wide" href="/your-article">
<h2 slot="title">Article title</h2>
<div slot="excerpt">Some excerpt....</div>
</a>
Custom elements module
●
Renders entities into Custom Element
markup
●
Comes with „Custom elements everywhere“
●
Provides a Symfony Serializer-like API
generating Custom Elements markup
●
Layout-builder compatible
●
https://drupal.org/project/custom_elements
A novel approach to
progressively decoupled Drupal
●
Decouples frontend rendering from the
backend!
●
Backend stays in control of routing &
URLs,
form processing, sessions, …
●
Easy caching & scalability at the backend!
→ Cache your API requests!
Conclusions
●
Advantages of decoupled frontend!
●
Editors & site managers stay in control!
●
Performance – less issues with cache tags!
●
No Node.js hosting required
●
Con: Team needs to understand it!
Nuxt.js rendering options!
Option to turn on Nuxt.js SSR and replace
the frontproxy!
●
Still easy to scale (but cache page shell?)
●
Less worrying about SEO friendly markup
●
One more service to run & pay hosting
cost
Thank you
Join us for
contribution opportunities
Thursday, October 31, 2019
9:00-18:00
Room: Europe Foyer 2
Mentored
Contribution
First Time
Contributor Workshop
General
Contribution
#DrupalContributions
9:00-14:00
Room: Diamond Lounge
9:00-18:00
Room: Europe Foyer 2
What did you think?
Locate this session at the DrupalCon Amsterdam website:
https://drupal.kuoni-congress.info/2019/program/
Take the Survey!
https://www.surveymonkey.com/r/DrupalConAmsterdam
Questions?

More Related Content

What's hot

Java2day 2013 : Modern workflows for javascript integration
Java2day 2013 : Modern workflows for javascript integrationJava2day 2013 : Modern workflows for javascript integration
Java2day 2013 : Modern workflows for javascript integration
Mite Mitreski
 

What's hot (20)

Nuxt.JS Introdruction
Nuxt.JS IntrodructionNuxt.JS Introdruction
Nuxt.JS Introdruction
 
Vue js for beginner
Vue js for beginner Vue js for beginner
Vue js for beginner
 
Javascript ui for rest services
Javascript ui for rest servicesJavascript ui for rest services
Javascript ui for rest services
 
Vue.js
Vue.jsVue.js
Vue.js
 
PyConFR 2014 - DEPOT, Story of a file.write() gone wrong
PyConFR 2014 - DEPOT, Story of a file.write() gone wrongPyConFR 2014 - DEPOT, Story of a file.write() gone wrong
PyConFR 2014 - DEPOT, Story of a file.write() gone wrong
 
EP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For AssetsEP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
 
AngularJS Deep Dives (NYC GDG Apr 2013)
AngularJS Deep Dives (NYC GDG Apr 2013)AngularJS Deep Dives (NYC GDG Apr 2013)
AngularJS Deep Dives (NYC GDG Apr 2013)
 
Intro to sbt-web
Intro to sbt-webIntro to sbt-web
Intro to sbt-web
 
Vuejs
VuejsVuejs
Vuejs
 
An Introduction to Vuejs
An Introduction to VuejsAn Introduction to Vuejs
An Introduction to Vuejs
 
Vue Introduction
Vue IntroductionVue Introduction
Vue Introduction
 
Basics of VueJS
Basics of VueJSBasics of VueJS
Basics of VueJS
 
VueJs Workshop
VueJs WorkshopVueJs Workshop
VueJs Workshop
 
Vue 淺談前端建置工具
Vue 淺談前端建置工具Vue 淺談前端建置工具
Vue 淺談前端建置工具
 
Intro to Vue
Intro to Vue Intro to Vue
Intro to Vue
 
Java2day 2013 : Modern workflows for javascript integration
Java2day 2013 : Modern workflows for javascript integrationJava2day 2013 : Modern workflows for javascript integration
Java2day 2013 : Modern workflows for javascript integration
 
第一次用 Vue.js 就愛上 [改]
第一次用 Vue.js 就愛上 [改]第一次用 Vue.js 就愛上 [改]
第一次用 Vue.js 就愛上 [改]
 
Kickstarting Node.js Projects with Yeoman
Kickstarting Node.js Projects with YeomanKickstarting Node.js Projects with Yeoman
Kickstarting Node.js Projects with Yeoman
 
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.jsThe MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js
 
VueJS Introduction
VueJS IntroductionVueJS Introduction
VueJS Introduction
 

Similar to Pre rendering media sites with nuxt.js & netlify

Pagespeed what, why, and how it works
Pagespeed   what, why, and how it worksPagespeed   what, why, and how it works
Pagespeed what, why, and how it works
Ilya Grigorik
 

Similar to Pre rendering media sites with nuxt.js & netlify (20)

Client vs Server Templating: Speed up initial load for SPA with Angular as an...
Client vs Server Templating: Speed up initial load for SPA with Angular as an...Client vs Server Templating: Speed up initial load for SPA with Angular as an...
Client vs Server Templating: Speed up initial load for SPA with Angular as an...
 
JEE Conf 2015: Less JS!
JEE Conf 2015: Less JS!JEE Conf 2015: Less JS!
JEE Conf 2015: Less JS!
 
JAMstack with gatsby, contentful and netlify aka the dream stack
JAMstack with gatsby, contentful and netlify aka the dream stackJAMstack with gatsby, contentful and netlify aka the dream stack
JAMstack with gatsby, contentful and netlify aka the dream stack
 
Dust.js
Dust.jsDust.js
Dust.js
 
Web component
Web componentWeb component
Web component
 
Developing JavaScript Widgets
Developing JavaScript WidgetsDeveloping JavaScript Widgets
Developing JavaScript Widgets
 
Seo for single page applications
Seo for single page applicationsSeo for single page applications
Seo for single page applications
 
Pagespeed what, why, and how it works
Pagespeed   what, why, and how it worksPagespeed   what, why, and how it works
Pagespeed what, why, and how it works
 
Developing JavaScript Widgets
Developing JavaScript WidgetsDeveloping JavaScript Widgets
Developing JavaScript Widgets
 
Basics of Vue.js 2019
Basics of Vue.js 2019Basics of Vue.js 2019
Basics of Vue.js 2019
 
Headless CMS for Magento using Hyvä and Storyblok
Headless CMS for Magento using Hyvä and StoryblokHeadless CMS for Magento using Hyvä and Storyblok
Headless CMS for Magento using Hyvä and Storyblok
 
Web App Prototypes with Google App Engine
Web App Prototypes with Google App EngineWeb App Prototypes with Google App Engine
Web App Prototypes with Google App Engine
 
How NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscapeHow NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscape
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I started
 
20 tips for website performance
20 tips for website performance20 tips for website performance
20 tips for website performance
 
Code driven development in drupal
Code driven development in drupalCode driven development in drupal
Code driven development in drupal
 
Introduction to Vue.js DevStaff Meetup 13.02
Introduction to Vue.js  DevStaff Meetup 13.02Introduction to Vue.js  DevStaff Meetup 13.02
Introduction to Vue.js DevStaff Meetup 13.02
 
Refactoring to a SPA
Refactoring to a SPARefactoring to a SPA
Refactoring to a SPA
 
Performance (browser)
Performance (browser)Performance (browser)
Performance (browser)
 
Refactoring to a Single Page Application
Refactoring to a Single Page ApplicationRefactoring to a Single Page Application
Refactoring to a Single Page Application
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 

Pre rendering media sites with nuxt.js & netlify

  • 1.
  • 2. by Wolfgang Ziegler // fago Pre-Rendering Media Sites with Nuxt.js & Netlify
  • 3.  Wolfgang Ziegler // fago  Twitter: @the_real_fago  Core contributions:  Drupal 8 Entity API & Typed Data API  Contrib:  Rules, Entity API, Field Collection, Profile2  CEO / CTO of drunomics GmbH About me
  • 4. What‘s pre-rendering Data source (e.g. Drupal) + Pre-render process = Static files (.html, .css, .js, ..)
  • 5. Why to pre-render? ● Performance – static sites are fast! ● Easy way to decouple - without SEO concerns - while keeping hosting cost & complexity down!
  • 6. The progressive Vue.js framework! http://nuxtjs.org
  • 7. Why Vue.js? ● Approachable – Tries to stick HTML , JavaScript, CSS standards – Great documentation! ● Versatile – easy to get started – incrementally adoptable (router, store, …)! ● Performant! – 20kB gzipped, Virtual DOM
  • 8. ● follows Vue.js principles ● includes all needed for fully-fledged applications – Transpilation, CSS (Pre-)Processors – Routes, with automatic code splitting, ... ● Modular (PWA, Axios, ...) ● Performant & Enjoyable
  • 9. Nuxt.js Rendering ● Single Page Application (SPA) – Small initial page → JavasScript + APIs ● Server Side Rendered – „universal“ or „isomorphic“ mode ● Statically generated – It‘s pre-rendered – no need for a server! – Can be combined with API requests
  • 10. Netlify ● All-in-one (hosting) platform for static sites ● Automatic deployment after Git commits ● Builds your app per branch / PR ● Atomic deployments, SSL, automatically managed CDN, free tier
  • 11. Netlify + Nuxt.js ● npx create-nuxt-app ams-demo ● Push to Github ● Log into netlify.com and connect it ● Configure build command: npm run generate ● Deploy!
  • 12. Results... ● https://github.com/fago/nuxt-netlify-ams → Build time: 50s. Total deploy time: 50s https://5db7774547e9e00008f5f780-- pensive-goldberg-02ea42.netlify.com/
  • 13. Great setup for serving content ● Drupal serves as editoral application ● After changes, the Netlify builds gets triggered! (via API) ● Deployment happens fully-automated! ● Fast and reliable CDN powered site!
  • 14. … but how do you ● deal with instant updates? ● handle large amounts of content? ● handle personalized content?
  • 15. Personalization via API ● Have a general pre-rendered site ● Login via API ● Fetch personalized data via API ● Let Vue.js handle DOM updates
  • 16. Instant updates ● Regularly pre-generating static sites! ● but still… pre-rendered pages might be not fresh enough! ● Use APIs to fetch latest updates! → Apply changes via Vue.js
  • 17. Massive amount of content ● Pre-rendering huge amount of content and pages takes time! ~12.000 pages takes about 20min! ● Incremental pre-rendering is not there! ● Thus: Pre-render parts & deliver main content via Drupal
  • 18. Pre-render the page shell + Main content = Pre-rendered content Dynamic content Pre-rendered page Drupal provided content Complete page
  • 19. So rendering on the backend again? ● Only render simplified markup using „Custom Elements“ ● Render custom elements client-side with Vue.js! <pg-quote> <p>Rendering custom elements is as easy as pie!</p> <span slot="author">fago</span> </pg-quote> <pg-twitter src="#the-twitter-post-link"> <h3 slot="title">The title value</h3> </pg-twitter>
  • 21. Pre-render the page shell + Main content = Pre-rendered content Dynamic content Pre-rendered page Drupal provided content Complete page
  • 22. Frontproxy: Pre-build page response ● Make Drupal provide the main content via API + needed page metadata via API ● Handle requests by – fetching pre-generated page shell – Main content from API ● Form-submissions, sessions etc. all working as usual! ● github.com/drunomics/lupus-frontproxy
  • 23. Frontproxy + API backend example.com/{ path } static.example.com/layout —default.html example.com/api/{ path} Cookies, Form-data, ...
  • 24. Lupus CE Renderer module ● Switches main content renderer to deliver it via API ● Only handles main content – no block layout! ● Adds page metadata (title, breadcrumbs, metatags) ● https://drupal.org/project/lupus_ce_renderer
  • 25. Client-side route changes! ● First page request → Handled by the frontproxy! ● Subsequent page requests: – Client-side application fetches main content from API – Apply changes (Page content, Page metadata) → Better UX and performance by avoiding full page reloads!
  • 26. Custom Elements ● Enable client-side rendering via Vue.js / Web / or React components ● SEO-friendly without pre-rendering: – HTML responses with regular content in slots! – Custom Elements are standardized by the W3C as part of the web components spec ● Simplified and more semantic markup!
  • 27. Custom Elements & SEO ● render essential data with standard HTML tags and attribtues ● Keep links between your pages! <a is="teaser-wide" href="/your-article"> <h2 slot="title">Article title</h2> <div slot="excerpt">Some excerpt....</div> </a>
  • 28. Custom elements module ● Renders entities into Custom Element markup ● Comes with „Custom elements everywhere“ ● Provides a Symfony Serializer-like API generating Custom Elements markup ● Layout-builder compatible ● https://drupal.org/project/custom_elements
  • 29. A novel approach to progressively decoupled Drupal ● Decouples frontend rendering from the backend! ● Backend stays in control of routing & URLs, form processing, sessions, … ● Easy caching & scalability at the backend! → Cache your API requests!
  • 30. Conclusions ● Advantages of decoupled frontend! ● Editors & site managers stay in control! ● Performance – less issues with cache tags! ● No Node.js hosting required ● Con: Team needs to understand it!
  • 31. Nuxt.js rendering options! Option to turn on Nuxt.js SSR and replace the frontproxy! ● Still easy to scale (but cache page shell?) ● Less worrying about SEO friendly markup ● One more service to run & pay hosting cost
  • 33. Join us for contribution opportunities Thursday, October 31, 2019 9:00-18:00 Room: Europe Foyer 2 Mentored Contribution First Time Contributor Workshop General Contribution #DrupalContributions 9:00-14:00 Room: Diamond Lounge 9:00-18:00 Room: Europe Foyer 2
  • 34. What did you think? Locate this session at the DrupalCon Amsterdam website: https://drupal.kuoni-congress.info/2019/program/ Take the Survey! https://www.surveymonkey.com/r/DrupalConAmsterdam