Редирект на Nodejs
Использую Express. Вопрос: есть ссылка в .jade файле, по нажатию на ссылку не открываеться другой .jade файл. ПОЧЕМУ?
Вот код Jade (Pug): a(href='../file.jade', style='color: white;') Ссылка Вщт JS: exports.courses = function(req, res){ res.render('../file.jade', { title: 'Express' }); }; app.get('/', routes.index); app.get('../file.jade', routes.file); Не знаю что еще отправить, напишите что нужно для решения моей "проблемы" и я отправлю эту часть кода. Пожалуйста, помогите! |
Браузер не сможет тебе отрисовать твой jade файл. То есть должно быть что-то типо
a(href='/blabla', style='color: white;') Ссылка И должен быть middleware, который будет обрабатывать путь /blabla и рендерить твой file.jade с нужным контекстом app.get('/blabla', function(req, res){ res.render('path/to/file.jade') }) |
Не мидловер, а простой обработчик запроса (в данном случае).
Это я написал примерно же самое, но оказалось - что уже написано. Пришлось удалить. Короче, ссылка (href) - это обычный GET-запрос, которому нужен обычный обработчик. |
Цитата:
|
а относительный путь относительно какого файла писать?
|
АнонимныйПарень,
Вы указали путь к папке с шаблонами? Что-то типа app.set('views', './templates') Если да, то путь и указывается относительно папки templates. http://expressjs.com/ru/guide/using-...e-engines.html |
вот мои middleware:
/** * Module dependencies. */ var express = require('express'); var routes = require('./routes'); var http = require('http'); var path = require('path'); var app = express(); // all environments app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.json()); app.use(express.urlencoded()); 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()); } app.get('/', routes.index); app.get('/courses', function(req, res){ res.render('courses.jade'); }) http.createServer(app).listen(app.get('port'), function(){ console.log('App is working on port ' + app.get('port')); }); |
Пишет Cannot GET /courses
|
Нет, это не синонимы.
Из любого обработчика можно сделать мидловер - добавив третий аргумент next. Это делают довольно часто, на самом деле. Например, таким способом оченно просто запретить "злому хаккеру" попасть на страницу, на которую должны попадать только заргистрированные юзеры. Просто пишешь первой строчкой в обработчике - if(!req.user) return next();- и запрос пройдёт дальше и закончится на хендлере Page not found. Так что, ну какие же это синонимы? Ну да ладно, мне всё равно. |
ответьте на мой вопрос выше
|
Часовой пояс GMT +3, время: 01:10. |