SlideShare a Scribd company logo
1 of 25
Download to read offline
Between a SPA 

& a JAMstack
Building web sites with 

Nuxt/Vue, Strapi and whatever else 

via Apollo/GraphQL
Troubles with My 

Content Management System

Once upon a time...

a new CMS (ExpressionEngine) offered custom
fields and relationships.
...But then came performance issues

with nested relationships and embedded
templates.
Techniques for dealing with
monolithic CMS troubles

Minimize embeds
Query database directly
Add caching layer
Use PJAX / Barba.js
Meanwhile, this happened
Open Source JavaScript
explosion
NPM a huge repository; should leverage
Node enables same language all the way
down; hunch this is immensely powerful
My limited mental capacity; work not in a
product but in a standard
New ways tried

but not taken
Pylons
Meteor
CraftCMS
React
What I wanted
Reactivity
Live page updates for users without refreshing
No unnecessary reloading of same stuff when
user navigates internally
Instant page updates while developing so less
distraction, faster development, fewer errors
What I wanted
Componentization
A different cross-cut of separation of concerns
BEM not just for CSS
What I wanted
Focus not on a product 

but on a standard
More power by leveraging widest catalog of others’ open-
source projects
Wider community
More future-proofing as less product lock-in
Likely better performance as fewer layers
Increased modularity as various parts may be swapped
out over time given new developments
More marketable skills
Nuxt (Vue) for the presentation
Why Vue?

JavaScript framework with reactivity and componentization!
Unlike React, respects HTML, CSS & JS
Unlike React, felt relatively easy to learn

(incrementally adoptable, clear docs)
Intuitive and elegant (eg ":", "@" prefixes)
Burgeoning standard

(developers’ favourite, overtaken React in Github stars),

Editor tools
Great leadership & community
WhyVue?
Great leadership 

& community
Adept leadership by founder EvanYou (Vue CLI)
Sharp, organized, high-morale community leaders (DevTools)
Cottage industry of tutorial sites (Vue Mastery)
https://news.vuejs.org 

including podcast
Vue.js London Meetup
Nuxt (Vue) for the presentation
Why Nuxt?

Single-file components out the box!
Easy to install
Automatic code-splitting to optimize performance
Enables both SSR and static output (for full
JAMstack)
Embraced byVue community
Nuxt (Vue) for the presentation
Basic Vue usage
https://vuejs.org/v2/guide/
{{ }}
v-bind / :
v-if
v-for
v-on / @
v-model
Single-file Components
More efficient for the designer as more material is
reused
Easier and more pleasant for the user to understand
interface as it’s more consistent and chunky
Easier for the developer to locate JS and CSS code
and to conceptualize what it’s doing
Easier for teams to work simultaneously on various
parts
Vue docs on the topic:

https://vuejs.org/v2/guide/single-file-components.html
Nuxt (Vue) for the presentation
Basic Nuxt implementation
Recommended byVue:

https://vuejs.org/v2/guide/ssr.html#Nuxt-js
Pages
Components
nuxt.config.js
Strapi for the content
A Quick Look at Strapi
https://strapi.io/
Free, open source, self-hosted
https://strapi.io/marketplace/graphql 

based on Apollo
What is GraphQL?

Query language (created by Facebook for
internal use then open-sourced) to serve and
retrieve content
Supersedes API
https://graphql.org/ by Facebook

https://www.graphql.com/ by Apollo
Why use GraphQL?

Client-, not server-focused
Facilitates modularity / decoupled architecture,
especially with schema stitching

https://github.com/apollographql/graphql-tools
More on schema stitching:

https://blog.apollographql.com/graphql-schema-
stitching-8af23354ac37

https://blog.hasura.io/the-ultimate-guide-to-schema-
stitching-in-graphql-f30178ac0072
Why Apollo?
Current standard (and advanced) way to
handle GraphQL
SupportsVue, Nuxt
Caching out the box
https://www.apollographql.com/
why-graphql
Why not pure JAMstack
My focus is on web-based systems than web sites
Web-based systems have more bitty, frequently-
updated content and smaller audiences
Other types of site definitely better suited, eg,
publications
And Nuxt provides the option for serverless!

