D3包装
了Javascript的fetchAPI
来撷取资料我们这里可以看到D3Js的原始码为以下片段,不难看出它是return了fetchAPI
function json(input, init) {
return fetch(input, init).then(responseJson);
}
另外也可以参见d3原始码的部分
function dsv(delimiter, input, init, row) {
if (arguments.length === 3 && typeof init === "function") row = init, init = undefined;
var format = d3Dsv.dsvFormat(delimiter);
return text(input, init).then(function(response) {
return format.parse(response, row);
});
}
从中可以理解如果没有带入init物件
参数而且第二个参数是function就会当作是转换函式
dsv
的API reference说明文件下方有写到
这边以常见的撷取档案来做简单说明
函式 | 说明 |
---|---|
d3.text(input[, init]) | 撷取txt档案,并解析为UTF-8的编码字串 |
d3.json(input[, init]) | 撷取JSON档案并且解析之後放入物件中 |
d3.csv(input[, init][, row]) | 撷取资源最後一个带入的参数可以设定选用转换函式 |
d3.dsv(delimiter, input[, init][, row]) | 传入一个分隔符号,最後的参数可以带入转换函式 |
d3.image(input[, init]) | 撷取资源後解析成为HTML的img元素 |
d3.html(input[, init]) | 撷取资源後解析成为HTMLDocument的元素 |
其他可以fetch的资料参见官方API说明
以下就D3来获取资料,需要注意的地方是由於是开启URL因此必须使用服务器的方式请求你的档案,例如Visual Studio Code的套件LiveServer或者使用Apache开启服务器
撷取资料方法如下
const data = d3.json("populationDensity.json");
data.then((data) => {
console.log(data);
return data;
});
另外也可以支援使用async await
的方式使用,这边接一个立即函式(IIFE)
来执行它
const fn = async function (){
const data = await d3.json("populationDensity.json");
await console.log(data);
}();
程序码如下
const data = d3.csv("populationDensity.csv");
data.then((data)=>{
console.log(data);
})
我们可以看到它会回传一个阵列形式如下图
因此也可以使用console.table
来观看
程序码如下
const data = d3.csv("populationDensity.csv");
data.then((data)=>{
console.table(data);
})
结果就会如下图呈现表格的形式了
程序码如下
const data = d3.html("hello.html");
data.then((data)=>{
console.log(data);
})
可以发现它会自动解析成HTML的Element
程序码如下
const data = d3.image("test.jpg");
data.then((data)=>{
console.log(data);
})
这里可以发现它会自动解析成HTML的img元素
如果对於Fetch
的init
参数有兴趣的话可以看制定HTML标准的协会所写的spec
另外也可以参考MDN的说明文件
以上介绍比较常见的撷取资料格式,接下来将会提到资料绑定的部分。
>>: D22-(9/22)-长荣航(2618)-差了一个字,就是涨倍和涨十倍的差别
没错又是万年的demo作品- TodoList 今天我们先来做最最最阳春的TodoList,只先做简...
前情提要 一般我们要在 App 中显示 PDF 档案,可能会透过 WKWebView 来进行实作 最...
汇出自订 Provider 在介绍共享模组的时候,有提到可以透过 Module 的 exports ...
今天主要是来补足 Day11 和 Day12 简(ㄏㄨㄚˊ)约(ㄕㄨㄟˇ)的部分。 我们会讲两个东西...
Promise 解决了回调地狱,在处理一些需要花费比较长时间的任务时使用 Promise 就可以进行...