use*_*745 1 haml node.js express pug
在登录期间,我将userId保存在jQuery cookie中,以便我可以访问它$.cookie('userId').
现在我正试图从Jade访问它,因为,
- if ($.cookie('userId') === userId)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
$未定义
我如何访问cookie?
我的代码:
- if (($.cookie('userId')) === userId)
input(type='submit', value='Move')
else
input(type='submit', disabled, value='Move'')
Run Code Online (Sandbox Code Playgroud)
fre*_*ish 14
你似乎误解了概念.我来给你讲课.;)
基本.Cookie存储在客户端.因此$.cookie('userId'),当在客户端运行此脚本时,使用jQuery 将检索它.
但是在这里你在服务器端使用JADE模板引擎.所以你甚至没有把页面发送到客户端.那么你想要检索什么cookie?没有cookie,因为你在服务器上.
还有更多.运行$.cookie('userId')会抛出错误,因为您在服务器端.没有$对象.并且不可能,因为你不能在服务器端使用jQuery(嗯,实际上你可以,但目前这是无关紧要的).你$在路线系统中定义了对象吗?或者你定义了帮手$?我不这么认为.
Express + JADE教程.现在让我给你一个简短的教程.假设您有一个视图(中app.js)
app.get('/', function(req, res){
res.render('index.jade', { code: 500 });
});
Run Code Online (Sandbox Code Playgroud)
现在index.jade你可以code用作变量.所以你可以这样编写你index.jade的例子:
// some code
- if (code == 500)
input(type='submit', disabledm, value='Move')
- else
input(type='submit', value='Move')
// some code
Run Code Online (Sandbox Code Playgroud)
现在它会工作!如果预定义它们,也可以在模板中使用JavaScript函数.例如(在你的app.js)
app.helpers({
positive: function(no) { return no > 0; }
});
Run Code Online (Sandbox Code Playgroud)
然后在index.jade模板中你可以使用
- if (positive(-13))
input(type="submit")
Run Code Online (Sandbox Code Playgroud)
甚至结合这两个概念
- if (positive(code))
// do some stuff
Run Code Online (Sandbox Code Playgroud)
cookie或不cookie.如果您确实需要使用cookie(例如,除了会话或CSRF之外,您不应该使用cookie),那么您需要使用客户端JavaScript.这意味着你需要添加(在jQuery之后)
script(src='my-path/my-script.js')
Run Code Online (Sandbox Code Playgroud)
到index.jade文件并写my-script.js这样的
$(document).ready(function() {
if ($.cookie('userId') == userId) {
// do something like append input to some holder
}
});
Run Code Online (Sandbox Code Playgroud)
但是该解决方案存在一些问题.第一:什么是userId(平等的第二部分)?你需要预先定义它index.jade.例如使用
script
var userId = #{ user.id };
Run Code Online (Sandbox Code Playgroud)
并user在您的路线中添加对象.第二:cookie是局部变量.设置它们需要额外的服务器代码,我不喜欢这些代码.这使得维护应用程序更加困难.最后:将用户的id存储在cookie中似乎毫无意义.最终用户甚至不必知道它自己的id.服务器需要知道!会话系统在这里很方便.
最后的说明.您编写的代码向我们表明您无法区分服务器端和客户端JavaScript.解决问题的方法是学习,学习和学习.阅读有关JADE,Express和Node.js的教程和所有内容.
| 归档时间: |
|
| 查看次数: |
7471 次 |
| 最近记录: |