wie kann ich das beheben Routen zu finden, die Ansichten innerhalb von Unterordnern in node.js
ich versuche, eine route für localhost:port/admin/
und ich will, dass die routes.js Dateien und view.js Dateien in den entsprechenden Ordnern, damit ich nicht zu viel spaggeti später
aber ich erhalte: 500-Fehler: Failed to lookup-Ansicht "/admin/manage_subjects"
für den Versuch, eine neue route zu erstellen und mit der gleichen Ordner-paar der gleichen
habe ich die folgende Ansicht Ordner mit express
mainapp(root)
routes(folder)
admin(folder)
index.js(nested inside admin)
index.js(nested inside routes)
views(folder)
admin(folder)
admin_layout.jade(nested inside admin)
manage_subjects.jade(nested inside admin)
index.jade(nested inside views)
layout.jade(nested inside views)
code:
routes/admin/index.js
exports.index = function (req, res) {
res.render('manage_subjects',{title:'Express'});}
views/admin/manage_subjects.jade
extends admin_layout
block content
h1 = title
p Welcome to #{title}
meine app.js code
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes')
, admin_routes = require('./routes/admin/')
, user = require('./routes/user')
, http = require('http')
, path = require('path')
, repository = new (require('./domain_model/repository'))();
var app = express();
//all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
//development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
//fill local subjects
repository.subjects.GetAll(function (err, data) {
if (err) throw err;
app.locals.subjects = data;
});
//append routes
app.get('/', routes.index);
app.get('/admin', admin_routes.index);
app.get('/users', user.list);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on http://localhost:' + app.get('port'));
});
in routes/admin/index.js es scheint, es sollte
ich habe es versucht, hat nicht funktioniert 🙁
res.render('admin/manage_subjects',{title:'Express'});}
ich habe es versucht, hat nicht funktioniert 🙁
InformationsquelleAutor user2538720 | 2013-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich schon Umgang mit dem, was ich denke, ist das gleiche problem und herausgefunden, wie es zu lösen ist. Also in den Fall kommt jemand über dieses problem, das ich werde Entsendung meine Lösung.
So, hier ist, was ich hatte, war verursacht, 404 und 500
app.js
und hier war meine routes/index.js
und meine routes/admin.js:
durch die Definition der Sekunde /admin im inneren des Routers.get () - Funktion, die ich glaube, ich war effektiv sagt Knoten zu suchen, die html in meinen Ansichten-Ordner unter dem folgenden Pfad views/admin/admin/index.ejs. So zu beheben, dass alle die ich tun musste, war, entfernen Sie entweder die /admin vom router.get() oder die /admin aus der app.verwenden Sie()
So meine funktionierende code sieht nun wie folgt aus:
app.js
und hier war meine routes/index.js
und meine routes/admin.js:
So zu ändern, dass es so gemacht, ich könnte sub-Ordner in meine Ordner sichten.
danke!!! das ist perfekt.dies sollte die Antwort sein.
InformationsquelleAutor Hardy
Ich würde check out TJ das video-on-Modularer apps
auf seinem vimeo
der beste Teil über diese Arbeit fließen, ist Ihr code wirklich flexibel und es ist viel leichter zu bleibenDRY
.Außerdem würde ich so etwas tun mit meinem
app.set("views")
Andere alternative wäre so etwas wie in deinem
app.js
Datei:und leitet dann Aussehen würde:
Cheers, ich hoffe, das hilft!
InformationsquelleAutor David