我正在創建一個D3應用程序,該應用程序將使用Express服務器顯示一些簡單數據,並在客戶端使用Ampersand。最終,我會動態地將數據發送到瀏覽器,因爲整個數據集可能會變得非常大。儘管如此,即使是最簡單的工作,我也遇到了麻煩。如何同時使用Express和Ampersand?
我已經建立了一個簡單的Express服務器,它是相當簡單:
// Boilerplate express code
var express = require('express');
var app = express();
var path = require('path');
// Make the Public directory available to the browser
app.use(express.static(__dirname + '/public'));
app.get('/', function(req, res) {
res.sendFile('d3.html', {'root': path.join(__dirname, '/views') });
});
// Listen on port 3000
app.listen(3000);
這工作相當好。當我訪問該頁面時,它會加載一個空白的D3條形圖(僅軸),但不顯示任何數據。這是因爲我沒有將數據發送到瀏覽器,並且據我瞭解,這需要使用AJAX,jQuery或其他方法來完成。我不知道如何繼續這個。
這是在我的d3.html;它讀取data.tsv它的數據,我已經放在我的Express服務器的public
文件夾:
d3.tsv("data.tsv", type, function(error, data) {
x.domain(data.map(function(d) { return d.letter; }));
y.domain([0, d3.max(data, function(d) { return d.frequency; })]);
這是data.tsv
:
letter frequency
A .08167
B .01492
C .02782
D .04253
E .12702
F .02288
G .02015
H .06094
I .06966
J .00153
K .00772
L .04025
M .02406
N .06749
O .07507
P .01929
Q .00095
R .05987
S .06327
T .09056
U .02758
V .00978
W .02360
X .00150
Y .01974
Z .00074
如何將數據傳遞到瀏覽器這樣d3.html
可以讀取數據?我不在乎數據是否在data.tsv
;我只需要以某種方式發送相應的數據。我並不熟悉它,但我有一種直覺,即「和」可以處理請求/接收這些數據,但我不知道如何。
您可以將數據放入您的實際HTML文件中以Javascript格式,然後在頁面中使用一個小小的Javascript將數據掛接到圖表上?或者,您可以在Express中創建一個新路由以提供數據(可能爲JSON),然後從您的網頁發出ajax調用以從服務器檢索數據,然後將數據掛接到圖表。如果數據在呈現頁面時已知,並且始終使用它,則通常將它放在原始頁面中的速度會更快,而不需要額外的ajax調用請求它。 – jfriend00 2015-02-23 15:58:13
數據將不斷更新。我明白,我可以簡單地使用AJAX調用,但Ampersand如何解釋這一點?好像Ampersand處理這種數據傳輸。 – Macslayer 2015-02-23 16:43:49
對不起,我不知道符號和他們的網站是絕對可怕的描述什麼樣的問題,它實際上是最有用的。 – jfriend00 2015-02-23 16:52:16