美文网首页
前端系列(一)yarn + react + antd快速上手

前端系列(一)yarn + react + antd快速上手

作者: onmeiei | 来源:发表于2021-03-01 14:45 被阅读0次

    第一步:安装yarn

    sudo npm install -g yarn
    

    第二步:使用淘宝镜像加速

    yarn config set registry https://registry.npm.taobao.org --global
    yarn config set disturl https://npm.taobao.org/dist --global
    

    第三步:升级nodejs到最新的版本

    sudo yarn global add n
    sudo n lts #升级到最新的长期支持版本
    

    第四步:使用yarn创建react应用,推荐使用typescript

    yarn create react-app demo --template typescript
    

    第五步:进入demo目录,并添加antd和图标库@ant-design/icons

    yarn add antd
    yarn add @ant-design/icons
    

    第六步:重命名src/App.css为src/App.less,修改其内容如下:

    @import '~antd/dist/antd.less';
    @import '~antd/dist/antd.compact.less';
    
    .App {
      text-align: center;
    }
    
    .App-logo {
      height: 40vmin;
      pointer-events: none;
    }
    
    @media (prefers-reduced-motion: no-preference) {
      .App-logo {
        animation: App-logo-spin infinite 20s linear;
      }
    }
    
    .App-header {
      background-color: #282c34;
      min-height: 100vh;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      font-size: calc(10px + 2vmin);
      color: white;
    }
    
    .App-link {
      color: #61dafb;
    }
    
    @keyframes App-logo-spin {
      from {
        transform: rotate(0deg);
      }
      to {
        transform: rotate(360deg);
      }
    }
    

    第七步:安装@craco/craco和craco-less,用于less样式的处理

    yarn add @craco/craco
    yarn add craco-less
    

    在demo目录下,添加craco配置文件craco.config.js

    const CracoLessPlugin = require('craco-less');
    
    module.exports = {
      plugins: [
        {
          plugin: CracoLessPlugin,
          options: {
            lessLoaderOptions: {
              lessOptions: {
                modifyVars: {
                  '@menu-dark-item-active-bg': '#003a8c',
                  '@layout-header-height': '30px',
                },
                javascriptEnabled: true,
              },
            },
          },
        },
      ],
    };
    

    修改package.json,使用craco代替react-scripts

      "scripts": {
        "start": "react-scripts start",
        "build": "react-scripts build",
        "test": "react-scripts test",
        "eject": "react-scripts eject"
      },
    
    修改为
    
      "scripts": {
        "start": "craco start",
        "build": "craco build",
        "test": "craco test",
        "eject": "craco eject"
      },
    

    第八步:启动nodejs,开始工作

    yarn start
    
    启动成功的截图

    第九步:打开浏览器,访问http://localhost:3000

    第一个界面

    第十步:编辑src/App.tsx

    import React from 'react';
    import './App.less';
    
    import { Layout, Menu, Breadcrumb } from 'antd';
    import { UserOutlined, LaptopOutlined, NotificationOutlined } from '@ant-design/icons';
    
    const { SubMenu } = Menu;
    const { Header, Content, Sider } = Layout;
    
    function App() {
      return (
        <div className="App">
          <Layout>
            <Header className="header">
              <div className="logo" />
              <Menu theme="dark" mode="horizontal" defaultSelectedKeys={['2']}>
                <Menu.Item key="1">nav 1</Menu.Item>
                <Menu.Item key="2">nav 2</Menu.Item>
                <Menu.Item key="3">nav 3</Menu.Item>
              </Menu>
            </Header>
            <Layout>
              <Sider width={200} className="site-layout-background">
                <Menu
                  mode="inline"
                  defaultSelectedKeys={['1']}
                  defaultOpenKeys={['sub1']}
                  style={{ height: '100%', borderRight: 0 }}
                >
                  <SubMenu key="sub1" icon={<UserOutlined />} title="subnav 1">
                    <Menu.Item key="1">option1</Menu.Item>
                    <Menu.Item key="2">option2</Menu.Item>
                    <Menu.Item key="3">option3</Menu.Item>
                    <Menu.Item key="4">option4</Menu.Item>
                  </SubMenu>
                  <SubMenu key="sub2" icon={<LaptopOutlined />} title="subnav 2">
                    <Menu.Item key="5">option5</Menu.Item>
                    <Menu.Item key="6">option6</Menu.Item>
                    <Menu.Item key="7">option7</Menu.Item>
                    <Menu.Item key="8">option8</Menu.Item>
                  </SubMenu>
                  <SubMenu key="sub3" icon={<NotificationOutlined />} title="subnav 3">
                    <Menu.Item key="9">option9</Menu.Item>
                    <Menu.Item key="10">option10</Menu.Item>
                    <Menu.Item key="11">option11</Menu.Item>
                    <Menu.Item key="12">option12</Menu.Item>
                  </SubMenu>
                </Menu>
              </Sider>
              <Layout style={{ padding: '0 24px 24px' }}>
                <Breadcrumb style={{ margin: '16px 0' }}>
                  <Breadcrumb.Item>Home</Breadcrumb.Item>
                  <Breadcrumb.Item>List</Breadcrumb.Item>
                  <Breadcrumb.Item>App</Breadcrumb.Item>
                </Breadcrumb>
                <Content
                  className="site-layout-background"
                  style={{
                    padding: 24,
                    margin: 0,
                    minHeight: 280,
                  }}
                >
                  Content
            </Content>
              </Layout>
            </Layout>
          </Layout>
        </div>
      );
    }
    
    export default App;
    
    效果图

    相关文章

      网友评论

          本文标题:前端系列(一)yarn + react + antd快速上手

          本文链接:https://www.haomeiwen.com/subject/zakafltx.html