Avant-propos
Nous allons créer un système de diffusion de nouvelles simple aujourd'hui. La première étape du système n'a pas besoin d'être trop difficile. Elle a principalement les fonctions suivantes
.① Gestion des types d'actualités
② Gestion des actualités (avec fonction de téléchargement d'images)
③ Navigation dans les actualités
Bien qu'il n'y ait pas beaucoup de fonctions, il couvre également de nombreuses opérations de base. Le programme ajoute, supprime, vérifie et télécharge uniquement les pièces jointes, ce qui est suffisant. Alors commençons notre étude aujourd’hui
Préparation
Après les problèmes d'hier, nous disposons déjà des environnements nodeJS et mongoDB. Nous pouvons désormais créer directement de nouveaux fichiers de projet et fichiers de base de données
.La première étape consiste à ouvrir l'invite de commande, à passer au lecteur D et à saisir
Ensuite, le système construira automatiquement l'environnement de base avec bonheur
Évidemment, de nombreuses dépendances de modules ne sont pas là pour le moment, faites simplement le test du package.json d'hier :
Puis passez au répertoire du projet :
Une fois tous les fichiers dépendants téléchargés, nous entrons
Ainsi, notre programme s'est déroulé sans problème. Lorsque nous avons ouvert l'URL, nous avons constaté qu'il n'y avait effectivement aucun problème
PS : Il y a un problème qui mérite votre attention ici. Le fichier que nous avons téléchargé n'est pas encodé en UTF-8, donc le chinois peut être tronqué. L'encodage du fichier doit être unifié par vous-🎜>.
Lorsque le programme est en cours d'exécution, une configuration liée à la base de données est requise① Créez d'abord un nouveau dossier d'actualités dans le répertoire mongoDB
② Ajouter le fichier de configuration settings.js au projet
.
Mais il y a deux choses ennuyeuses ici. L'une est qu'il est ennuyeux de démarrer le programme d'information à chaque fois, et l'autre est qu'il faut redémarrer pour modifier quoi que ce soit, nous allons donc d'abord résoudre ces deux problèmes ici① Créez un nouveau news_app.bat sur le bureau et exécutez-le plus tard pour démarrer le programme
② Supervisor est un programme de protection des processus. Nous pouvons l'utiliser pour nous aider à redémarrer le programme. Suivez d'abord, puis ajustez notre node_app.bat
.Bien sûr, vous devez l'installer avant :
Après cela, il n'est pas nécessaire de redémarrer manuellement après avoir modifié le fichier (news_app doit être placé dans le répertoire du projet), donc le travail de préparation se termine ici
Structure du projet
Après la première étape, il faut réfléchir à la structure du projet
① La page d'accueil est un index, où tous les types d'actualités et actualités seront répertoriés
② Chaque actualité comporte trois boutons : modifier/supprimer/afficher
③ La page d'accueil a un bouton pour ajouter des actualités (vous pouvez télécharger des photos lors de l'ajout)
Les fonctions de base sont comme ci-dessus
Nous avons donc supprimé la fonction de routage dans l'application et mis tous les itinéraires dans l'index
La première étape est aussi simple que cela, car l'ajout de nouvelles doit avoir une page séparée, et cliquer sur le bouton ajouter aura un autre traitement, donc chaque demande doit être décomposée en interne. La réglementation actuelle est la suivante :
/ Page par défaut, qui affiche tous les genres et actualités, avec un bouton supprimer
/add Entrez dans la page d'ajout d'actualités
/addNews Ajouter une adresse de demande de publication spécifique à l'actualité (réponse en cliquant sur le bouton)
/delete Supprimer la demande d'actualité
/afficher une requête d'actualité spécifique
J'ai donc légèrement modifié l'itinéraire ci-dessus :
Nous devons donc créer plusieurs nouveaux modèles pour organiser nos pages Web. Ici, nous ne séparons pas la tête et la queue, juste la page la plus simple
.Ajout de deux fichiers modèles, add et view, qui se comportent temporairement de la même manière que index.ejs, et modification de la navigation
C'est la fin de la structure du projet
Opération de données
Une fois la structure globale terminée, nous devons effectuer des opérations sur les données :
① Ajouter des données (ajouter des actualités)
② Afficher les données (afficher les actualités)
③ Supprimer les données (supprimer les actualités)
À l'origine, cela impliquait également des opérations de type, mais je n'ai pas pu le comprendre en le faisant, je vais le laisser tranquille pour le moment, car il est facile de se perdre lorsqu'on le fait pour la première fois
Ajouter des actualités
Ici, nous n'utilisons pas la soumission de formulaire, nous utilisons ajax... Ici nous introduisons la bibliothèque zepto, donc notre page devient comme ça
Bien qu'il n'y ait pas encore de programme de réponse aux requêtes, les données ne seront donc pas traitées, et nous n'avons pas de pièces jointes ici (une seule pièce jointe est autorisée maintenant), nous modifions donc le code et ajoutons des images :
PS : Le plus gênant c'est que le traitement ajax de l'image est un peu gênant, donc on revient juste à l'opération formulaire, sinon ça va prendre beaucoup de temps...
这个样子就不需要过多的考虑附件问题,先暂时如此吧,现在先处理请求程序,这里先在public里面新建news文件夹用于存储其图片
modèle
在models文件夹新增news.js文件,为其构建实体,并赋予新增查询相关操作 :
fonction News(titre, contenu, photo) {
this.title = titre;
this.content = contenu;
this.pic = pic;//保存存储路径
};
module.exports = Actualités;
//存储数据
Actualités.prototype = {
save : fonction (rappel) {
var date = nouvelle Date();
var temps = {
date : date,
année : date.getFullYear(),
mois : date.getFullYear() "-" (date.getMonth() 1),
jour : date.getFullYear() "-" (date.getMonth() 1) "-" date.getDate(),
minute : date.getFullYear() "-" (date.getMonth() 1) "-" date.getDate() " "
date.getHours() ":" (date.getMinutes() < 10 ? '0' date.getMinutes() : date.getMinutes())
>
//数据存储对象
var actualités = {
titre : ce.titre,
contenu : this.content,
pic : this.pic, //图片处理最后来说,现在先乱存
heure : heure
};
//打开数据连接,打开就是一个回调......
mongodb.open (fonction (err, db) {
//错误就退出
si (erreur) {
return callback(err);
>
//打开news集合
db.collection('news', function (err, collection) {
si (erreur) {
mongodb.close();
return callback(err);
>
//写入集合(写入数据库)
collection.insert(news, {safe: true }, function (err) {
return callback(err);
});
callback(null);//err为null
});
});
>
};
Donc, le programme pour écrire dans la base de données est là. Ici, nous essayons de voir si nous pouvons l'insérer dans la base de données. Bien sûr, nous devons modifier le programme de routage
.PS : Bien sûr, vous ne pouvez pas écrire trop de code logique dans le service de routage. Ce fichier devra être séparé à l'avenir
.Pour le moment, la logique dans /addNews doit être modifiée
Après vérification, le problème n'est pas grave. Ce qu'il faut maintenant résoudre, c'est le problème de l'attachement
Télécharger des photos
Express lui-même prend en charge la fonction de téléchargement d'images. Express analyse le corps de la requête via bodyParser, puis télécharge des fichiers via celui-ci. Il utilise formidable
en interne.Ici, remplacez app.use(express.bodyParser()) dans app.js par :
Ouvrez index.js et ajoutez une ligne de code devant :
Modifier le fichier d'index :
À ce moment, sélectionnez le fichier et cliquez sur Ajouter des actualités, et notre fichier sera téléchargé
Pour le moment, il me suffit d'enregistrer le nom du fichier dans la base de données, et il y aura des images dans le répertoire des fichiers
Il y a des données dans la base de données et il y a des fichiers dans notre répertoire. Il ne nous reste plus qu'à lire les données
.PS : Des frères m'incitent à sortir boire un verre pendant les vacances
Lire les données
La deuxième étape consiste bien sûr à lire les données. La première consiste à lire les données sur la page d'accueil :
结语
好了,以后我们再慢慢增加功能,慢慢做美化。