Avez-vous déjà été enthousiasmé par votre idée de site Web, mais vous vous êtes retrouvé en train de devenir misérable en essayant de le rendre dynamique et de le faire tourner sur un serveur?
Avec Parse.js, tous ceux qui comprennent les bases du HTML, du CSS et de JavaScript peuvent créer des sites Web dynamiques et des applications Web fonctionnelles. Ce tutoriel va vous guider étape par étape dans la création d’un système de blog avec Parse.js. Et à la fin de cette série, vous devriez pouvoir créer facilement votre propre site CMS..
Au cours des trois dernières sessions, vous avez jeté les bases du système de blogs. Vous avez créé une classe Blog et une classe User sur Parse.com, vous rendez des blogs en mode frontal et vous avez activé la connexion de l'utilisateur. À partir de cette session, nous allons créer différentes fonctions de ce panneau d'administration, en commençant par "Ajouter un nouveau blog".
Commençons par préparer un modèle HTML pour cette page afin de pouvoir jouer. Encore une fois, vous pouvez utiliser des éléments existants de Bootstrap pour accélérer le processus:
Ajouter cela à admin.html
.
Notez que nous en faisons un modèle, bien qu’il n’y ait pas de valeur dynamique à ce stade. Je le fais parce que:
EditBlogView
.Aller de l'avant, aller à admin.js
et créez une nouvelle vue: AddBlogView
. Nous pouvons le garder très minime pour l'instant, car nous ne faisons que rendre le modèle:
var AddBlogView = Parse.View.extend (template: Handlebars.compile ($ ('# add-tpl'). html ()), render: function () this. $ el.html (this.template ()) ;);
Maintenant que nous avons AddBlogView
, nous voulons y accéder depuis le panneau d'administration. Allez-y et ajoutez un bouton à la BienvenueVoir
:
Et puis, vous devez lier un événement à ce clic. Habituellement, vous pouvez faire quelque chose comme ça dans votre admin.js
:
$ ('. add-blog'). on ('cliquez', fonction () // fonction);
Cependant, ce n'est pas nécessaire lorsque vous utilisez Parse.js. Vous pouvez simplement ajouter un événement à un objet View et lier une fonction comme celle-ci:
WelcomeView = Parse.View.extend (template: Handlebars.compile ($ ('# welcome-tpl'). Html ()), événements: 'cliquez sur add-blog': 'ajoutez', ajoutez: fonction ( ) alert ('Cliqué!');,…),
Vous pouvez l'essayer avant de passer à autre chose:
Et maintenant, nous pouvons changer la fonction pour rendre une nouvelle instance de AddBlogView
.
add: function () var addBlogView = new AddBlogView (); addBlogView.render (); $ ('. main-container'). html (addBlogView.el);
Se sent génial.
Maintenant, tout ce dont vous avez besoin est de lier une fonction au bouton d'envoi de cette page et d'écrire le blog dans votre base de données sur Parse.com..
Ajouter un événement de soumission à votre AddBlogView
-ce n'est pas très différent de l'événement click que nous venons d'ajouter.
AddBlogView = Parse.View.extend (template: Handlebars.compile ($ ('# add-tpl'). Html ()), événements: 'submit .form-add': 'submit', submit: fonction ( e) // la fonction de soumission va ici.,…);
Ensuite, comme nous essayons d'écrire dans la table Blog sur Parse.com, nous devons inclure la classe Blog:
var Blog = Parse.Object.extend ('Blog');
Après cela, ajoutons un créer()
fonction à la classe Blog, nous pouvons donc l'appeler à partir de n'importe quel objet de vue. Il devrait prendre deux paramètres, Titre
et contenu
, et enregistrez-le dans la base de données.
Parse.js l'a rendu très simple. Une fois qu'une nouvelle instance de la classe Blog est créée, nous pouvons simplement définir les valeurs souhaitées et appeler le enregistrer()
fonction pour l'enregistrer dans la base de données.
var Blog = Parse.Object.extend ('Blog', create: fonction (titre, contenu) this.set ('titre': titre, 'contenu': contenu, 'auteur': Parse.User.current ( )). save (null, succès: fonction (blog) alert ('Vous avez ajouté un nouveau blog:' + blog.get ('titre'));, erreur: fonction (blog, erreur) console. log (blog); console.log (erreur);););
Ou vous pouvez aussi simplement écrire les données dans le enregistrer()
une fonction:
var Blog = Parse.Object.extend ('Blog', create: fonction (titre, contenu) this.save ('titre': titre, 'contenu': contenu, 'auteur': Parse.User.current ( ), success: function (blog) alert ('Vous avez ajouté un nouveau blog:' + blog.get ('title'));, error: function (blog, error) console.log (blog); console.log (erreur);););
Les deux fonctionneraient.
Notez que j'inclus aussi auteur
dans la base de données avec Parse.User.current ()
. C'est la méthode que vous devez utiliser pour que l'utilisateur actuel soit connecté..
Maintenant, comme dernière étape pour le faire fonctionner, vous devez appeler blog.create ()
du AddBlogView
nous venons de créer.
Ajoutons-le à la soumettre()
une fonction:
submit: function (e) // Empêcher la soumission par défaut e.preventDefault (); // Prend le formulaire et le place dans un objet data var data = $ (e.target) .serializeArray (), // Crée une nouvelle instance de Blog blog = new Blog (); // Appelez .create () blog.create (data [0] .value, data [1] .value);
Faites un essai. On dirait que ça marche!
Et si vous le vérifiez sur Parse.com, vous verrez qu'il est stocké dans la table Blog..
Félicitations! Vous écrivez dans la base de données.
Maintenant regardons à nouveau la liste des blogs:
Vous remarquerez qu'au lieu du nom d'utilisateur, nous affichons l'ID utilisateur. Et nous ne montrons pas l'heure à laquelle le blog est créé. Nous avons créé à
et updatedAt
valeurs dans le back-end, mais elles ne sont pas très lisibles par l'utilisateur.
Si nous voulons résoudre ce problème, il existe deux approches générales:
Si nous adoptons la première approche, nous faisons la même chose encore et encore, en utilisant le temps et les ressources du visiteur. Par conséquent, nous voulons le faire en écrivant dans la base de données. Ne vous inquiétez pas des choses comme "que se passe-t-il si l'utilisateur change de nom?" Pourtant, nous pouvons toujours faire une mise à jour du groupe lorsque cela se produit..
Vous devriez être vraiment familiarisé avec ce processus maintenant. Définissons le nom et le type de ces deux champs comme suit:
nom de l'auteur
(Chaîne)temps
(Chaîne)Ensuite, vous devez modifier le créer()
fonction pour enregistrer ces valeurs:
this.save ('title': titre, 'content': contenu, 'author': Parse.User.current (), 'authorName': Parse.User.current (). get ('nomutilisateur'), 'heure ': new Date (). toDateString (),…);
Notez que je viens d'utiliser le .toDateString ()
fonctionner ici; vous pouvez utiliser d'autres fonctions de date pour obtenir le format d'heure souhaité.
Enfin, mettons à jour # blogs-tpl
dans index.html
tirer les nouvelles valeurs:
Maintenant, vous pouvez supprimer ces publications existantes et en ajouter d'autres à partir de la nouvelle page "Ajout d'un nouveau blog"..
Maintenant, tous les champs devraient fonctionner.
Parce que nous utilisons contenu
dans le modèle, vous constaterez que vous pouvez déjà mettre des balises HTML dans votre contenu et il rendra correctement dans le front end. Cependant, la plupart des gens, y compris moi-même, ne pensent pas que c'est la manière la plus naturelle d'écrire un blog..
Je vais vous montrer comment ajouter très rapidement un éditeur WYSIWYG simple, afin que vous sachiez que c'est faisable..
Tout d'abord, téléchargez le plugin.
Il a déjà été mis à jour, mais pour les besoins de la démo et du tutoriel, utilisons simplement l'ancien.
Décompressez les fichiers, copiez /dist/bootstrap-wysihtml5-0.0.2.css
et le mettre dans votre dossier CSS. De même, copier /dist/bootstrap-wysihtml5-0.0.2.min.js
et /lib/js/wysihtml5-0.3.0.min.js
dans votre dossier JS.
Ensuite, liez ces fichiers dans admin.html
:
…
Pour activer wysihtml5, il vous suffit d’appeler wysihtml5 ()
sur le élément. Ajoutons simplement cela à la
rendre()
fonctionner dans AddBlogView
:
render: function () this. $ el.html (this.template ()). find ('textarea'). wysihtml5 ();
Ensuite, au lieu d’obtenir le texte brut du serializeArray ()
fonction, nous pouvons obtenir le code HTML à partir de val ()
. Changeons le créer()
appelez pour utiliser ça:
blog.create (data [0] .value, $ ('textarea'). val ());
Le code ici est très simple. n'hésitez pas à le modifier pour être plus efficace si vous le souhaitez. (Utilisez un nom de classe comme sélecteur, stockez $ ('textarea')
comme variable, etc.)
Maintenant, si vous actualisez et testez, cela devrait déjà fonctionner!
Comme ce n’est pas l’objet de ce tutoriel, je vais en rester là.. wysihtml5
offre de nombreuses options au-delà de cela, alors jetez un oeil à ces deux pensions si vous êtes intéressé:
Dans cette session, vous avez activé les utilisateurs pour ajouter un nouveau blog. Vous avez préparé une interface utilisateur et l'avez liée à la base de données principale. Vous avez également ajouté davantage de champs à la classe Blog, qui est donc plus lisible dans la liste. Enfin, vous avez également implémenté un simple plugin WYSIWYG. Je pense que c'est beaucoup, et j'espère que vous le ressentez aussi!
Lors de la prochaine session, nous préparerons le terrain pour un panneau d’administration plus fonctionnel. Vous apprendrez le concept de routeur et vous fusionnerez index.html
et admin.html
en un. De plus, nous allons sortir la liste des blogs dans le panneau d'administration, afin que l'utilisateur puisse les éditer et les supprimer. Restez à l'écoute.