CDN React

目錄

  1. CDN 3 個
  2. React CDN Hello World
  3. React CDN 卡片組件

CDN

<!-- 核心庫 -->
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
 <!-- DOM相關 -->
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
 <!-- 支持JSX -->
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>

React

與其他框架類似, React 也需要一個入口點,例如 div#app 如此。

這是一個 React Hello World 案例,一定不要忘記在 script 標簽添加 type="text/babel"

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>react</title>
    <style>
      body {
        font-family: sans-serif;
      }
    </style>
  </head>
  <body>
    <div id="app"></div>
    <!-- 核心庫 -->
    <script
      crossorigin
      src="https://unpkg.com/react@16/umd/react.development.js"
    ></script>
    <!-- DOM相關 -->
    <script
      crossorigin
      src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"
    ></script>
    <!-- 支持JSX -->
    <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>

    <script type="text/babel">
      window.onload = (e) => {
        const app = document.querySelector('#app');
        const element = <h1>Hello World</h1>;
        ReactDOM.render(element, app);
      };
    </script>
  </body>
</html>

React 卡片組件

CDN 的方式使用 React 編寫組件,模仿 堆糖(還差得遠呢):

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>card</title>
    <style>
      body {
        font-family: sans-serif;
      }
      div.container {
        position: relative;
      }
      div.card {
        float: left;
        position: relative;
        top: 0px;
        left: 0px;
        width: 200px;
        border: 1px solid #dcdcdc;
        border-radius: 1px;
        margin: 10px;
      }
      div.card > img {
        width: 190px;
        margin: 5px;
      }
      div.card > p {
        margin: 5px;
      }

      div.comment {
        border-top: 1px solid #dcdcdc;
        width: 90%;
      }
      div.comment > div.left {
        display: inline-block;
        width: 20%;
      }
      div.comment > div.right {
        display: inline-block;
        width: 78%;
      }
      div.comment > div > img {
        margin: 8px 5px;
        border-radius: 15px;
        width: 20px;
        height: 20px;
      }

      div.comment > div > p {
        display: block;
        line-height: 10px;
      }
      div.comment > div > p.comment {
        color: #999;
        font-size: 12px;
      }
    </style>
  </head>
  <body>
    <div id="app"></div>
    <!-- 核心庫 -->
    <script
      crossorigin
      src="https://unpkg.com/react@16/umd/react.development.js"
    ></script>
    <!-- DOM相關 -->
    <script
      crossorigin
      src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"
    ></script>
    <!-- 支持JSX -->
    <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
    <script type="text/babel">
      window.onload = (e) => {
        const app = document.querySelector('#app');

        const imgList = [
          {
            url:
              'https://a-ssl.duitang.com/uploads/item/201905/08/20190508202050_iecsU.thumb.700_0.jpeg',
            content: '你奏凱!!!!!!',
            comment: [
              {
                avator:
                  'https://c-ssl.duitang.com/uploads/item/201906/17/20190617103524_yxzwV.thumb.700_0.jpeg',
                user: '毛九',
                content: '好萌!!!!'
              },
              {
                avator:
                  'https://c-ssl.duitang.com/uploads/item/201906/17/20190617103609_5NYHG.thumb.700_0.jpeg',
                user: '好鴨好鴨',
                content: '好可愛!!!!'
              }
            ]
          },
          {
            url:
              'https://c-ssl.duitang.com/uploads/item/201905/15/20190515232319_XSmQS.thumb.700_0.jpeg',
            content: '不敢看...',
            comment: []
          },
          {
            url:
              'https://c-ssl.duitang.com/uploads/item/201901/30/20190130052011_npvqd.thumb.700_0.jpeg',
            content: '小龍媽',
            comment: []
          },
          {
            url:
              'https://c-ssl.duitang.com/uploads/item/201906/13/20190613194116_lliqi.thumb.700_0.jpeg',
            content: '帥的一批',
            comment: []
          },
          {
            url:
              'https://c-ssl.duitang.com/uploads/item/201906/13/20190613194212_mdfmx.thumb.700_0.jpeg',
            content: 'sunshine',
            comment: [
              {
                avator:
                  'https://c-ssl.duitang.com/uploads/item/201907/15/20190715222710_cuzxl.thumb.700_0.jpg',
                user: '織世',
                content: '收集到  我和星河都甘做你的陪襯'
              },
              {
                avator:
                  'https://c-ssl.duitang.com/uploads/item/201907/10/20190710215420_ljdzi.thumb.700_0.jpeg',
                user: '遠遠',
                content: '陽光美麗'
              }
            ]
          },
          {
            url:
              'https://c-ssl.duitang.com/uploads/item/201906/27/20190627190022_KNGi3.thumb.700_0.jpeg',
            content: '動漫頭像?(?????????)?小鹿搬運',
            comment: []
          },
          {
            url:
              'https://c-ssl.duitang.com/uploads/item/201905/12/20190512193253_vHKLu.thumb.700_0.jpeg',
            content: 'GALeeの自截',
            comment: []
          },
          {
            url:
              'https://c-ssl.duitang.com/uploads/item/201906/17/20190617103603_kLaci.thumb.700_0.jpeg',
            content: '動漫頭像',
            comment: [
              {
                avator:
                  'https://c-ssl.duitang.com/uploads/item/201906/07/20190607162548_bvlif.thumb.700_0.jpg',
                user: '我怎么會這么帥',
                content: '已收藏'
              }
            ]
          }
        ];

        const cardList = imgList.map((v, x) => {
          const comments = v.comment.map((m, y) => {
            return (
              <Comment
                avator={m.avator}
                user={m.user}
                comment={m.content}
                key={y}
              />
            );
          });
          return (
            <div className='container'>
              <Card url={v.url} content={v.content} key={x}>
                {comments}
              </Card>
            </div>
          );
        });

        ReactDOM.render(cardList, app);

        function Card(props) {
          return (
            <div className='card'>
              <img src={props.url} /> <p>{props.content}</p>
              {props.children}
            </div>
          );
        }

        function Comment(props) {
          return (
            <div className='comment'>
              <div className='left'>
                <img src={props.avator} />
              </div>
              <div className='right'>
                <p>{props.user}</p>
                <p className='comment'>{props.comment}</p>
              </div>
            </div>
          );
        }
      };
    </script>
  </body>
</html>

效果圖:


?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 原教程內容詳見精益 React 學習指南,這只是我在學習過程中的一些閱讀筆記,個人覺得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,858評論 1 18
  • 前端開發(fā)面試題 面試題目: 根據(jù)你的等級和職位的變化,入門級到專家級,廣度和深度都會有所增加。 題目類型: 理論知...
    怡寶丶閱讀 2,606評論 0 7
  • 最近看了一本關于學習方法論的書,強調了記筆記和堅持的重要性。這幾天也剛好在學習React,所以我打算每天堅持一篇R...
    gaoer1938閱讀 1,718評論 0 5
  • react簡介 React 起源于 Facebook 的內部項目,因為該公司對市場上所有 JavaScript M...
    宸桐閱讀 3,157評論 2 5
  • It's a common pattern in React to wrap a component in an ...
    jplyue閱讀 3,300評論 0 2