https://nuxtjs.org/guide#static-generated-pre-rendering-
Let’s Take a Look

at an

Existing Project
Dive In(stall)?
Gotta get comfortable with package management
Install Homebrew
Install Node (via Node web site or Homebrew)
Install Strapi

https://strapi.io/documentation/3.x.x/getting-started/
installation.html#requirements
Install Strapi GraphQL Server
Install Nuxt

https://nuxtjs.org/guide/installation/
Install Apollo Client 

https://github.com/nuxt-community/apollo-module
Create a little site, starting from the back?
Gotchas
Nuxt

Only HTML can be
output, not XML, so no
easy way to produce an
RSS feed
A lot ends up in
nuxt.config.js
Strapi

Software immature so some
surprising missing functionality (eg,
no spaces in field names)
Company immature and has made
some rash decisions (eg, premiere
tier came and went quickly)
Cpanel written in... React! (fine for
React people)
Deployment
Platform as a Service

Netlify, Heroku, Firebase

More expensive, ease of use
Shared hosting

Must allow Node, Mongodb

Cheaper, limited power, some help
Cloud Hosting

Linode, Digital Ocean

Cheaper, full power, you’re on your own
Some concluding reminders
of why we’re here
Componentatization
Reactivity
Using free and open source code
Using widely-used standards
Got vertical and horizontal superpowers thanks to
Node and NPM
About Me
adam@engaging.net
Happy to share my knowledge of this stack
and aim to learn it better
Thank you!

More Related Content

What's hot

Progressive web apps with QCObjects (AngularJS Chile Community Talk)
Progressive web apps with QCObjects (AngularJS Chile Community Talk)Progressive web apps with QCObjects (AngularJS Chile Community Talk)
Progressive web apps with QCObjects (AngularJS Chile Community Talk)Jean Machuca
 
Play Framework on Google App Engine - Productivity Stack
Play Framework on Google App Engine - Productivity StackPlay Framework on Google App Engine - Productivity Stack
Play Framework on Google App Engine - Productivity StackMarcin Stepien
 
Graph ql subscriptions through the looking glass
Graph ql subscriptions through the looking glassGraph ql subscriptions through the looking glass
Graph ql subscriptions through the looking glassGerard Klijs
 
Room with a Vue - Introduction to Vue.js
Room with a Vue - Introduction to Vue.jsRoom with a Vue - Introduction to Vue.js
Room with a Vue - Introduction to Vue.jsZachary Klein
 
WordPress London Developer Operations For Beginners
WordPress London Developer Operations For BeginnersWordPress London Developer Operations For Beginners
WordPress London Developer Operations For BeginnersStewart Ritchie
 
Custom Runtimes for the Cloud
Custom Runtimes for the CloudCustom Runtimes for the Cloud
Custom Runtimes for the CloudCloudBees
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkinsKrish
 
Simple Tips to Improve Site Performance (No Coding Required!)
Simple Tips to Improve Site Performance (No Coding Required!)Simple Tips to Improve Site Performance (No Coding Required!)
Simple Tips to Improve Site Performance (No Coding Required!)Acquia
 
Ordina SOFTC Presentation - TFS and JAVA, better together
Ordina SOFTC Presentation - TFS and JAVA, better togetherOrdina SOFTC Presentation - TFS and JAVA, better together
Ordina SOFTC Presentation - TFS and JAVA, better togetherOrdina Belgium
 
Spring boot 3g
Spring boot 3gSpring boot 3g
Spring boot 3gvasya10
 
41 best vue component libraries to archive for 2021
41 best vue component libraries to archive for 202141 best vue component libraries to archive for 2021
41 best vue component libraries to archive for 2021Katy Slemon
 
AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?
AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?
AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?Andrew Barickman
 
WP-CLI: WordCamp Nashville 2016
WP-CLI: WordCamp Nashville 2016WP-CLI: WordCamp Nashville 2016
WP-CLI: WordCamp Nashville 2016Terell Moore
 
Lean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushPantheon
 
HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19btopro
 

What's hot (19)

Progressive web apps with QCObjects (AngularJS Chile Community Talk)
Progressive web apps with QCObjects (AngularJS Chile Community Talk)Progressive web apps with QCObjects (AngularJS Chile Community Talk)
Progressive web apps with QCObjects (AngularJS Chile Community Talk)
 
