Utiliser les routes dans l'Express-js
Si je commence à utiliser Node.js. J'ai vu la vidéo avec Ryan Dahl sur Nodejs.org et entendu, il a recommandé l'Express-js pour les sites web.
J'ai téléchargé la dernière version de Express, et ont commencé à coder. J'ai une véritable vision statique sur /, mais dès que j'ai essayer d'envoyer les paramètres, j'obtiens une erreur comme ceci:
Cannot GET /wiki
J'ai essayé de suivre le guide sur expressjs.com mais la façon dont on utilise les routes a changé dans la dernière version, ce qui rend le guide inutilisable.
Guide:
app.get('/users/:id?', function(req, res, next){
var id = req.params.id;
if (id) {
//do something
} else {
next();
}
});
Généré par l'Express:
app.get('/', routes.index);
Mon problème se pose lorsque j'essaie d'ajouter un autre itinéraire.
app.get('/wiki', routes.wiki_show);
J'ai essayé un tas de démarches, mais je reçois le Cannot GET /wiki
(404) erreur.
routes/index.js ressemble à ceci:
exports.index = function(req, res) {
res.render('index', { title: 'Test', articles: articles, current_article: current_article, sections: sections })
};
La seule chose que j'ai fait il y a ajout de certains paramètres (les tableaux dans le même fichier) et cela, je travaille. Mais quand je copie le contenu et le changement exports.index
à exports.wiki
ou exports.wiki_show
que j'ai toujours l' Cannot GET /wiki
erreur.
Quelqu'un peut-il m'expliquer ce que je suis en manque ici? - Merci.
- Avez-vous d'ajouter le routeur middleware?
- Vous avez téléchargé la dernière Express? Avez-vous l'obtenir à partir de github ou par l'intermédiaire de la NGP?
- Oui, je suis tout à fait sûr de ça 🙂
- Je l'ai eu à partir de GitHub 🙂
- Le maître n'est pas stable. Installer à l'aide de la NGP, vous devriez obtenir 2.5.6. De plus, le routeur middleware est automatiquement lié lorsque vous spécifiez un itinéraire.
- Merci @RyanOlds - j'ai juste installé par MNP, et il semble que de manière plus stable.
Vous devez vous connecter pour publier un commentaire.
Donc, après, j'ai créé ma question, j'ai eu cette liste sur la droite avec un problème similaire: Organiser des routes dans Node.js.
La réponse dans ce post lié à la Express repo GitHub et suggère de regarder le " route de séparation ' exemple.
Cela m'a aidé à changer mon code, et j'ai maintenant ce qu'il fonctionne. - Merci pour vos commentaires.
Mon œuvre terminée par ressembler à cela;
J'ai besoin de mes trajets dans le app.js:
Et j'ajoute mes itinéraires comme ceci:
J'ai deux fichiers appelés wiki.js et site.js dans la racine de mon application, contenant ceci:
La route-map exprimer exemple correspond à une url avec des objets qui à son tour correspond à l'adresse http verbes avec les fonctions. Ce qui pose le routage dans un arbre, qui est concis et facile à lire. Les applications les entités sont également écrits comme des objets avec les fonctions que les méthodes.
Semble que seul index.js chargés lorsque vous avez besoin de("./routes") .
J'ai utilisé le code suivant dans index.js pour charger le reste du parcours:
require
déclarations, si vous n'êtes pas le regroupement de vos itinéraires, par une sorte d'espace de noms.exports[route_name] = require(route_fname)
fait de sorte que vous pouvez plus tard, reportez-vous à la route par un espace de noms, par exempleroutes.users.show
.Vous pouvez également organiser en modules. Il serait donc quelque chose comme.
et puis dans le indexController.js des contrôleurs d'exporter vos contrôleurs.
puis dans index.js des contrôleurs dir
et enfin dans app.js
Je pense que cette approche permet une séparation plus claire et vous pouvez également configurer vos contrôleurs en passant peut-être une base de en.