此次项目是一个移动端的疫情数据信息展示平台,后期会将该项目上传到云平台,有机会的话也可以用于自己出行时使用。
在之前的项目中也有总结的项目初始话的方式,这里简单复一下,如果有需要可以看前面有详细的关于项目初始化的介绍。
vw布局相当于把当前屏幕分成100份,即100vw=750px;
如果想要使用vw布局,需要设置根字体的大小,所以这个在base.css中进行设置。

我们在搭建页面的时候,首先要想到的是将我们的组件进行拆分,毕竟我们使用Vue的目的就是方便我们的组件化拆分嘛!
这里我们先构想一下我们可能涉及到的模块,然后之后我们不够的话可以再添加。
疫情热点信息:这里需要在首页展示疫情热点信息,所以这里直接放在ConInfo模块。
这里我们后台用到的数据全部来自网上现成的免费接口,所以需要我们注册一下。
之所以配置公共的接口,目的是为了方便我们对于发送请求的一个统一管理,这样我们在之后需要修改请求地址的时候,就不用去每一个组件中去寻找了,直接找到我们公共的接口地址修改即可。
接口文件存放地址:src/api/base.js
- /**
- * 公共的请求接口
- **/
- const base = {
- host: 'https://api.tianapi.com', //天行数据
- covInfo: '/ncov/index?key=271aaa17a71d72bf78582a79bdcce075',//疫情病毒信息
- }
-
- export default base;

/src/api/base.js
- /**
- * 公共的请求接口
- **/
- const base = {
- host: 'https://api.tianapi.com', //天行数据
- covInfo: '/ncov/index?key=271aaa17a71d72bf78582a79bdcce075',//疫情病毒信息
- }
- export default base;
/src/api/index.js
- /**
- * 请求接口的方法
- */
- // 引入axios 发送请求
- import axios from "axios";
- //引入接口地址
- import base from './base'
- // 获取请求方法
- const api = {
- /**
- * 从接口获取病毒信息
- */
- getCovInfo() {
- const url = base.host + base.covInfo
- // get请求接受一个参数:请求地址
- // 注意:这里我们只拿到数据,不做解析,解析在对应的组件中进行
- return axios.get(url)
- },
-
- // 自己定义了一个病毒信息对象
- cracteCovInfo() {
- var conInfo={
- note1:'病毒:SARA-CoV-2,其导致疾病命名 COVID-19。',
- note2:'传染源:新冠肺炎的患者.无症状感染者也可能成为传染源。',
- note3:'传染途径:经呼吸道飞沫、接触传播是主要的传播途径。气溶胶传播和消化道传播途径尚待明确。',
- remark1: '易感人群:人群普遍易感。老年人及有基础疾病者感染后病情较重,儿童及婴儿也有发病。',
- remark2: '潜伏期:一般为3~7天,最长不超过14天,潜伏期可能存在传染性,其中无症状病例传染性非常罕见。',
- remark3: '宿主:野生动物,可能为中华菊头蝠。',
- }
- return conInfo
- }
- }
- export default api
/src/api/assets/css/base.css
- /* css初始化文件 */
- body,ul,li,p,h1,h2,h3,h4,h5,h6{
- margin: 0;
- padding: 0;
- }
- ul{
- list-style: none;
- }
- a{
- text-decoration: none;
- color: #333;
- }
- img{
- border: 0;
- }
- /* 移动布局 */
- html{
- font-size: 13.333333vw;
- }
- /* 防止字体过大 */
- @media (min-width:750px) {
- html{
- font-size: 100px;
- }
- }
- body{
- font-size: 14px;
- font-family: '微软雅黑','Arial Narrow',Arial, sans-serif;
- max-width: 750px;
- margin: 0;
- }
-
/src/api/router/index.js
- import Vue from 'vue'
- import VueRouter from 'vue-router'
- import HomeView from '../views/HomeView.vue'
- Vue.use(VueRouter)
- const routes = [
- {
- path: '/',
- name: 'home',
- component: HomeView
- },
- ]
- const router = new VueRouter({
- mode: 'history',
- base: process.env.BASE_URL,
- routes
- })
- export default router
/src/api/views/ConInfo/ConInfo.vue
- <template>
- <div class="info">
- <div class="cov">
- <div class="title">病毒信息div>
- <p>{{ covDesc.note1 }}p>
- <p>{{ covDesc.note2 }}p>
- <p>{{ covDesc.note3 }}p>
- <p>{{ covDesc.remark1 }}p>
- <p>{{ covDesc.remark2 }}p>
- <p>{{ covDesc.remark3 }}p>
- div>
- <div class="hot">
- <div class="title">
- <img src="../../assets/images/hot.png" width="60px" alt="" />
- div>
- <ul>
- <li v-for="item in news" :key="item.id">
- {{ item.title }}
- li>
- ul>
- div>
- div>
- template>
-
- <script>
- export default {
- // 接受父组件传来的信息
- props: {
- covDesc: {
- type: Object,
- default: function () {
- return {};
- },
- },
- news: {
- type: Array,
- default: function () {
- return [];
- },
- },
- },
- };
- script>
- <style lang="scss" scoped>
- .info {
- // 因为我们提前把根标签设置成100px 所以 0.2rem=20px
- padding: 0.2rem;
- .title {
- border-left: 0.1rem solid rgb(20, 49, 128);
- padding-left: 0.1rem;
- margin-bottom: 0.2rem;
- }
- P {
- line-height: 0.5rem;
- color: #666;
- }
- }
- style>
/src/api/views/HomeView.vue
- <template>
- <div class="home">
-
-
- <picture>
- <img src="../assets/images/true.jpg" width="100%" alt="" />
- picture>
- <ConInfo :covDesc="covDesc" :news="news" />
- div>
- template>
-
- <script>
- import ConInfo from "./ConInfo/ConInfo.vue";
- import api from "../api/index";
- export default {
- components: { ConInfo },
- //快捷键:vd 快速创建data模板
- data() {
- return {
- covDesc: {},
- news: [],
- };
- },
- created() {
- // 拿到我们定义好的数据 病毒信息
- this.covDesc = api.cracteCovInfo();
-
- // 请求病毒信息接口=====
- api.getCovInfo().then((res) => {
- console.log(res.data);
- // 获取疫情热点信息
- this.news=res.data.newslist[0].news;
- });
- },
- };
- script>
-
- <style lang="scss" scoped>
- style>
/src/App.vue
- <template>
- <div id="app">
-
- <router-view />
- div>
- template>
-
- <style lang="scss">
- @import url("./assets/css/base.css");
- style>
静态图片我还没有想好以什么形式上传,后续会想办法,项目持续更新中~~~