axios 入门 的小案例 |掘金日新计划

64 阅读2分钟

一、 Axios简介 1、 Axios是什么?

Axios是一个基于promise的HTTP库,类似于jQuery的ajax,用于http请求。可以应用于浏览器端和node.js,既可以用于客户端,也可以用于node.js编写的服务端。

2.、Axios特性

支持PromiseAPI
拦截请求与响应,比如:在请求前添加授权和响应前做一些事情。
转换请求数据和响应数据,比如:进行请求加密或者响应数据加密。
取消请求
自动转换JSON数据
客户端支持防御XSRF

原文链接:blog.csdn.net/m0_70314224…

css部分

* {

  margin: 0;

  padding: 0;

  box-sizing: border-box;

}

a {

  text-decoration: none;

  color: #333;

}

ul {

  list-style: none;

}

.container {

  width: 980px;

  margin: 0 auto;

}

.container h3 {

  font-size: 18px;

  color: #666;

  font-weight: normal;

  text-align: center;

  line-height: 100px;

}

.container .sub-list {

  background-color: #fff;

}

.container .sub-list ul {

  display: flex;

  padding: 0 32px;

  flex-wrap: wrap;

}

.container .sub-list ul li {

  width: 168px;

  height: 160px;

}

.container .sub-list ul li a {

  text-align: center;

  display: block;

  font-size: 14px;

}

.container .sub-list ul li a img {

  width: 100px;

  height: 100px;

}

.container .sub-list ul li a p {

  line-height: 40px;

}

.container .sub-list ul li a:hover {

  color: var(--xtx-color);

}

.ref-goods {

  background-color: #fff;

  margin-top: 20px;

  position: relative;

}

.ref-goods .head .xtx-more {

  position: absolute;

  top: 20px;

  right: 20px;

}

.ref-goods .head .tag {

  text-align: center;

  color: #999;

  font-size: 20px;

  position: relative;

  top: -20px;

}

.ref-goods .body {

  display: flex;

  justify-content: flex-start;

  flex-wrap: wrap;

  padding: 0 65px 30px;

}

.ref-goods .body .none {

  height: 220px;

  text-align: center;

  width: 100%;

  line-height: 220px;

  color: #999;

}

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <meta http-equiv="X-UA-Compatible" content="IE=edge">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>Document</title>

 <link rel="stylesheet" href="./商品.css">

</head>

<body>

 <div class="container">

  <div class="sub-list">

    <div class="item">

      <h3>分类名字</h3>

      <ul>

        <li>

          <a href="javascript:;">

            <img src="http://zhoushugang.gitee.io/erabbit-client-pc-static/uploads/img/category%20(9).png" alt="">

             <p>巧克力</p>

          </a>

        </li>

        <li>

          <a href="javascript:;">

            <img src="http://zhoushugang.gitee.io/erabbit-client-pc-static/uploads/img/category%20(9).png" alt="">

          <p>巧克力</p>

          </a>

        </li>

        <li>

          <a href="javascript:;">

            <img src="http://zhoushugang.gitee.io/erabbit-client-pc-static/uploads/img/category%20(9).png" alt="">

           <p>巧克力</p>

          </a>

        </li>

      </ul>

    </div>

  


  </div>

 </div>

 <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

 <script>

 /**

     * 目标:把所有商品分类“同时”渲染到页面上

     *  1. 获取所有一级分类数据

     *  2. 遍历id,创建获取二级分类请求

     *  3. 合并所有二级分类Promise对象

     *  4. 等待同时成功后,渲染页面

     *  'http://hmajax.itheima.net/api/category/top'

     * 'http://hmajax.itheima.net/api/category/sub'

     *

    */

   //1.获取所有一级分类素具

   axios({

    url:`http://hmajax.itheima.net/api/category/top`

  


   }).then (res=>{

    const serchList=res.data.data.map(item=>{

      return axios({

        url:'http://hmajax.itheima.net/api/category/sub',

        params:{

          id:item.id

        }        

      })

    })

    const p=Promise.all(serchList)

    p.then(res=>{

      const htmlStr=res.map(item=>{

        let dataObj=item.data.data

        console.log(dataObj);

        return `<div class="item">

      <h3>${dataObj.name}</h3>

      <ul>

        >${dataObj.children.map(item=>{

          return `<li>

            <a href="javascript:;">

              <img src="${item.picture}"/>

              <p>${item.name}</p>

            </a>

          </li>`

        }).join('')}    

      </ul>

    </div>`  

      }).join('')

     document.querySelector('.sub-list').innerHTML=htmlStr

    })

  })

  


  </script>

 

</body>


40B1141D8E22C3E28968A5E8C5859BF8.jpg

今天就水一下吧