Vue.js
ItIron2020
终於进到最终的三天了,坦白说做为一个教学的系列文,我是很想多示范几个微型专案做为教学,但我自己在篇幅的分配没有做得很好,明年参加时我会再特别注意的! 我们将利用剩下的三天打造一个简单的COVID-19 tracking dashboard。2020对於许多人来说都不是个好年,新冠肺炎打乱了很多计画,至今半年过去也不见好转的迹象,了解它的趋势我想是很重要的一环,那就自己做一个吧!
这个非常简单的小专案,用我们之前教过的东西就可以打造的小玩意! 做出来的成品会如同以下的demo图片,会持续追踪最近一个月内美国境内的确诊、康复、使用呼吸器&死亡的人数。你也可以在这个连结玩玩看?
在画面的部分我用了一些套件让成品稍微不要这麽单调,其他的部分只要你之前的内容都有听懂,我想也不是什麽大问题的:D
首先一样请你透过vue-cli打造一个专案,preset我们这次仍选择default即可
vue create vue create vue-covid19-tracking-demo
安装完成後,一样进入专案资料夹,但先不要急着启动服务器,我们还有些东西要安装
cd vue-covid19-tracking-demo
接着我们要做一件新的事情~为了让之後可以专心在逻辑处理上,画面的部分这次我们要透过vuetify这个CSS框架来做一点协助,就像bootstrap、elementUI或是Bulma等框架一样,没什麽特别的! 请你透过以下的指令安装vuetify框架
vue add vuetify
安装完成後你应该会顺利看到终端机出现新的提示
我们不太需要额外的设定,这次也选择Default即可
它会需要一点时间安装,当结束後请你输入熟悉的启动指令
npm run serve
你会发现你在localhost:8080看到的画面已经不太一样了
接下来的流程就简单多了,请你输入以下的指令安装这次我们要使用的套件
npm i chart.js vue-chartjs axios dayjs
如果你不想使用axios,想用之前在天气app用过的fetch自然也是没有问题的!
安装完成後我们先做个简单的测试,在这个专案中你看到了一些陌生的东西,像是v-app、v-main等,那些都是vuetify中的语意标签而已~不用太在意! 你目前只要知道所有的城市码都要包含在v-app内,这样就可以了!
我们先把不必要的内容删除,并利用axios看一下是否能正确请求资料。
请你把App.vue档案修改为以下
<template>
<v-app>
<v-main>
<h1>COVID-19 Tracking Dashboard</h1>
</v-main>
</v-app>
</template>
<script>
import axios from 'axios'
export default {
name: 'App',
components: {},
data() {
return {}
},
async created() {
let { data } = await axios.get(
'https://api.covidtracking.com/v1/us/daily.json'
)
console.log(data)
},
}
</script>
顺利的话你会看到这样的画面,记得打开你的devtool~!
我们确实取到了一大串的Array of Objects! 随便点开一个来看吧!
{
"date": 20201010,
"states": 56,
"positive": 7680854,
"negative": 101450947,
"pending": 11223,
"hospitalizedCurrently": 34611,
"hospitalizedCumulative": 422059,
"inIcuCurrently": 6681,
"inIcuCumulative": 21512,
"onVentilatorCurrently": 1668,
"onVentilatorCumulative": 2451,
"recovered": 3062983,
"dateChecked": "2020-10-10T00:00:00Z",
"death": 206133,
"hospitalized": 422059,
"totalTestResults": 114480836,
"lastModified": "2020-10-10T00:00:00Z",
"total": 0,
"posNeg": 0,
"deathIncrease": 663,
"hospitalizedIncrease": 1472,
"negativeIncrease": 953869,
"positiveIncrease": 57206,
"totalTestResultsIncrease": 1133178,
"hash": "799adb52f30ce10e2966d55b40cfcd345135234d"
}
灵琅满目的资料,但我们之後要用到的只有以下几个
最终我们会用这些资料做出六个折线图表!
请你在src/components内新增一个LineChart.vue档案,并写入以下的内容
<script>
import { Line } from 'vue-chartjs'
export default {
extends: Line,
mounted() {
const dates = [
'2020/07/05',
'2020/07/06',
'2020/07/07',
'2020/07/08',
'2020/07/09',
'2020/07/10',
]
const totals = [50, 40, 71, 51, 25, 49]
this.renderChart({
labels: dates,
datasets: [
{
label: 'demo',
data: totals,
},
],
},
{
responsive: true,
maintainAspectRatio: false,
})
},
}
</script>
接着再回到App.vue的部分引入该组件,并加在我们标题的下方
<template>
<v-app>
<v-main>
<h1>COVID-19 Tracking Dashboard</h1>
<LineChart /> //加在这里
</v-main>
</v-app>
</template>
<script>
import axios from 'axios'
import LineChart from './components/LineChart'
export default {
name: 'App',
components: {
LineChart,
},
data() {
return {}
},
async created() {
let { data } = await axios.get(
'https://api.covidtracking.com/v1/us/daily.json'
)
console.log(data)
},
}
</script>
完成後储存你的变更,你应该会看到以下的画面!
一点也不好看,不过至少我们成功弄出个图表了!
在上方的LineChart示范中,有几个点需要特别注意
以上的部分都可以在官方文件中找到,包含你可以传入的options、复数叠合的图表等,有兴趣的可以查看一下!
现在你知道要利用chart.js做出线图需要的资料型态,明天开始我们就会加入一些资料传递,让图表能真正呈现我们透过API取得的资料!
我们今天完成了专案的基本建置,同时介绍了如何利用vue-cli安装前端框架、以及如何利用chart.js制作最最最基本的图表,剩下两天的时间我们会一口气完成这个简单的应用程序,希望过程中能让你有所收获! 那我们就明天见!
此文章同步发布於个人部落格,有兴趣的大大也可以来参观一下:D
<<: 【Day26】建立一个 Bing Search Bot
>>: DAY 26 Django 简易入门教学(三)-建立 Django 专案与 APP
如果我们的电脑有两个摄影机,就会有切换装置的需求,今天我们就来加入这个功能 在 index.html...
Python非同步需要使用到asyncio,简单测试如下 import asyncio import...
前言:最近算是自学到一个阶段~已经开始面试。这次参加铁人赛的主题以 JS 基础知识为主,并会尽量将面...
为什麽会想研究 Annotation Processor ? 在去年的时候,好像 podcast 特...
有的散户确实很认真做功课,但股市瞬息万变,我们的策略今天可以不代表明天也行,获利了除了运气外,也代表...