返回

打造炫酷大屏展示页

前端

前言

今年的11月初,我们公司参加了「2017年亚洲幼教年会(APEAC)」并取得了很不错的成果。本人有幸负责关于这次展示页的前端开发,特以此文记录开发过程中的关键环节。

展示页分为三大模块:数据展示、动态展示和地图展示。效果如下:

[展示页效果图]

数据展示模块

此模块展示我们公司至今为止的各项数据,通过异步请求从后端获取数据,并使用图表库进行展示。

1. 数据请求

数据请求是整个模块的核心,需要保证数据的准确性和及时性。我们使用的是Axios库来发送异步请求,并使用Promise来处理异步请求的结果。

// 导入Axios库
import axios from 'axios';

// 发送异步请求
axios.get('/api/data')
  .then((response) => {
    // 请求成功,处理数据
    const data = response.data;
    // 使用图表库进行展示
    const chart = new Chart(document.getElementById('chart'), {
      type: 'bar',
      data: {
        labels: data.labels,
        datasets: [{
          label: '数据',
          data: data.data
        }]
      }
    });
  })
  .catch((error) => {
    // 请求失败,处理错误
    console.error(error);
  });

2. 图表展示

数据请求成功后,就可以使用图表库进行展示了。我们使用的是Chart.js库,这是一个简单易用的图表库,支持多种类型的图表。

// 导入Chart.js库
import Chart from 'chart.js';

// 创建图表
const chart = new Chart(document.getElementById('chart'), {
  type: 'bar',
  data: {
    labels: data.labels,
    datasets: [{
      label: '数据',
      data: data.data
    }]
  }
});

动态展示模块

此模块展示我们公司的一些动态信息,如新闻、公告等。数据也是通过异步请求从后端获取的,并使用列表的方式进行展示。

1. 数据请求

动态展示模块的数据请求与数据展示模块类似,也是使用Axios库发送异步请求,并使用Promise来处理异步请求的结果。

// 导入Axios库
import axios from 'axios';

// 发送异步请求
axios.get('/api/news')
  .then((response) => {
    // 请求成功,处理数据
    const data = response.data;
    // 使用列表的方式进行展示
    const list = document.getElementById('list');
    data.forEach((item) => {
      const li = document.createElement('li');
      li.innerHTML = `
        <a href="${item.url}">${item.title}</a>
        <p>${item.content}</p>
      `;
      list.appendChild(li);
    });
  })
  .catch((error) => {
    // 请求失败,处理错误
    console.error(error);
  });

2. 列表展示

数据请求成功后,就可以使用列表的方式进行展示了。我们使用的是简单的HTML和CSS来实现列表。

<ul id="list"></ul>
#list {
  list-style-type: none;
  padding: 0;
  margin: 0;
}

#list li {
  padding: 10px;
  margin-bottom: 10px;
  background-color: #f2f2f2;
}

#list li a {
  text-decoration: none;
  color: #333;
}

地图展示模块

此模块展示我们公司在全国各地的业务分布情况。数据也是通过异步请求从后端获取的,并使用地图库进行展示。

1. 数据请求

地图展示模块的数据请求与数据展示模块和动态展示模块类似,也是使用Axios库发送异步请求,并使用Promise来处理异步请求的结果。

// 导入Axios库
import axios from 'axios';

// 发送异步请求
axios.get('/api/map')
  .then((response) => {
    // 请求成功,处理数据
    const data = response.data;
    // 使用地图库进行展示
    const map = new Map(document.getElementById('map'), {
      center: [39.91, 116.40],
      zoom: 5
    });
    data.forEach((item) => {
      const marker = new Marker(map, {
        position: [item.lat, item.lng],
        title: item.name
      });
    });
  })
  .catch((error) => {
    // 请求失败,处理错误
    console.error(error);
  });

2. 地图展示

数据请求成功后,就可以使用地图库进行展示了。我们使用的是Mapbox GL JS库,这是一个功能强大的地图库,支持多种地图样式和数据源。

// 导入Mapbox GL JS库
import mapboxgl from 'mapbox-gl/dist/mapbox-gl.js';

// 创建地图
const map = new mapboxgl.Map({
  container: 'map',
  style: 'mapbox://styles/mapbox/streets-v11',
  center: [39.91, 116.40],
  zoom: 5
});

// 添加标记
data.forEach((item) => {
  const marker = new mapboxgl.Marker({
    color: '#f00'
  })
  .setLngLat([item.lat, item.lng])
  .addTo(map);
});

结语

以上就是在「2017年亚洲幼教年会(APEAC)」上展示页的开发过程中的关键环节。希望本文对您有所帮助。