Mangouste application basée sur l'architecture
Ce n'est pas un béton app/code question, c'est juste à propos d'application les plus courantes de l'architecture.
J'essaie de comprendre la bonne façon d'organiser mon mangouste application. Comme je suis nouveau à la mangouste, c'est comment je le fais maintenant:
core/settings.js
var mongoose = require('mongoose');
exports.mongoose = mongoose;
mongoose.connect('mongodb://localhost/blog');
exports.db = mongoose.connection;
core/models.js
settings = require("./settings");
//post schema
var postSchema = settings.mongoose.Schema({
header: String,
author: String,
text: String
})
//compiling our schema into a Model
exports.post = settings.mongoose.model('post', postSchema)
core/db-layer.js
settings = require("./core/settings");
models = require("./core/models");
exports.function = createAndWriteNewPost(function(callback) {
settings.db.on('error', console.error.bind(console, 'connection error:'));
settings.db.once('open', function callback() {
new models.post({
header: 'header',
author: "author",
text: "Hello"
}).save(function(err, post) {
callback('ok');
});
});
});
routes/post.js
db = reqiure("../core/db.js")
exports.get = function(req, res) {
db.createAndWriteNewPost(function(status){
res.render('add_material', {
//blah blah blah
});
});
};
app.js
var post = require ('routes/post.js')
...
app.get('/post', post.get);
Donc, ce code a été simplifiée à l'extrême (même pas testé) pour montrer mon architecture actuelle pensées. Ce n'est pas une application concrète, juste quelque chose comme la création d'un résumé blog. Donc, c'est comment cela fonctionne:
app.js --> routes/post.js <--> core/db-layer.js
|
v
core/models.js <--> core/settings.js
Il semble un peu superflu pour moi. Pourriez-vous suggérer plus optimale de l'application de la structure? Merci.
- Jetez un oeil à l'un de mes réponse: stackoverflow.com/questions/14958504/...
Vous devez vous connecter pour publier un commentaire.
Quand je suis arrivé dans Node.js, d'Exprimer et de Mangoustes, j'ai du mal avec mise à l'échelle de mon code.
L'intention de ma réponse est pour aider quelqu'un qui travaille plus qu'un simple blog, mais pour les aider avec encore plus évolutive du projet.
index.js
comme la racine de fichier d'un dossier, tout comme on le ferait dans d'autres languesrequire()
d dans lemodels/index.js
fichier.index.js
fichier. Il est donc facile d'organiser quelque chose commehttp://example.com/api/documents/:id
. Il rend également plus de sens lorsque l'on traverse la structure du fichier.Voici la structure de ce que j'utilise:
app.js
mongoose/index.js
models/index.js
models/blog.js
Ainsi, pour chaque modèle que vous travaillez sur vous créez un
model.js
document, et l'ajouter dans lamodels/index.js
ci-dessus. Comme un exemple, j'ai ajouté unUser
modèle, mais ont souligné qu'il.routes/index.js
routes/blog/index.js
utilisation suggérée
algorithms/
dossier où je stocke toutes les algorithmes que j'utilise dans mon application.Espère que cela donne plus de clarté. Cette structure fonctionne des merveilles pour moi comme je l'ai trouver, il est facile à suivre.
Blog = mongoose.model('Blog', BlogSchema);
, ici, le Blog sera exporté dans l'espace de noms global ou quoi? Parce que quand j'ajoutelet/var
avantBlog
, mon code commence à jeterBlog is not defined
erreur.Qui est à peu près comment m'y prendre, avec quelques différences: