Comment construire une application angulaire sans serveur et CMS –
Angulaire a décollé en popularité et est largement utilisé. Développé et maintenu par les ingénieurs de Google, Angular a trouvé sa place dans toutes les applications Web dynamiques et constitue une plate-forme de plus en plus demandée.
Angular offre les avantages d'une grande communauté enthousiaste et d'un MVC exceptionnel. temps précieux à écrire du code pour remettre plusieurs composants MVC de nouveau ensemble. En bref, Angular est un framework d'application Web robuste et complet pour le développement frontal qui est prêt pour les tests unitaires, ce qui en fait l'outil de prédilection de nombreux développeurs.
Si vous utilisez Angular, vous pourriez avoir besoin de capacités de gestion de contenu – un blog en est un exemple. Ajouter un CMS à une application Angular peut sembler intimidant, surtout si vous essayez de l'intégrer dans un CMS traditionnel comme WordPress, mais il y a une nouvelle génération de CMS basé sur API qui simplifie grandement les choses. ButterCMS est un exemple de CMS sans-tête basé sur SaaS qui fournit un tableau de bord CMS et une API de contenu que vous interrogez à partir de votre application Angular. Cela signifie que vous n'avez pas besoin de créer une nouvelle infrastructure pour ajouter un CMS à votre application Angular.
Ce tutoriel va vous montrer comment construire une application angulaire CMS avec des pages marketing (études de cas client), un blog et FAQ, tous alimentés via une API.
Installation
Pour commencer, installez l'interface CLI angulaire.
npm install -g @ angular / cli
Configurez un nouveau projet Angular en utilisant l'interface CLI angulaire. Par défaut, Angular CLI utilise le style CSS, donc l'ajout de l'indicateur -style = scss
indique à Angular CLI d'utiliser SCSS à la place:
ng new hello-buttercms-project --style = scss
cd bonjour-buttercms-projet
Installer le package relatif aux matériaux angulaires et aux matériaux angulaires:
npm install --save @ angular / material @ angular / cdk
npm installer --save @ angular / animations
Installez ButterCMS. Exécutez ceci dans votre ligne de commande:
npm install buttercms --save
Le beurre peut aussi être chargé en utilisant un CDN:
Commencer rapidement
Ouvrez le projet dans votre éditeur de code de votre choix. Sous src / app
créez un répertoire appelé _services
.
Nous créons un fichier appelé butterCMS.service.js
. Cela nous permet d'avoir votre API Token à un endroit et de ne pas le modifier accidentellement.
import * en tant que Butter from 'buttercms';
export const butterService = Beurre ('b60a008584313ed21803780bc9208557b3b49fbb');
Vous allez importer ce fichier dans n'importe quel composant que nous voulons utiliser ButterCMS.
Pour un démarrage rapide, allez dans src / app / hello-you / hello-you.component.ts
et importez butterService
:
import {butterService} à partir de '../_services';
Dans le HelloYouComponent
créez des méthodes:
fetchPosts () {
butter.post.list ({
Page 1,
page_size: 10
})
.then ((res) => {
console.log ('Contenu de ButterCMS')
console.log (res)
})
}
Appelez maintenant cette méthode lorsque le composant est chargé en l'ajoutant au hook de cycle de vie OnInit
:
ngOnInit () {
this.fetchPosts ();
}
Cette requête API récupère les posts de votre blog. Votre compte est livré avec un exemple de message, que vous verrez dans la réponse.
Ensuite, créez une autre méthode pour récupérer le champ de contenu de la page d'accueil:
fetchHeadline () {
butter.content.retrieve (['homepage_headline'])
.then ((res) => {
console.log ('Titre de ButterCMS')
console.log (res)
})
}
Ajoutez cette méthode au hook de cycle de vie OnInit
.
ngOnInit () {
this.fetchPosts ();
this.fetchHeadline ();
}
Cette requête d'API récupère le contenu du titre de la page d'accueil. Vous pouvez configurer vos propres champs de contenu personnalisés pour gérer tout type de contenu dont vous avez besoin.
Ajouter des pages marketing
La configuration de pages CMS est un processus simple en trois étapes:
- Définir le type de page [19659035] Créer une page
- Intégrer dans votre application
Définir une page
Commencez par créer un type de page pour représenter vos pages d'étude de cas client. Ensuite, définissez les champs que vous souhaitez pour vos études de cas client. Avec votre type de page défini, vous pouvez maintenant créer la première page d'étude de cas. Spécifiez le nom et l'URL de la page, puis remplissez le contenu de la page.
Une fois votre page définie, l'API ButterCMS la renvoie au format JSON comme ceci:
{
"Les données": {
"limace": "acme-co",
"des champs": {
"facebook_open_graph_title": "Acme Co aime ButterCMS",
"seo_title": "Étude de cas client Acme Co",
"headline": "Acme Co a économisé 200% sur les coûts d'Anvil avec ButterCMS",
"testimonial": " Nous avons été capables de faire des enclumes plus rapides que jamais! - Chef Anvil Maker
![](http://blog.arcoptimizer.com/wp-content/uploads/2018/04/comment-construire-une-application-angulaire-sans-serveur-et-cms)
",
"customer_logo": "https://cdn.buttercms.com/c8oSTGcwQDC5I58km5WV",
}
}
}
Ce guide utilise le framework Angular et l'interface CLI angulaire pour générer tous nos composants et empaqueter notre application
Passons au code
Créer un nouveau projet
ng new buttercms-project --style = scss
cd buttercms-projet
Installation de npm --save @ angular / material @ angular / cdk
npm installer --save @ angular / animations
npm installer -S buttercms
ng servir
Votre localhost: 4200 devrait être prêt à servir votre page Angular.
Créer TypeScript pour exporter le service ButterCMS
Sous src / app
créer un répertoire appelé _services
. Créez un fichier appelé butterCMS.service.js
.
import * en tant que beurre à partir de 'buttercms';
export const butterService = Beurre ('your_api_token');
Mise à jour des routes de composant
Ces composants sont générés par l'interface de ligne de commande angulaire en utilisant:
ng g component
Sous src / app
créez un fichier appelé app-routing.module.ts
:
import {NgModule} à partir de '@ angular / core';
importer {RouterModule, Routes} à partir de '@ angular / router';
importer {CustomerComponent} à partir de './customer/listing/customer.listing.component';
importer {FaqComponent} à partir de './faq/faq.component';
importer {BlogPostComponent} à partir de './blog-post/listing/blog-post.component';
importer {HomeComponent} à partir de './home/home.component';
importer {CustomerDetailsComponent} à partir de './customer/details/customer.details.component';
importer {BlogPostDetailsComponent} à partir de './blog-post/details/blog-post.details.component';
importer {FeedComponent} à partir de './feed/feed.component';
importer {HelloYouComponent} à partir de './hello-you/hello-you.component';
const appRoutes: Routes = [
{path: 'customer', component: CustomerComponent},
{path: 'customer/:slug', component: CustomerDetailsComponent},
{path: 'faq', component: FaqComponent},
{path: 'blog', component: BlogPostComponent},
{path: 'blog/:slug', component: BlogPostDetailsComponent},
{path: 'rss', component: FeedComponent},
{path: 'hello-you', component: HelloYouComponent},
{path: 'home', component: HomeComponent},
{path: '**', redirectTo: 'home'}
];
@NgModule ({
importations: [RouterModule.forRoot(appRoutes)],
exportations: [RouterModule]
})
classe d'exportation AppRoutingModule {
}
Configurer la liste des clients
Sous apps / customer
tapez:
ng g Liste des composants
Dans le fichier apps / customer / listing / customer.listing.component.ts
:
- Importation
butterService
- Dans le crochet
OnInit
, utilisezbutterService
pour obtenir la liste des clients - Stockez les résultats dans les pages variables et le balisage (HTML) sera mis à jour avec les données.
import {Component, OnInit} from '@angular /coeur';
importer {butterService} à partir de '../../services';
@Composant({
sélecteur: 'app-customer',
templateUrl: './customer.listing.component.html',
styleUrls: ['./customer.listing.component.scss']
})
la classe d'exportation CustomerComponent implémente OnInit {
pages publiques: any [];
constructeur () {}
ngOnInit () {
butterService.page.list ('customer_case_study')
.then ((res) => {
this.pages = res.data.data;
});
}
}
Afficher les résultats en customer.listing.component.html
:
Clients
Configurer la page de détails du client
Sous apps / customer
tapez ng g détails du composant
.
apps / customer / details / customer. details.component.ts
Créer la page client
- Import
butterService
- Dans le hook
OnInit
utilisezbutterService
pour obtenir la page du client étant donné le slug dans le URL path - Stocker les résultats dans une variable de page et le marquage (HTML) sera mis à jour avec les données du client.
import {Component, OnInit} à partir de '@ angular / core';
import {Observable} à partir de 'rxjs / Observable';
importer {ActivatedRoute} à partir de '@ angular / router';
importer {butterService} à partir de '../../services';
importer {map, take} à partir de 'rxjs / operators';
@Composant({
selector: 'app-customer-details',
templateUrl: './customer.details.component.html',
styleUrls: ['./customer.details.component.scss']
})
la classe d'exportation CustomerDetailsComponent implémente OnInit {
constructeur (route protégée: ActivatedRoute) {}
limace protégée $: Observable ;
page publique: any;
ngOnInit () {
this.slug $ = this.route.paramMap
.tuyau(
map (params => (params.get ('slug')))
)
this.slug $ .pipe (
prendre (1))
.subscribe (slug => {
butterService.page.retrieve ('customer_case_study', slug)
.then ((res) => {
this.page = res.data.data;
}). catch ((res) => {
console.log (res);
});
});
}
}
Afficher les résultats en customer.details.component.html
.
{{page.fields.headline}}
Témoignages
Vous pouvez maintenant naviguer vers la page client via la liste de toutes les pages client ou directement via l'URL
Ajouter une base de connaissances
Configurer des champs de contenu
Supposons que vous vouliez ajouter un CMS à une page FAQ statique avec un titre et une liste de questions avec des réponses
Rendre votre contenu dynamique avec Butter est un processus en deux étapes:
- Configurer des champs de contenu personnalisés dans Butter
- Intégrer les champs dans votre application .
Pour configurer des champs de contenu personnalisés, connectez-vous d'abord au tableau de bord Beurre.
Créez un nouvel espace de travail ou cliquez sur un espace de travail existant. Les espaces de travail vous permettent d'organiser les champs de contenu de façon conviviale pour les éditeurs de contenu et n'ont aucun effet sur le développement ou l'API. Par exemple, un site Web immobilier peut avoir un espace de travail appelé Propriétés et un autre appelé À propos de la page .
Une fois dans un espace de travail, cliquez sur le bouton pour créer un nouveau contenu. champ. Choisissez le type Objet et nommez le champ FAQ Titre
Après avoir enregistré, ajoutez un autre champ, mais cette fois choisissez le type Collection et nommez le champ FAQ Items .
Dans l'écran suivant, définissez deux propriétés pour les éléments de la collection.
Revenez maintenant à votre espace de travail et mettez à jour vos rubriques et vos éléments de FAQ.
Créer un composant FAQ
Sous apps
tapez ng g component faq
.
apps / faq / faq.component.ts
Configurer le hook onInit pour charger la FAQ
import {Component, OnInit} depuis '@ angular / core';
importer {butterService} à partir de '../_services';
@Composant({
sélecteur: 'app-faq',
templateUrl: './faq.component.html',
styleUrls: ['./faq.component.scss']
})
classe d'exportation FaqComponent implémente OnInit {
constructeur () {}
faq publique: any = {
articles: [],
titre: 'FAQ'
}
ngOnInit () {
butterService.content.retrieve (['faq_headline', 'faq_items'])
.then ((res) => {
console.log (res.data.data);
this.faq.title = res.data.data.faq_headline;
this.faq.items = res.data.data.faq_items;
});
}
}
Afficher le résultat
{{item.question}}
{{item.answer}}
Les valeurs entrées dans le tableau de bord Beurre mettront immédiatement à jour le contenu de notre application
Blogging
Pour afficher les messages, nous créons un simple / blog
itinéraire dans votre application et récupérons les articles à partir de l'API Butter, ainsi qu'une route / blog /: slug
pour gérer des messages individuels
Consultez notre référence API pour des options supplémentaires, telles que le filtrage par catégorie ou par auteur. La réponse inclut également certaines métadonnées que nous utiliserons pour la pagination.
Configurer la page d'accueil du blog
Sous apps / blog-post
tapez pour la liste des composants
.
apps / blog-post / liste / blog-post.listing.component.ts
Mettre à jour le composant pour obtenir tous les messages:
- importer
butterService
- obtenir tous les posts onInit
importer {Component, OnInit} depuis '@ angular / core';
importer {butterService} à partir de '../../services';
@Composant({
sélecteur: 'app-blog-post',
templateUrl: './blog-post.component.html',
styleUrls: ['./blog-post.component.scss']
})
classe d'exportation BlogPostComponent implémente OnInit {
postes publics: any [];
constructeur () {}
ngOnInit () {
butterService.post.list ({
Page 1,
page_size: 10
}). then ((res) => {
console.log (res.data)
this.posts = res.data.data;
});
}
}
Afficher le résultat:
Articles du blog
{{post.title}}
Créer un blog Page de publication
Sous apps / blog-post
tapez ng g détails du composant
.
apps / blog-post / détails /blog-post.details.component.ts
Pour afficher le post unique:
- Import
butterService
- Dans le hook
OnInit
utilisezbutterService
pour obtenir le post du blog donné le slug dans le chemin de l'URL - Stocker les résultats dans la variable post et le marquage (HTML) sera mis à jour avec les données du client.
import {Component, OnInit, ViewEncapsulation} de '@ angular / core';
import {Observable} à partir de 'rxjs / Observable';
importer {ActivatedRoute} à partir de '@ angular / router';
importer {butterService} à partir de '../../services';
importer {map, take} à partir de 'rxjs / operators';
@Composant({
sélecteur: 'app-blog-post-details',
templateUrl: './blog-post.details.component.html',
styleUrls: ['./blog-post.details.component.scss'],
encapsulation: ViewEncapsulation.None
})
classe d'exportation BlogPostDetailsComponent implémente OnInit {
constructeur (route protégée: ActivatedRoute) {
}
limace protégée $: Observable ;
poste publique = {
meta: null,
données: null
}
ngOnInit () {
this.slug $ = this.route.paramMap
.tuyau(
map (params => (params.get ('slug')))
)
this.slug $ .pipe (
prendre (1))
.subscribe (slug => {
butterService.post.retrieve (limace)
.then ((res) => {
this.post = res.data;
}). catch ((res) => {
console.log (res);
});
});
}
}
Afficher le résultat:
Votre application dispose désormais d'un blog qui peut être facilement mis à jour dans le tableau de bord ButterCMS
Utilisez les API Butter pour les catégories, tags et auteurs afin de filtrer et de filtrer le contenu de votre blog
. posts par catégorie
Appelez ces méthodes sur les méthodes [: onInit ()
lifecycle hook:
: {
...
getCategories () {
butter.category.list ()
.then ((res) => {
console.log ('Liste des catégories:')
console.log (res.data.data)
})
},
getPostsByCategory () {
butter.category.retrieve ('example-category', {
inclure: 'recent_posts'
})
.then ((res) => {
console.log ('Messages avec une catégorie spécifique:')
console.log (res)
})
}
},
créé() {
...
this.getCategories ()
this.getPostsByCategory ()
}
L'emballant
Félicitations! Vous avez réussi à transformer votre application Angular statique en une application basée sur CMS à l'aide d'API de contenu, conservant ainsi une architecture sans serveur. Votre équipe de développement peut tirer parti des aspects d'Angular qui vous font gagner du temps et vous avez gagné encore plus de temps en utilisant un CMS sans serveur.
Source link