将Backbone App部署到Node JS服务器

时间:2014-03-03 16:27:40

标签: javascript node.js backbone.js

尝试使用nodejs和backbone构建应用程序。
直到现在我正在使用快速路由运行节点js服务器。这些简单的nodejs路由只是将数据发送回Backbone模型。
我正在运行骨干应用程序,直接打开html文件到浏览器并在模型中定义节点js url。
现在问题出现在我尝试在应用程序中实现Backbone Router时。如果我直接打开html文件,它将无法正常工作 问题是如何将骨干应用程序部署到节点服务器? 目录结构:

app
--index.html
--view
----appView.js
--model
----appModel.js
--server
----server.js
--controller
----router.js

appView.js

var LoginForm = Backbone.View.extend({
    template:_.template('<input type="text" id="email" name="email" />'+
                        '<input type="password" id="password" name="password" />'+
                         '<input type="button" id="login" value="Login"/>'),
    events: {
        'click #login':'goIn'
    },
    initialize: function() {
        this.model.on('change', this.render, this);
    },
    goIn: function() {
        console.log(this.$('#password').val());
        this.model.set({"email":this.$('#email').val(), "password":this.$('#password').val()});
        this.model.goIn();
        this.render();
    },
    render: function() {
        var attributes = this.model.toJSON();
        this.$el.html(this.template(attributes));
    }
});

模型

var LoginFormModel = Backbone.Model.extend({
      defaults: {
        email:"",
        password:""
      },
      goIn: function(req, resp) {
        console.log('hey whats up?'+JSON.stringify(this));
        //this.save();
      }
  });

  var loginModel = new LoginFormModel();

节点服务器

var http = require('http'),
    express = require('express');
app.get('/', function(req, res){
    res.send('Hello App');
});

1 个答案:

答案 0 :(得分:0)

您必须使用navigate功能:

var Router = Backbone.Router.extend({
    routes : {
        "": "home", // will be 
        "login" : "login"
    },

    home: function() {
        // your home page
    }

    login: function() {
        var loginModel = new LoginModel();
        var loginView = new LoginView({model: loginModel});
        loginModel.fetch();
    }
})

new Router();
Backbone.history.start();

当您想要访问登录页面时,无论您身在何处:

Backbone.history.navigate('login', { trigger: true });