JavaScript的相当新,所以它可能是一个noobish问题。JavaScript骨干模型设计
在我的项目中,我为我的服务器使用了NodeJS,客户端使用了Backbone。客户端将向服务器发送请求,服务器将发送服务器中的文件列表,我的目标是简单地返回文件列表,当用户单击该文件时,它会向服务器发送另一个请求以加载文件。
目前在客户端级别我的模型和收集的定义是这样的:
app.MyFile = Backbone.Model.extend({
defaults: {
modifiedDate: new Date(),
path: '',
content: '' // content of the file
}
});
var MyFileList = Backbone.Collection.extend({
model: app.MyFile,
url: '/api/files'
});
// create global collection of files
app.MyFiles = new MyFileList();
app.AppView = Backbone.View.extend({
initialize: function() {
// fetch all files
app.MyFileList.fetch();
}
});
// app.js (point of entry)
$(function() {
// Kick things off by creating the **App**.
new app.AppView();
});
而我的服务器代码:
var application_root = __dirname,
express = require("express"),
...
app.get('/api/files', function(req, res) {
...
// return file list
}
app.get('/api/files/:id', function(req, res) {
...
// return file content?
}
既然没有意义加载中的所有文件目录并将其发送回客户端,我所做的是我在服务器中创建了模型,并填写了modifiedDate
和path
,同时将content
更改为null
。但现在的问题是,如何在用户点击文件时填写content
?我不确定如何手动发送来自Backbone View或控制器的HTTP请求。或者有没有更好的方法来做到这一点?我能想到的一种方式是创建另一个只保留modifiedDate
和path
的模型,但对我来说这看起来非常冗长和重复。
真棒。我不知道你可以从模型中调用fetch()。阅读api时一定错过了它。谢谢! – GantengX