Play Framework on Google App Engine - Productivity Stack
Play Framework on Google App Engine - Productivity StackPlay Framework on Google App Engine - Productivity Stack
Play Framework on Google App Engine - Productivity Stack
 
Graph ql subscriptions through the looking glass
Graph ql subscriptions through the looking glassGraph ql subscriptions through the looking glass
Graph ql subscriptions through the looking glass
 
Room with a Vue - Introduction to Vue.js
Room with a Vue - Introduction to Vue.jsRoom with a Vue - Introduction to Vue.js
Room with a Vue - Introduction to Vue.js
 
WordPress London Developer Operations For Beginners
WordPress London Developer Operations For BeginnersWordPress London Developer Operations For Beginners
WordPress London Developer Operations For Beginners
 
Custom Runtimes for the Cloud
Custom Runtimes for the CloudCustom Runtimes for the Cloud
Custom Runtimes for the Cloud
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Simple Tips to Improve Site Performance (No Coding Required!)
Simple Tips to Improve Site Performance (No Coding Required!)Simple Tips to Improve Site Performance (No Coding Required!)
Simple Tips to Improve Site Performance (No Coding Required!)
 
Ordina SOFTC Presentation - TFS and JAVA, better together
Ordina SOFTC Presentation - TFS and JAVA, better togetherOrdina SOFTC Presentation - TFS and JAVA, better together
Ordina SOFTC Presentation - TFS and JAVA, better together
 
Spring boot 3g
Spring boot 3gSpring boot 3g
Spring boot 3g
 
Working in harmony
Working in harmonyWorking in harmony
Working in harmony
 
41 best vue component libraries to archive for 2021
41 best vue component libraries to archive for 202141 best vue component libraries to archive for 2021
41 best vue component libraries to archive for 2021
 
Speed = $$$
Speed = $$$Speed = $$$
Speed = $$$
 
ICONUK 2015 - Gradle Up!
ICONUK 2015 - Gradle Up!ICONUK 2015 - Gradle Up!
ICONUK 2015 - Gradle Up!
 
The MEAN Stack
The MEAN StackThe MEAN Stack
The MEAN Stack
 
AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?
AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?
AD105 - OneUI.. really? Is that because you don't know about Twitter Bootstrap?
 
WP-CLI: WordCamp Nashville 2016
WP-CLI: WordCamp Nashville 2016WP-CLI: WordCamp Nashville 2016
WP-CLI: WordCamp Nashville 2016
 
Lean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and Drush
 
HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19
 

Similar to Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and whatever else via Apollo/GraphQL

Technology Stack Discussion
Technology Stack DiscussionTechnology Stack Discussion
Technology Stack DiscussionZaiyang Li
 
Vue js and Vue Material
Vue js and Vue MaterialVue js and Vue Material
Vue js and Vue MaterialEueung Mulyana
 
Technical roadmap 2015 - Nuxeo Tour 2014
Technical roadmap 2015 - Nuxeo Tour 2014Technical roadmap 2015 - Nuxeo Tour 2014
Technical roadmap 2015 - Nuxeo Tour 2014Nuxeo
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applicationshchen1
 
JavaScript Presentation Frameworks and Libraries
JavaScript Presentation Frameworks and LibrariesJavaScript Presentation Frameworks and Libraries
JavaScript Presentation Frameworks and LibrariesOleksii Prohonnyi
 
Slide deck roadmap webinar 2013
Slide deck   roadmap webinar 2013Slide deck   roadmap webinar 2013
Slide deck roadmap webinar 2013Nuxeo
 
Why scala - executive overview
Why scala - executive overviewWhy scala - executive overview
Why scala - executive overviewRazvan Cojocaru
 
Challenges of angular in production (Tasos Bekos) - GreeceJS #17
Challenges of angular in production (Tasos Bekos) - GreeceJS #17Challenges of angular in production (Tasos Bekos) - GreeceJS #17
Challenges of angular in production (Tasos Bekos) - GreeceJS #17GreeceJS
 
Open stack dashboard diablo
Open stack dashboard   diabloOpen stack dashboard   diablo
Open stack dashboard diabloOpen Stack
 
