Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.07.2017, 22:07
Аспирант
Отправить личное сообщение для АнонимныйПарень Посмотреть профиль Найти все сообщения от АнонимныйПарень
 
Регистрация: 17.03.2017
Сообщений: 67

Редирект на 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);


Не знаю что еще отправить, напишите что нужно для решения моей "проблемы" и я отправлю эту часть кода. Пожалуйста, помогите!

Последний раз редактировалось АнонимныйПарень, 18.07.2017 в 22:57.
Ответить с цитированием
  #2 (permalink)  
Старый 19.07.2017, 11:45
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Браузер не сможет тебе отрисовать твой jade файл. То есть должно быть что-то типо
a(href='/blabla', style='color: white;') Ссылка

И должен быть middleware, который будет обрабатывать путь /blabla и рендерить твой file.jade с нужным контекстом
app.get('/blabla', function(req, res){
res.render('path/to/file.jade')
})
Ответить с цитированием
  #3 (permalink)  
Старый 19.07.2017, 11:53
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Не мидловер, а простой обработчик запроса (в данном случае).
Это я написал примерно же самое, но оказалось - что уже написано. Пришлось удалить.
Короче, ссылка (href) - это обычный GET-запрос, которому нужен обычный обработчик.
Ответить с цитированием
  #4 (permalink)  
Старый 19.07.2017, 12:18
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Сообщение от Audaxviator Посмотреть сообщение
Не мидловер, а простой обработчик запроса (в данном случае).
Вы не поверите, но это синонимы.
Ответить с цитированием
  #5 (permalink)  
Старый 19.07.2017, 12:25
Аспирант
Отправить личное сообщение для АнонимныйПарень Посмотреть профиль Найти все сообщения от АнонимныйПарень
 
Регистрация: 17.03.2017
Сообщений: 67

а относительный путь относительно какого файла писать?
Ответить с цитированием
  #6 (permalink)  
Старый 19.07.2017, 12:31
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

АнонимныйПарень,
Вы указали путь к папке с шаблонами? Что-то типа
app.set('views', './templates')

Если да, то путь и указывается относительно папки templates. http://expressjs.com/ru/guide/using-...e-engines.html
Ответить с цитированием
  #7 (permalink)  
Старый 19.07.2017, 12:34
Аспирант
Отправить личное сообщение для АнонимныйПарень Посмотреть профиль Найти все сообщения от АнонимныйПарень
 
Регистрация: 17.03.2017
Сообщений: 67

вот мои 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'));
});
Ответить с цитированием
  #8 (permalink)  
Старый 19.07.2017, 12:35
Аспирант
Отправить личное сообщение для АнонимныйПарень Посмотреть профиль Найти все сообщения от АнонимныйПарень
 
Регистрация: 17.03.2017
Сообщений: 67

Пишет Cannot GET /courses
Ответить с цитированием
  #9 (permalink)  
Старый 19.07.2017, 13:04
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Нет, это не синонимы.
Из любого обработчика можно сделать мидловер - добавив третий аргумент next.
Это делают довольно часто, на самом деле. Например, таким способом оченно просто запретить "злому хаккеру" попасть на страницу, на которую должны попадать только заргистрированные юзеры. Просто пишешь первой строчкой в обработчике -
if(!req.user) return next();
- и запрос пройдёт дальше и закончится на хендлере Page not found.
Так что, ну какие же это синонимы?
Ну да ладно, мне всё равно.

Последний раз редактировалось Audaxviator, 19.07.2017 в 14:01.
Ответить с цитированием
  #10 (permalink)  
Старый 19.07.2017, 13:16
Аспирант
Отправить личное сообщение для АнонимныйПарень Посмотреть профиль Найти все сообщения от АнонимныйПарень
 
Регистрация: 17.03.2017
Сообщений: 67

ответьте на мой вопрос выше
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разница между собранным пакетом nodeJS и установленным из бинарного образа freeneutron Node.JS 1 10.11.2015 12:41
редирект по завершению submit Илья86 Общие вопросы Javascript 2 02.12.2014 17:54
jquery анимация и редирект после SunYang Events/DOM/Window 5 17.05.2012 12:10
Comet: NodeJS - с чего начать разработку? Vulkan AJAX и COMET 13 27.11.2010 19:25
30(1|2) редирект от сервера. Или как лучше сделать редирект при верной отсылке форма. pizzZ AJAX и COMET 2 18.02.2010 09:06