对 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
对我来说这看起来非常冗长和重复。