Вы, кажется, неправильно поняли понятия.Позвольте мне дать вам лекцию.;)
Основы. Cookie хранится на стороне клиента.Таким образом, использование jQuery $.cookie('userId')
приведет к его извлечению при запуске этого скрипта на стороне клиента.
Но здесь вы используете движок шаблонов JADE на стороне сервера.Таким образом, вы даже не отправили страницу на стороне клиента.Итак, какое печенье вы хотите получить?Файл cookie отсутствует, потому что вы находитесь на сервере.
Это еще не все.Запуск $.cookie('userId')
выдает ошибку, потому что вы находитесь на стороне сервера.$
объекта нет.И не может быть, потому что вы не можете использовать jQuery на стороне сервера (ну, на самом деле вы можете, но это не имеет значения в данный момент).Вы определили объект $
в своей системе маршрутов?Или вы определили помощника $
?Я так не думаю.
Учебник Express + JADE. Теперь позвольте мне дать вам короткое учебное пособие.Допустим, у вас есть представление (в app.js
)
app.get('/', function(req, res){
res.render('index.jade', { code: 500 });
});
Теперь в index.jade
вы можете использовать code
в качестве переменной.Таким образом, вы можете написать свой index.jade
, например, так:
// some code
- if (code == 500)
input(type='submit', disabledm, value='Move')
- else
input(type='submit', value='Move')
// some code
и теперь он будет работать!Вы также можете использовать функции JavaScript в шаблоне, если вы их предварительно определили.Например (в вашем app.js
)
app.helpers({
positive: function(no) { return no > 0; }
});
затем в шаблоне index.jade
вы можете использовать
- if (positive(-13))
input(type="submit")
и даже объединить эти два понятия
- if (positive(code))
// do some stuff
Для файлов cookie или для файлов cookie. Если вам действительно нужно использовать файлы cookie (и вам не следует это делать, за исключением сеансов или CSRF, например), вам необходимо использовать клиентский JavaScript.Это означает, что вам нужно добавить (после jQuery)
script(src='my-path/my-script.js')
в файл index.jade
и написать my-script.js
вот так
$(document).ready(function() {
if ($.cookie('userId') == userId) {
// do something like append input to some holder
}
});
Но есть несколько проблем с этим решением,Первый: что такое userId
(вторая часть равенства)?Вам необходимо заранее указать его в вашем index.jade
.Например, используя
script
var userId = #{ user.id };
и добавив объект user
в свой маршрут.Второе: куки - это локальные переменные.Установка их требует дополнительного серверного кода, который, я думаю, вам не нужен.Это делает обслуживание приложения сложнее.И наконец: сохранение идентификатора пользователя в cookie-файле кажется бессмысленным.Конечный пользователь даже не должен знать свой собственный идентификатор.Сервер должен знать!Система сессий очень удобна.
Заключительное примечание. Код, который вы написали, показывает нам, что вы не можете различить серверный и клиентский JavaScript.Решение вашей проблемы - учиться, учиться и учиться.Прочитайте учебные пособия и все о JADE, Express и Node.js.