OpenStack Dashboard - Diablo
OpenStack Dashboard - DiabloOpenStack Dashboard - Diablo
OpenStack Dashboard - Diablodevcamcar
 
LvivCSS: Web Components as a foundation for Design System
LvivCSS: Web Components as a foundation for Design SystemLvivCSS: Web Components as a foundation for Design System
LvivCSS: Web Components as a foundation for Design SystemVlad Fedosov
 
Passionate People Meetup - React vs Vue with a deepdive into Proxies
Passionate People Meetup - React vs Vue with a deepdive into ProxiesPassionate People Meetup - React vs Vue with a deepdive into Proxies
Passionate People Meetup - React vs Vue with a deepdive into ProxiesHarijs Deksnis
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersSarah Dutkiewicz
 
Get Started with JavaScript Frameworks
Get Started with JavaScript FrameworksGet Started with JavaScript Frameworks
Get Started with JavaScript FrameworksChristian Gaetano
 
Azure Web SItes - Things they don't teach kids in school - Multi-Mania
Azure Web SItes - Things they don't teach kids in school - Multi-ManiaAzure Web SItes - Things they don't teach kids in school - Multi-Mania
Azure Web SItes - Things they don't teach kids in school - Multi-ManiaMaarten Balliauw
 
Exploring pwa for shopware
Exploring pwa for shopwareExploring pwa for shopware
Exploring pwa for shopwareSander Mangel
 
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia
 
The Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platformThe Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platformNuxeo
 

Similar to Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and whatever else via Apollo/GraphQL (20)

Technology Stack Discussion
Technology Stack DiscussionTechnology Stack Discussion
Technology Stack Discussion
 
Vue js and Vue Material
Vue js and Vue MaterialVue js and Vue Material
Vue js and Vue Material
 
Technical roadmap 2015 - Nuxeo Tour 2014
Technical roadmap 2015 - Nuxeo Tour 2014Technical roadmap 2015 - Nuxeo Tour 2014
Technical roadmap 2015 - Nuxeo Tour 2014
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
JavaScript Presentation Frameworks and Libraries
JavaScript Presentation Frameworks and LibrariesJavaScript Presentation Frameworks and Libraries
JavaScript Presentation Frameworks and Libraries
 
Slide deck roadmap webinar 2013
Slide deck   roadmap webinar 2013Slide deck   roadmap webinar 2013
Slide deck roadmap webinar 2013
 
Why scala - executive overview
Why scala - executive overviewWhy scala - executive overview
Why scala - executive overview
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
Challenges of angular in production (Tasos Bekos) - GreeceJS #17
Challenges of angular in production (Tasos Bekos) - GreeceJS #17Challenges of angular in production (Tasos Bekos) - GreeceJS #17
Challenges of angular in production (Tasos Bekos) - GreeceJS #17
 
Open stack dashboard diablo
Open stack dashboard   diabloOpen stack dashboard   diablo
Open stack dashboard diablo
 
OpenStack Dashboard - Diablo
OpenStack Dashboard - DiabloOpenStack Dashboard - Diablo
OpenStack Dashboard - Diablo
 
LvivCSS: Web Components as a foundation for Design System
LvivCSS: Web Components as a foundation for Design SystemLvivCSS: Web Components as a foundation for Design System
LvivCSS: Web Components as a foundation for Design System
 
Passionate People Meetup - React vs Vue with a deepdive into Proxies
Passionate People Meetup - React vs Vue with a deepdive into ProxiesPassionate People Meetup - React vs Vue with a deepdive into Proxies
Passionate People Meetup - React vs Vue with a deepdive into Proxies
 
Function as a Service
Function as a ServiceFunction as a Service
Function as a Service
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
 
Get Started with JavaScript Frameworks
Get Started with JavaScript FrameworksGet Started with JavaScript Frameworks
Get Started with JavaScript Frameworks
 
Azure Web SItes - Things they don't teach kids in school - Multi-Mania
Azure Web SItes - Things they don't teach kids in school - Multi-ManiaAzure Web SItes - Things they don't teach kids in school - Multi-Mania
Azure Web SItes - Things they don't teach kids in school - Multi-Mania
 
