【React + Typescript】使用WebPack包管理、各种扩展插件组成的初始模板,开源协议:CC-BY-4.0

news/2024/7/15 18:38:55 标签: react.js, typescript, webpack

React + Typescript + Webpack 模板

  • 模板展示
  • 项目结构
  • 使用的部分扩展包
  • 页面配置代码
    • Layout 公共容器组件
    • 路由Js
    • package.json
  • 开源模板下载
  • TIP

模板展示

在这里插入图片描述

项目结构

在这里插入图片描述

使用的部分扩展包

📂 System
├── 📂 Plugin
│ ├── 📄 file-loader | 在处理图片文件时,Webpack 会将它们复制到输出目录并生成一个哈希值文件名
│ ├── 📄 style-loader && css-loader | Webpack 将会使用 css-loader 解析 CSS 文件,并使用 style-loader 将其转化为可应用的样式
│ ├── 📄 @babel/preset-typescript | 将 TypeScript 代码转换为 JavaScript 代码
│ └── 📄 @babel/core: “^7.23.5”
│ └── 📄 @babel/preset-typescript: “^7.23.3”
│ └── 📄 @types/styled-components: “^5.1.32”
│ └── 📄 @typescript-eslint/eslint-plugin: “^6.4.0”
│ └── 📄 eslint扩展全家桶
│ └── 📄 customize-cra: “^1.0.0”
│ └── 📄 react-app-rewired: “^2.2.1”
│ └── 📄 customize-cra: “^1.0.0”

页面配置代码

Layout 公共容器组件

import React, { ReactNode } from "react";
import CCV4 from "../cc-by-4.0"

interface LayoutProps {
  children: ReactNode;
}

const Layout: React.FC<LayoutProps> = ({ children } : any) => {
  const layoutStyle: React.CSSProperties = {
    minHeight: "100vh",
    display: "flex",
    flexDirection: "column",
  };
  const mainStyle: React.CSSProperties = {
    backgroundColor: `rgb(248,248,248)`,
    flex: 1,
  };
  const mainFooter: React.CSSProperties = {
    padding: "0 50px",
    display: "flex",
    alignItems: "center",
    justifyContent: "center",
    height: "50px",
    lineHeight: "50px"
  };

  return (
     <div style={layoutStyle}>
      <header>header</header>
      <main style={mainStyle}>{children}</main>
      <footer style={mainFooter}>
        <CCV4></CCV4>
      </footer>
    </div>
  );
};

export default Layout;

路由Js

import React, { Fragment, Component } from "react";
import Home from "../pages/Home/home";
import { BrowserRouter, Route, Routes } from "react-router-dom";

export default class index extends Component {
  render() {
    return (
      <Fragment>
        <BrowserRouter>
          <Routes>
            <Route path="/" element={<Home />} />
          </Routes>
        </BrowserRouter>
      </Fragment>
    );
  }
}

package.json

{
  "name": "blog-react-typescript",
  "version": "1.0.0",
  "author": "starlight-fungus || 東方幻想郷",
  "private": true,
  "dependencies": {
    "@babel/eslint-parser": "^7.23.3",
    "@babel/preset-react": "^7.23.3",
    "@testing-library/jest-dom": "^5.17.0",
    "@testing-library/react": "^13.4.0",
    "@testing-library/user-event": "^13.5.0",
    "@types/jest": "^27.5.2",
    "@types/node": "^16.18.66",
    "@types/react": "^18.2.39",
    "@types/react-dom": "^18.2.17",
    "babel-loader": "^9.1.3",
    "css-loader": "^6.8.1",
    "file-loader": "^6.2.0",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-router": "4.3.1",
    "react-router-dom": "^6.20.0",
    "react-scripts": "5.0.1",
    "style-loader": "^3.3.3",
    "styled-components": "^6.1.1",
    "typescript": "^5.3.2",
    "web-vitals": "^2.1.4",
    "webpack": "^5.89.0",
    "webpack-cli": "^5.1.4"
  },
  "scripts": {
    "start": "react-app-rewired start",
    "webpack-build": "webpack --config webpack.config.js",
    "build-production": "react-app-rewired build mode --production"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@babel/core": "^7.23.5",
    "@babel/preset-env": "^7.23.5",
    "@babel/preset-typescript": "^7.23.3",
    "@types/styled-components": "^5.1.32",
    "@typescript-eslint/eslint-plugin": "^6.4.0",
    "customize-cra": "^1.0.0",
    "eslint": "^8.0.1",
    "eslint-config-airbnb": "^19.0.4",
    "eslint-config-standard-with-typescript": "^40.0.0",
    "eslint-plugin-import": "^2.25.2",
    "eslint-plugin-n": "^15.0.0 || ^16.0.0 ",
    "eslint-plugin-promise": "^6.0.0",
    "eslint-plugin-react": "^7.33.2",
    "eslint-plugin-react-hooks": "^4.6.0",
    "react-app-rewired": "^2.2.1"
  }
}

