javascript - 从 Backbone.Router 模板访问 res.locals

标签 javascript node.js backbone.js express

到目前为止,我已经在一个非常基本的 Nodejs 问题上工作了太长时间,但我陷入了困境。其他人也问过类似的问题,但由于某种原因,答案似乎对我不起作用。

背景:

我刚刚使用 NodeJS 与 Express、Backbone 和 Passport 进行身份验证。 Passport 将用户对象存储在请求中,因此我尝试将其传递到我的 Backbone View 。

我一直使用 Node Cellar 项目作为起点,并跟随他们通过 Backbone.Router.extend 显示我的大部分 View 。

我想做的事情:

我只想将用户对象传递给 View 并显示,例如我的模板中的名称。

我尝试过的:

我使用类似于下面的中间件将我的用户传递给模型

app.use(function(req, res, next){
   res.locals.user = req.user;
   next();
});

当我直接使用 app.get 时,我能够确认这是否有效:

app.get('/test',function index(req, res) {
    res.send(res.locals.user);
});

但是,如果我在 HeaderView.html 文件中包含以下内容,一切都会崩溃(即使我可以确认用户是通过 app.get 定义的):

<%= user === null ? "No user" : user %> (or user.name.familyName, etc.)

我在控制台中收到以下错误:

Uncaught ReferenceError: user is not defined

这是我的 main.js 的样子:

var AppRouter = Backbone.Router.extend({
    routes: {
        "home"               : "home"  
    },

initialize: function () {
    this.headerView = new HeaderView();
    $('.header').html(this.headerView.el);

    var footerView = new FooterView();
    $('#footer').html(footerView.el);
},

home: function (id) {
    if (!this.homeView) {
        this.homeView = new HomeView();
    }
    $('#content').html(this.homeView.el);
},

});

utils.loadTemplate(['HomeView'], function() {
    app = new AppRouter();
    Backbone.history.start();
});

以下是我设置 Express 的方法:

app.set('port', process.env.PORT || 3000);
app.use(express.logger('default'));  /* 'default', 'short', 'tiny', 'dev' */
app.use(express.bodyParser()),
app.use(express.static(path.join(config.root, 'public')));
app.use(express.cookieParser('optional secret string'));
app.use(express.session({ secret: 'my secret secret key' }));
app.use(passport.initialize());
app.use(passport.session());

有什么想法吗?

最佳答案

我撤回我的预览答案,因为它是短视的:)

看来您可以在这里找到答案:ExpressJS 3.0 How to pass res.locals to a jade view?

第,
亚伦

关于javascript - 从 Backbone.Router 模板访问 res.locals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19150826/

相关文章:

javascript - Backbone 路由器问题

javascript - Backbone.js 中的模型与 View

JavaScript 打开窗口

javascript - 尝试在 Node.js 中对 JSON 文件进行简单的 PUT 请求

javascript - 如何通过 MongoDB 驱动程序 (node.js) 向对象添加属性(属性名称是可变的)

javascript - 如何使用Javascript从未知大小的数组中获取未知大小的数据?

javascript - UnhandledPromiseRejectionWarning 测试 promise 拒绝

javascript - 缩略图 CSS 强制 div 到下一行

javascript - 如何在 Angularjs 中模拟 HTML 表单请求?

javascript - 添加文件按钮如果超过一个则不起作用(jquery 文件上传插件)