【问题标题】:How to use Backbone with Jade correctly如何正确使用 Backbone with Jade
【发布时间】:2013-09-12 19:27:02
【问题描述】:

您好,我正在使用 mongoose 开发 expressjs 主干,我的模板引擎是 HTML(带有 text.js)。

我的应用程序有一个带有注册和登录链接的导航栏和一个我放置内容的容器。我用passportjs实现了一个登录系统,它运行良好,当你登录时,你将拥有一个包含用户信息的req.user对象。

现在我被阻止了,因为如果我登录了,我想隐藏导航栏链接。

当我对 /login 进行 POST 时,如果一切成功,我会重定向到 /account 并使用它的模板加载另一个视图,我将拥有 req.user 数据,但导航栏视图没有它,然后我无法隐藏链接。

我试图传递给 Jade,因为我可以将导航栏的 HTML 代码放在模板中,并且在 POST /login 之后呈现一个包含带有“扩展”的导航栏模板的 Jade 模板。但由于这个原因,我失去了所有的 Backbone 功能,因为我无法在 URL 中使用 # 进行导航。

这样做的正确方法是什么?

希望你能理解我,问候。

【问题讨论】:

    标签: node.js backbone.js pug passport.js


    【解决方案1】:

    您可以使用单例模式来解决这种情况。 IE。例如,具有 isLogged 方法的全局配置对象。这个想法是在你的应用程序的入口点初始化这个对象。您拥有所需数据并稍后通过该单例访问它的地方。例如:

    var AppConfig = (function() {
    
        var isLoggedFlag = false;
        var changeLoggedStatus = function(value) {
            isLoggedFlag = value;
        }
        var isLogged = function() {
            return isLoggedFlag;
        }
    
        return {
            isLogged: isLogged,
            changeLoggedStatus: changeLoggedStatus
        }
    
    })();
    

    当您知道用户已登录时,只需使用:

    AppConfig.changeLoggedStatus(true);
    

    在你看来只是检查

    if(!AppConfig.isLogged()) {
        // hide whatever you need to
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-02
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多