Exploring pwa for shopware
Exploring pwa for shopwareExploring pwa for shopware
Exploring pwa for shopware
 
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
 
The Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platformThe Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platform
 

Recently uploaded

APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC
 
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiMonica Sydney
 
💚 Call Girls Bahraich 9332606886 High Profile Call Girls You Can Get The S...
💚 Call Girls Bahraich   9332606886  High Profile Call Girls You Can Get The S...💚 Call Girls Bahraich   9332606886  High Profile Call Girls You Can Get The S...
💚 Call Girls Bahraich 9332606886 High Profile Call Girls You Can Get The S...Sareena Khatun
 
Mira Road Housewife Call Girls 07506202331, Nalasopara Call Girls
Mira Road Housewife Call Girls 07506202331, Nalasopara Call GirlsMira Road Housewife Call Girls 07506202331, Nalasopara Call Girls
Mira Road Housewife Call Girls 07506202331, Nalasopara Call GirlsPriya Reddy
 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdfMatthew Sinclair
 
South Bopal [ (Call Girls) in Ahmedabad ₹7.5k Pick Up & Drop With Cash Paymen...
South Bopal [ (Call Girls) in Ahmedabad ₹7.5k Pick Up & Drop With Cash Paymen...South Bopal [ (Call Girls) in Ahmedabad ₹7.5k Pick Up & Drop With Cash Paymen...
South Bopal [ (Call Girls) in Ahmedabad ₹7.5k Pick Up & Drop With Cash Paymen...gragchanchal546
 
Local Call Girls in Gomati 9332606886 HOT & SEXY Models beautiful and charmi...
Local Call Girls in Gomati  9332606886 HOT & SEXY Models beautiful and charmi...Local Call Girls in Gomati  9332606886 HOT & SEXY Models beautiful and charmi...
Local Call Girls in Gomati 9332606886 HOT & SEXY Models beautiful and charmi...Sareena Khatun
 
Leading-edge AI Image Generators of 2024
Leading-edge AI Image Generators of 2024Leading-edge AI Image Generators of 2024
Leading-edge AI Image Generators of 2024SOFTTECHHUB
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样ayvbos
 
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirtrahman018755
 
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime NagercoilNagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoilmeghakumariji156
 
PIC Microcontroller Structure & Assembly Language.ppsx
PIC Microcontroller Structure & Assembly Language.ppsxPIC Microcontroller Structure & Assembly Language.ppsx
PIC Microcontroller Structure & Assembly Language.ppsxjeykeydeveloper
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdfMatthew Sinclair
 
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...meghakumariji156
 
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasBest SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasDigicorns Technologies
 
Local Call Girls in Seoni 9332606886 HOT & SEXY Models beautiful and charmin...
Local Call Girls in Seoni  9332606886 HOT & SEXY Models beautiful and charmin...Local Call Girls in Seoni  9332606886 HOT & SEXY Models beautiful and charmin...
Local Call Girls in Seoni 9332606886 HOT & SEXY Models beautiful and charmin...kumargunjan9515
 
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查ydyuyu
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdfMatthew Sinclair
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsMonica Sydney
 

Recently uploaded (20)

APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53APNIC Updates presented by Paul Wilson at ARIN 53
APNIC Updates presented by Paul Wilson at ARIN 53
 
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu DhabiAbu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
Abu Dhabi Escorts Service 0508644382 Escorts in Abu Dhabi
 
💚 Call Girls Bahraich 9332606886 High Profile Call Girls You Can Get The S...
💚 Call Girls Bahraich   9332606886  High Profile Call Girls You Can Get The S...💚 Call Girls Bahraich   9332606886  High Profile Call Girls You Can Get The S...
💚 Call Girls Bahraich 9332606886 High Profile Call Girls You Can Get The S...
 
Mira Road Housewife Call Girls 07506202331, Nalasopara Call Girls
Mira Road Housewife Call Girls 07506202331, Nalasopara Call GirlsMira Road Housewife Call Girls 07506202331, Nalasopara Call Girls
Mira Road Housewife Call Girls 07506202331, Nalasopara Call Girls
 
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
20240510 QFM016 Irresponsible AI Reading List April 2024.pdf
 
South Bopal [ (Call Girls) in Ahmedabad ₹7.5k Pick Up & Drop With Cash Paymen...
South Bopal [ (Call Girls) in Ahmedabad ₹7.5k Pick Up & Drop With Cash Paymen...South Bopal [ (Call Girls) in Ahmedabad ₹7.5k Pick Up & Drop With Cash Paymen...
South Bopal [ (Call Girls) in Ahmedabad ₹7.5k Pick Up & Drop With Cash Paymen...
 
Local Call Girls in Gomati 9332606886 HOT & SEXY Models beautiful and charmi...
Local Call Girls in Gomati  9332606886 HOT & SEXY Models beautiful and charmi...Local Call Girls in Gomati  9332606886 HOT & SEXY Models beautiful and charmi...
Local Call Girls in Gomati 9332606886 HOT & SEXY Models beautiful and charmi...
 
Leading-edge AI Image Generators of 2024
Leading-edge AI Image Generators of 2024Leading-edge AI Image Generators of 2024
Leading-edge AI Image Generators of 2024
 
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
一比一原版(Curtin毕业证书)科廷大学毕业证原件一模一样
 
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
APNIC Policy Roundup, presented by Sunny Chendi at the 5th ICANN APAC-TWNIC E...
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime NagercoilNagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
Nagercoil Escorts Service Girl ^ 9332606886, WhatsApp Anytime Nagercoil
 
PIC Microcontroller Structure & Assembly Language.ppsx
PIC Microcontroller Structure & Assembly Language.ppsxPIC Microcontroller Structure & Assembly Language.ppsx
PIC Microcontroller Structure & Assembly Language.ppsx
 
20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf20240508 QFM014 Elixir Reading List April 2024.pdf
20240508 QFM014 Elixir Reading List April 2024.pdf
 
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
Tadepalligudem Escorts Service Girl ^ 9332606886, WhatsApp Anytime Tadepallig...
 
Best SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency DallasBest SEO Services Company in Dallas | Best SEO Agency Dallas
Best SEO Services Company in Dallas | Best SEO Agency Dallas
 
Local Call Girls in Seoni 9332606886 HOT & SEXY Models beautiful and charmin...
Local Call Girls in Seoni  9332606886 HOT & SEXY Models beautiful and charmin...Local Call Girls in Seoni  9332606886 HOT & SEXY Models beautiful and charmin...
Local Call Girls in Seoni 9332606886 HOT & SEXY Models beautiful and charmin...
 
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
原版制作美国爱荷华大学毕业证(iowa毕业证书)学位证网上存档可查
 
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
20240507 QFM013 Machine Intelligence Reading List April 2024.pdf
 
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girlsRussian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
Russian Call girls in Abu Dhabi 0508644382 Abu Dhabi Call girls
 

Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and whatever else via Apollo/GraphQL

  • 1. Between a SPA 
 & a JAMstack Building web sites with 
 Nuxt/Vue, Strapi and whatever else 
 via Apollo/GraphQL
  • 2. Troubles with My 
 Content Management System Once upon a time...
 a new CMS (ExpressionEngine) offered custom fields and relationships. ...But then came performance issues
 with nested relationships and embedded templates.
  • 3. Techniques for dealing with monolithic CMS troubles Minimize embeds Query database directly Add caching layer Use PJAX / Barba.js
  • 4. Meanwhile, this happened Open Source JavaScript explosion NPM a huge repository; should leverage Node enables same language all the way down; hunch this is immensely powerful My limited mental capacity; work not in a product but in a standard
  • 5. New ways tried
 but not taken Pylons Meteor CraftCMS React
  • 6. What I wanted Reactivity Live page updates for users without refreshing No unnecessary reloading of same stuff when user navigates internally Instant page updates while developing so less distraction, faster development, fewer errors
  • 7. What I wanted Componentization A different cross-cut of separation of concerns BEM not just for CSS
  • 8. What I wanted Focus not on a product 
 but on a standard More power by leveraging widest catalog of others’ open- source projects Wider community More future-proofing as less product lock-in Likely better performance as fewer layers Increased modularity as various parts may be swapped out over time given new developments More marketable skills
  • 9. Nuxt (Vue) for the presentation Why Vue? JavaScript framework with reactivity and componentization! Unlike React, respects HTML, CSS & JS Unlike React, felt relatively easy to learn
 (incrementally adoptable, clear docs) Intuitive and elegant (eg ":", "@" prefixes) Burgeoning standard
 (developers’ favourite, overtaken React in Github stars),
 Editor tools Great leadership & community
  • 10. WhyVue? Great leadership 
 & community Adept leadership by founder EvanYou (Vue CLI) Sharp, organized, high-morale community leaders (DevTools) Cottage industry of tutorial sites (Vue Mastery) https://news.vuejs.org 
 including podcast Vue.js London Meetup
  • 11. Nuxt (Vue) for the presentation Why Nuxt? Single-file components out the box! Easy to install Automatic code-splitting to optimize performance Enables both SSR and static output (for full JAMstack) Embraced byVue community
  • 12. Nuxt (Vue) for the presentation Basic Vue usage https://vuejs.org/v2/guide/ {{ }} v-bind / : v-if v-for v-on / @ v-model
  • 13. Single-file Components More efficient for the designer as more material is reused Easier and more pleasant for the user to understand interface as it’s more consistent and chunky Easier for the developer to locate JS and CSS code and to conceptualize what it’s doing Easier for teams to work simultaneously on various parts Vue docs on the topic:
 https://vuejs.org/v2/guide/single-file-components.html
  • 14. Nuxt (Vue) for the presentation Basic Nuxt implementation Recommended byVue:
 https://vuejs.org/v2/guide/ssr.html#Nuxt-js Pages Components nuxt.config.js
  • 15. Strapi for the content A Quick Look at Strapi https://strapi.io/ Free, open source, self-hosted https://strapi.io/marketplace/graphql 
 based on Apollo
  • 16. What is GraphQL? Query language (created by Facebook for internal use then open-sourced) to serve and retrieve content Supersedes API https://graphql.org/ by Facebook
 https://www.graphql.com/ by Apollo
  • 17. Why use GraphQL? Client-, not server-focused Facilitates modularity / decoupled architecture, especially with schema stitching
 https://github.com/apollographql/graphql-tools More on schema stitching:
 https://blog.apollographql.com/graphql-schema- stitching-8af23354ac37
 https://blog.hasura.io/the-ultimate-guide-to-schema- stitching-in-graphql-f30178ac0072
  • 18. Why Apollo? Current standard (and advanced) way to handle GraphQL SupportsVue, Nuxt Caching out the box https://www.apollographql.com/ why-graphql
  • 19. Why not pure JAMstack My focus is on web-based systems than web sites Web-based systems have more bitty, frequently- updated content and smaller audiences Other types of site definitely better suited, eg, publications And Nuxt provides the option for serverless!
 https://nuxtjs.org/guide#static-generated-pre-rendering-
  • 20. Let’s Take a Look
 at an
 Existing Project
  • 21. Dive In(stall)? Gotta get comfortable with package management Install Homebrew Install Node (via Node web site or Homebrew) Install Strapi
 https://strapi.io/documentation/3.x.x/getting-started/ installation.html#requirements Install Strapi GraphQL Server Install Nuxt
 https://nuxtjs.org/guide/installation/ Install Apollo Client 
 https://github.com/nuxt-community/apollo-module Create a little site, starting from the back?
  • 22. Gotchas Nuxt Only HTML can be output, not XML, so no easy way to produce an RSS feed A lot ends up in nuxt.config.js Strapi Software immature so some surprising missing functionality (eg, no spaces in field names) Company immature and has made some rash decisions (eg, premiere tier came and went quickly) Cpanel written in... React! (fine for React people)
  • 23. Deployment Platform as a Service
 Netlify, Heroku, Firebase
 More expensive, ease of use Shared hosting
 Must allow Node, Mongodb
 Cheaper, limited power, some help Cloud Hosting
 Linode, Digital Ocean
 Cheaper, full power, you’re on your own
  • 24. Some concluding reminders of why we’re here Componentatization Reactivity Using free and open source code Using widely-used standards Got vertical and horizontal superpowers thanks to Node and NPM
  • 25. About Me adam@engaging.net Happy to share my knowledge of this stack and aim to learn it better Thank you!