|   1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
 | function Book(props) {
  const { book, imgStyle={} } = props;
  return React.createElement(
    "a",
    {
      href: book.jingdong_url,
    },
    React.createElement(
      "img",
      {
        src: book.image_url,
        style: {
          width: 100,
          border: "#dddddd 1px solid",
          ...imgStyle,
        },
      },
    ),
  );
}
function BookList(props) {
  const { books, style={} } = props;
  return React.createElement(
    "ul",
    {
      style: {
        listStyle: "none",
        display: "flex",
        flexWrap: 'wrap',
        padding: 0,
      },
    },
    books.map(book => React.createElement(
      "li",
      {
        key: book.name,
        style: {
          margin: "10px 5px",
        },
      },
      React.createElement(
        Book,
        {
          book,
        },
      ),
    )),
  );
}
function BookSection(props) {
  const { section } = props;
  return React.createElement(
    "section",
    null,
    React.createElement(
      "h1",
      null,
      section.name,
    ),
    React.createElement(
      BookList,
      {
        books: section.books,
      },
    ),
  );
}
const sections = [
  {
    "name": "编程语言/JavaScript",
    "books": [
      {
        "name": "JavaScript权威指南",
        "image_url": "https://cdn.fasionchan.com/p/e0756b1825f86a90994ce4bb2500624c4fdf1929.jpg",
        "jingdong_url": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BAMUJK1olXDYAVVhcD0oXCl9MRANLAjZbERscSkAJHTdNTwcKBlMdBgABFkkWBW4PGlscQl9HCANtEhBAaDQBElh3XlpKCyAuEgoVQ2sPXVcZbQcyVF9cCUoWAmkBHGslXQEyHzBcOEonA2gME1MRWw8KV1dVCHsQA2Y4TAtXBVhdBgcNVyVLM184GGsSXQ8WUiwcWl8RcV84G2sWbURsVFhZDUMUCzwJT1pAWFVVXQ1aDxkXBmkJHwgcCgcFUV5tCkoWB2Y4Kw"
      },
      {
        "name": "JavaScript高级程序设计",
        "image_url": "https://cdn.fasionchan.com/p/ea43461ed636d5f5eaec230fa0c01b458d8383eb.jpg",
        "jingdong_url": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BAM4JK1olXDYCV1ZZAU8eAl9MRANLAjZbERscSkAJHTdNTwcKBlMdBgABFksUC2sBH1IUQl9HCANtXhlUZBJ0Ti52XmRlVQdccTJSfTxfa1cZbQcyVF9cCUoWAmkBHGslXQEyAjBdCUoWAm4NH1wSbQcyVFlZAEMTBWcLHl4RXzYFVFdtXxtVWzFXSQJFAmheZG5tC3sQA2YcHSlUDxIEJm5tCHsUMy1mSVMdDgcKBg5UDhhHBjgBGwsTCVVRAVteXRwfU2wPS1glXwcDUFdtOA"
      },
      {
        "name": "JavaScript语言精粹",
        "image_url": "https://cdn.fasionchan.com/p/6a3da198a07137d09d907eec4335a9cb7f4dcd83.jpg",
        "jingdong_url": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BAM4JK1olXDYCV1dcAEMTBV9MRANLAjZbERscSkAJHTdNTwcKBlMdBgABFksUCm4AE18TQl9HCANtdz1LaB9NGQdwIlp6FSUqYCBfVQ9NTVcZbQcyVF9cCUoWAmkBHGslXQEyAjBdCUoWAm4NG14WbQcyVFlZAEMTCm4IHFwcVTYFVFdtXxtVWzFXSQJFAmheZG5tC3sQA2YcHSlUDxIEJm5tCHsUMy1mT1scVVUAXVhYC0kRBj0PGggcXFRQUVlaAUkWCmYME10lXwcDUFdtOA"
      },
      {
        "name": "JavaScript设计模式与开发实践",
        "image_url": "https://cdn.fasionchan.com/p/cae8752ad06201cdda82939da97c1e4b500d62b3.jpg",
        "jingdong_url": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BAM4JK1olXDYCVl1aDEkVBl9MRANLAjZbERscSkAJHTdNTwcKBlMdBgABFksVAGgMGVkQQl9HCANtQ1V1d3VtUhN3AnxpFggkU0pnfjZ6a1cZbQcyVF9cCUoWAmkBHGslXQEyAjBdCUoWAm4NH1wSbQcyVFlaCUoWB2sAEl0cVDYFVFdtXxtVWzFXSQJFAmheZG5tC3sQA2YcHSlUDxIEJm5tCHsUMy1mSwsTVQ4KUAtcCRgRBmxbH1NGDwAHBllcXUlHUWcNHg4lXwcDUFdtOA"
      },
      {
        "name": "你不知道的JavaScript(上卷)",
        "image_url": "https://cdn.fasionchan.com/p/ee1d97ffe30a426a9ede54f0967cddde873c3690.jpg",
        "jingdong_url": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BAM4JK1olXDYCV1dUAE4QBV9MRANLAjZbERscSkAJHTdNTwcKBlMdBgABFksUCmYAHlwTQl9HCANtchhTBCt_bEVwPmR4CS5DYw9NY2wLa1cZbQcyVF9cCUoWAmkBHGslXQEyAjBdCUoWAWgJGVoWbQcyVFlZAEMTBWcMGVMcXTYFVFdtXxtVWzFXSQJFAmheZG5tC3sQA2YcHSlUDxIEJm5tCHsUMy1mGlpBCAcFVVoPCEoRBm9aGlNAVQIGAwtUAUgQVGgLHFglXwcDUFdtOA"
      },
      {
        "name": "你不知道的JavaScript(中卷)",
        "image_url": "https://cdn.fasionchan.com/p/cb6362f73ffd3cc3653433a084a625184c218e2c.jpg",
        "jingdong_url": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BAMUJK1olXDYAVVtdCUgTBV9MRANLAjZbERscSkAJHTdNTwcKBlMdBgABFkkWBm8JGF8TQl9HCANtAU0UdwxYGSF3OwEEJl0taT1kHRhRe1cZbQcyVF9cCUoWAmkBHGslXQEyHzBcOEonA2gME1MRVAUKXF1ZDHsQA2Y4TAtXBVhdBgcNVyVLM184GGsSXQ8WUiwcWl8RcV84G2sWbURsVgsJX09DUGgKHF4SWFFSVw5cXUkTBDgIHQxBXlIAV1dtCkoWB2Y4Kw"
      },
      {
        "name": "你不知道的JavaScript(下卷)",
        "image_url": "https://cdn.fasionchan.com/p/29d4a49e48512a9053b88b14247c26279dee594b.jpg",
        "jingdong_url": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BAM4JK1olXDYCV11VCEIRBl9MRANLAjZbERscSkAJHTdNTwcKBlMdBgABFksUAGcIEl0QQl9HCANtb05TdidJZBtwIVZdFyU0fUtXQStgXVcZbQcyVF9cCUoWAmkBHGslXQEyAjBdCUoWAm4NH1wSbQcyVFlZAEMTBWcAG10cVDYFVFdtXxtVWzFXSQJFAmheZG5tC3sQA2YcHSlUDxIEJm5tCHsUMy1mS18SCgJVVwsKARsSBm4LTlIVWAELVQ5aWkhCA2YNEl0lXwcDUFdtOA"
      }
    ]
  },
  {
    "name": "Web前端/React",
    "books": [
      {
        "isbn": "9787519856540",
        "name": "React学习手册",
        "image_url": "https://cdn.fasionchan.com/p/157e6c7ff5fbe889405c922065280027930cc929.jpeg",
        "jingdong_url": "https://union-click.jd.com/jdc?e=618%7Cpc%7C&p=JF8BAM4JK1olXDYCV11UAUoWCl9MRANLAjZbERscSkAJHTdNTwcKBlMdBgABFksUAGYBGlocQl9HCANtakJ-AippYCdwBlZ_Ti0Db0MVVj1UXVcZbQcyVF9cCUoWAmkBHGslXQEyAjBdCUoWAm4MH14dbQcyVFlZAEoQAW4JH1ITWjYFVFdtXxtVWzFXSQJFAmheZG5tC3sQA2YcHSlUDxIEJm5tCHsUMy1mGgsQD1YCXV5bCxkRBmxYGlNFVQcFVAtbCE8UC24LTFwlXwcDUFdtOA"
      }
    ]
  }
];
const element = React.createElement(
  "div",
  {
    style: {
      width: 500,
    },
  },
  sections.map(section => React.createElement(
    BookSection,
    {
      key: section.name,
      section,
    },
  )),
);
const container = document.querySelector('#root');
const root = ReactDOM.createRoot(container);
root.render(element);
 |