返回

React+TypeScript+Styled项目搭建指南:从零开始

前端

目录

  • 使用Create-react-app
  • CSS重置
  • 配置SCSS
  • 配置Styled-component
  • 用React Router添加底部导航
  • 引入SVG图标
  • 创建Item组件
  • ...

引言

React是一个强大的JavaScript库,用于构建交互式用户界面。TypeScript是对JavaScript的扩展,增加了类型系统,可以提高代码质量和可维护性。Styled-component是一个流行的CSS-in-JS库,允许我们用JavaScript编写样式,从而提高样式的可重用性和模块化。

本文将带你逐步了解如何使用Create-react-app、React Router、Styled-component、TypeScript和SVG从零搭建一个React+TypeScript+Styled项目。我们从创建一个新的React项目开始,然后介绍如何配置SCSS、Styled-component和React Router。

创建一个React项目

要创建一个新的React项目,请使用create-react-app:

npx create-react-app my-app --template typescript

这将创建一个名为my-app的新项目,它使用TypeScript模板。

CSS重置

为了确保浏览器的默认样式不会影响我们的项目,我们添加一个CSS重置文件:

/* styles/reset.css */

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

配置SCSS

我们使用SCSS来扩展CSS的功能。在package.json中添加sass和sass-loader:

// package.json

{
  "devDependencies": {
    "sass": "^1.53.0",
    "sass-loader": "^13.1.0"
  }
}

在src文件夹中创建styles文件夹并添加一个main.scss文件:

/* styles/main.scss */

@import './reset.css';

body {
  font-family: sans-serif;
}

在webpack.config.js中配置SCSS:

// webpack.config.js

module.exports = {
  module: {
    rules: [
      {
        test: /\.scss$/,
        use: ['style-loader', 'css-loader', 'sass-loader']
      }
    ]
  }
};

配置Styled-component

Styled-component允许我们用JavaScript编写CSS。在package.json中添加styled-components:

// package.json

{
  "devDependencies": {
    "styled-components": "^6.4.1"
  }
}

在src文件夹中创建styled文件夹并添加一个App.styled.js文件:

/* styled/App.styled.js */

import styled from 'styled-components';

const AppContainer = styled.div`
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
`;

export default AppContainer;

用React Router添加底部导航

React Router用于管理应用程序中的路由。在package.json中添加react-router-dom:

// package.json

{
  "dependencies": {
    "react-router-dom": "^6.4.4"
  }
}

在src文件夹中创建components文件夹并添加一个Navigation.js文件:

/* components/Navigation.js */

import { Link } from 'react-router-dom';

const Navigation = () => {
  return (
    <nav>
      <Link to="/">Home</Link>
      <Link to="/about">About</Link>
      <Link to="/contact">Contact</Link>
    </nav>
  );
};

export default Navigation;

在src文件夹中创建pages文件夹并添加一个Home.js文件:

/* pages/Home.js */

const Home = () => {
  return <h1>Home Page</h1>;
};

export default Home;

在App.js中设置路由:

// App.js

import { BrowserRouter, Routes, Route } from 'react-router-dom';
import Navigation from './components/Navigation';
import Home from './pages/Home';

const App = () => {
  return (
    <BrowserRouter>
      <Navigation />
      <Routes>
        <Route path="/" element={<Home />} />
      </Routes>
    </BrowserRouter>
  );
};

export default App;

引入SVG图标

SVG图标可用于添加视觉元素。在public文件夹中创建icons文件夹并添加一个logo.svg文件:

/* public/icons/logo.svg */

<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5 17h-2v-6h-2v6h-2v-8h2v2h2v-2h2v8z"/></svg>

在App.js中导入图标:

// App.js

import logo from './public/icons/logo.svg';

const App = () => {
  return (
    <div>
      <img src={logo} alt="Logo" />
    </div>
  );
};

创建Item组件

Item组件是一个可重用的组件,用于显示项目信息。在src/components文件夹中添加一个Item.js文件:

/* components/Item.js */

import styled from 'styled-components';

const ItemContainer = styled.div`
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px;
  margin: 10px;
  border: 1px solid #ccc;
`;

const ItemImage = styled.img`
  width: 100px;
  height: 100px;
`;

const ItemInfo = styled.div`
  flex: 1;
  margin-left: 20px;
`;

const ItemName = styled.h3`
  font-size: 16px;
`;

const ItemDescription = styled.p`
  font-size: 14px;
`;

const Item = ({ name, description, image }) => {
  return (
    <ItemContainer>
      <ItemImage src={image} alt={name} />
      <ItemInfo>
        <ItemName>{name}</ItemName>
        <ItemDescription>{description}</ItemDescription>
      </ItemInfo>
    </ItemContainer>
  );
};

export default Item;

总结

通过遵循本指南,你将能够从零开始使用React+TypeScript+Styled-component构建一个现代的Web应用程序。你已经了解了如何配置SCSS、Styled-component和React Router,并创建了一个可重用的组件来显示项目信息。随着项目的发展,你可以继续添加功能和改进代码质量,从而创建一个健壮且可维护的应用程序。