开源模板下载

React + TypeScript + Webpack => 便捷模板项目(配置完毕)

TIP

本项目使用 cc by 4.0 协议,项目可以随意使用,若出现任何法律纠纷,与项目作者无关


http://www.niftyadmin.cn/n/5238656.html

相关文章

自动化巡检实现方法 (一)------- 思路概述

一、自动化巡检需要会的技能 1、因为巡检要求一天24小时全天在线&#xff0c;因此巡检程序程序一定会放在服务器上跑&#xff0c;所以要对linux操作熟悉哦 2、巡检的代码要在git上管理&#xff0c;所以git的基本操作要熟悉 3、为了更方便不会代码的同学操作&#xff0c;所以整个…

华为云安全组规则

初始发布cce,快被安全组搞死了。现在把自己的研究成果综合一下,在这里给自己留痕,希望对迷惑的朋友有帮助。 先搞懂安全组是个啥东东: 安全组规则 操作场景 安全组实际是网络流量访问策略,通过访问策略可以控制流量入方向规则和出方向规则,通过这些规则可以为加入安全组…

如何诊断处理生产环境服务器变慢

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、CPU利用率 二、磁盘I/O效率 三、内存瓶颈 四、总结 前言 在当今的高科技环境下&#xff0c;生产环境服务器的性能问题可能是…

GitHub上1.5K标星的QA和软件测试学习路线图

​最近在GitHub上发现一个项目&#xff0c;项目描述了作为QA工程师&#xff0c;进行软件测试技能提升时的&#xff0c;建议的软件测试学习顺序图​。 虽然2021年起就不再更新了&#xff0c;但是居然有1.5K的​星。 整个项目有两个部分​&#xff1a; ​1.QA和软件测试学习顺序…

c++ 执行系统命令system 、popen

一、系统命令system 1、示例&#xff1a; #include <cstdlib> // 必须包含这个头文件来使用system()int main() {system("sleep 10"); // 塞执行return 0; }程序会等待10秒后&#xff0c;执行完成使用system("sleep 10 &");可以实现非阻塞执行…

Json.NET 单个对象Json字符串反序列成两个不同实体对象

本文主要介绍Newtonsoft.JSON(Json.NET)中&#xff0c;将一个对象的Json字符串反序化成两个不同的实体对象的方法代码。具体效果如下&#xff1a; Json字符串&#xff1a; [{"guardian_id": "1453","guardian_name": "Foo Bar",&quo…

sql面试题之”找出使用相同ip的用户“

现有一张表&#xff0c;里面有三个字段为user_id、ip、log_time,现有需求要找出用户共同使用ip数量大于等于3个的用户对找出来。 1.表数据准备 --建表语句 create table dms.user_login_log(user_id string ,ip string,log_time string); --插入数据 insert into dms…

Html5响应式全开源网站建站源码系统 附带完整的搭建教程

Html5响应式全开源网站建站源码系统是基于Html5、CSS3和JavaScript等技术开发的全开源网站建站系统。它旨在为初学者和小型企业提供一套快速、简便的网站建设解决方案。该系统采用响应式设计&#xff0c;可以自适应不同设备的屏幕大小&#xff0c;提高用户体验。同时&#xff0…