React项目实战--------极客园项目PC端

项目介绍:主要将学习到的项目内容进行总结(有需要项目源码的可以私信我)

关于我的项目的配置如下,请注意下载的每个版本不一样,写的api也不一样

一、项目介绍

1.资料

1)短信接收&M端演示:极客园icon-default.png?t=N7T8http://geek.itheima.net

2)PC端接口文档:极客园PCicon-default.png?t=N7T8http://geek.itheima.net/api-pc.html

2.项目介绍

1)【极客园】对标CSDN、博客园等竞品,致力成为更加贴近年轻IT从业者(学员)的科技资讯类应用

2)产品关键词:IT、极客、活力、科技、技术分享、前沿动态、内容社交

3)产品用户特点:年轻有活力,对IT领域前沿科技信息充满探索欲和学习热情

4)极客园PC端项目:个人自媒体管理端

5)项目演示

6)项目功能

  • 登录
  • 首页
  • 内容管理(文章列表、发布文章、修改文章)

3.技术栈

  • react v17.0.2 / react-dom v17.0.2
  • ajax请求库:axios
  • 路由:react-router-dom以及history
  • 富文本编辑器:react-quill
  • CSS预编译器:sass
  • UI组件库:antd v4
  • 项目搭建:React官方脚手架 create-react-app

二、项目搭建

1.创建项目

  1. 使用React CLI搭建项目 npx create-react-app geek-pc
  2. 进入项目根目录:cd geek-pc
  3. 启动项目: yarn start
  4. 调整项目目录结构:

2.使用git管理项目

3.配置基础路由

​​​​​​​1)安装路由:yarn add react-router-dom

​​​​​​​

使用yarn add的时候可能会报上述错误,报的话可以使用npm install react-router-dom来进行安装

2)在pages目录中创建两个页面:Login(登录页面)、Layout(首页)

3)在App.js中配置路由

import React from 'react'
import { BrowserRouter as Router, Route, Link, Routes } from 'react-router-dom'
import Login from './pages/Login'
import Layout from './pages/Layout'
function App() {
  return (
    <Router>
      <div className="App">
        {/* <Link to="/login">登录</Link>
        <Link to="/home">首页</Link> */}
        {/* 配置路由的规则 */}
        <Routes>
          <Route path="/home" element={<Layout />}></Route>
          {/* <Route path="/home" component={<Layout></Layout>}></Route> */}
          <Route path="/login" element={<Login></Login>}></Route>
        </Routes>
      </div>
    </Router>
  )
}

export default App

配置完路由就可以实现,网页输入网址,展示对应的页面的内容

此时需要注意的点是:

a.老版本用component = {<Layout/>}来链接到页面,新版本用这个无效,得使用element

b:旧版本使用Switchl来添加多个路由,新版本使用Routes

<Switch>
 <Route> </Route>
 <Route></Route>
</Switch>

4.组件库---antd

1)官方文档链接

Ant Design - 一套企业级 UI 设计语言和 React 组件库

2)antd是基于Ant Design设计体系的React UI组件库,主要用于研发企业级中后台产品

3)开箱即用

a.安装:npm install antd

b.使用

import { Button, DatePicker, Card } from 'antd'
<Button type="primary">我是一个按钮</Button>

// 导入antd的全局样式
import 'antd/dist/reset.css'

三、项目功能------登录

功能如下:​​​​​​​

  • 搭建登录页面结构
  • 登录表单校验
  • 登录逻辑
  • 封装处理token、axios的工具函数
  • 登录访问控制

​​​​​​​1.Card组件的使用

export default class Login extends Component {
  render() {
    return (
      <div className="login">
        {/* 登陆组件 */}
        {/* <Button type="primary">我是一个按钮</Button> */}
        {/* <DatePicker></DatePicker>  */}
        {/* <Card extra={<a href="#">More</a>} style={{ width: 300 }}> */}
        <Card className="login-container">
          {/* <p>Card content</p>
          <p>Card content</p>
          <p>Card content</p> */}
          <img src={logo} className="login-logo" />
          
        </Card>
      </div>
    )
  }
}

2.准备样式

.login {
  width: 100vw;
  height: 100vh;
  background-image: url('../../assets/login.png');
  position: relative;
}
.login-container {
  width: 440px;
  height: 360px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.login-logo {
  width: 200px;
  height: 40px;
  display: block;
  margin: 0 auto 20px;
}

3.使用绝对路径导入图片

我们使用相对路径../导入图片可能存在文件位置移动找不到图片的效果,所以使用绝对路径来配置

Importing a Component | Create React App

1)在项目根目录下创建jsconfig.json文件

{
  "compilerOptions": {
    "baseUrl": "src"
  },
  "include": ["src"]
}

2)导入删除掉相对路径

import logo from 'assets/logo.png'

4.使用sass文件修改掉css文件

1)安装sass

2)将css文件后缀改为.sass

3)使用sass以后就可以实现样式包裹,但是里面如果使用绝对路径会进行报错,所以需要使用~来进行导入

.login {
  width: 100vw;
  height: 100vh;
  background-image: url('~assets/login.png');
  position: relative;

  .login-container {
    width: 440px;
    height: 360px;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
  }

  .login-logo {
    width: 200px;
    height: 40px;
    display: block;
    margin: 0 auto 20px;
  }
}

5.

​​​​​​​

​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/319329.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python学习】Python学习16- 文件I/O

目录 【Python学习】Python学习16- 文件I/O 前言打印读取键盘输入打开和关闭文件open 函数access_mode值参考&#xff1a;File对象的属性 文件定位重命名和删除文件rename() 方法remove()方法 Python里的目录mkdir()方法chdir()方法getcwd() 方法rmdir()方法 参考 文章所属专区…

使用 rosdep 管理依赖关系

什么是rosdep&#xff1f; rosdep是 ROS 的依赖管理实用程序&#xff0c;可以与 ROS 包和外部库一起使用。 是一个命令行实用工具&#xff0c;用于标识和安装依赖项以生成或安装包。 在以下情况下&#xff0c;可以调用或调用它&#xff1a;rosdep 构建工作区并需要适当的依赖项…

设计模式之解释器模式【行为型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

基于FFmpeg的简单Android视频播放器

1. 模块分割 首先对这个视频播放器所采用的一些部件要清楚。这个播放器主要可以拆分为4个部分&#xff1a; 1.解码&#xff1a;FFmpeg 2.音频输出&#xff1a;OpenSLES 3.视频渲染&#xff1a;OpenGLES 这些框架都是基于C的api&#xff0c;因此这次我们的主要工作将会集中…

龙蜥操作系统上安装MySQL:步骤详解与常见问题解决

目录 博客前言 一.下载MySQL 1.官网下载 2.上传文件到龙蜥操作系统中 ​编辑二.安装MySQL 1.检查操作系统中的默认数据库并移除 2.创建文件夹解压 3.开始安装 4.启动服务 ​编辑 5.登录修改密码&#xff0c;进行授权 三.第三方工具连接&#xff08;naviact&#xff…

计网期末复习(一)

计网期末复习&#xff08;一&#xff09; – WhiteNights Site 标签&#xff1a;计算机网络 诶&#xff0c;期末。诶&#xff0c;复习。 TCP/IP参考模型的网络层提供的是&#xff1f; 区别于传输层&#xff0c;网络层提供不可靠无连接的数据报服务 当时看到TCP/IP就选了可靠有…

物联网智能控制器—福建蜂窝物联网科技有限公司

什么是物联网智能控制器&#xff1f; 物联网智能控制器是蜂窝物联自主研发的一种远程测控设备(RTU)&#xff0c;负责对现场信号、工业设备的监测和控制。本质上是一个模块化封装的微型计算机设备&#xff0c;将相应的一些功能进行了封装&#xff0c;无需进行电路设计和硬件程序…

QT -狗狗管理工具

QT -狗狗管理工具 一、演示效果二、UML三、关键代码四、程序链接 一、演示效果 二、UML 三、关键代码 #include <QFrame> #include <QHBoxLayout> #include <QVBoxLayout> #include <QLabel> #include <QSizePolicy> #include <QDialog> …

【开发日记】IDEA“找不到或无法加载主类”问题

记录一个研究了两个小时的“玄学”问题找不到或无法加载主类。 ​1、问题 使用IDEA启动SpringBoot项目显示找不到或无法加载主类。 2、解决经历 尝试了很多种解决方法都没有解决&#xff0c;下面是我网上查询后尝试的一些方法。这些方法我都没有解决问题&#xff0c;是因为…

【开源】基于JAVA+Vue+SpringBoot的医院门诊预约挂号系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2 科室医生档案模块2.1.3 预约挂号模块2.1.4 医院时政模块 2.2 可行性分析2.2.1 可靠性2.2.2 易用性2.2.3 维护性 三、数据库设计3.1 用户表3.2 科室档案表3.3 医生档案表3.4 医生放号…

统信UOS操作系统上禁用IPv6

原文链接&#xff1a;统信UOS操作系统上禁用IPv6 hello&#xff0c;大家好啊&#xff01;继之前我们讨论了如何在麒麟KYLINOS上禁用IPv6之后&#xff0c;今天我要给大家带来的是在统信UOS操作系统上禁用IPv6的方法。IPv6是最新的网络通信协议&#xff0c;但在某些特定的网络环境…

iOS隐藏TextFiled控件输入键盘

1.效果: 显示数字键盘 显示优化键盘 切换键盘,并修改Return为Done 输出完成后,点击done隐藏键盘 2.主要实现代码: ViewController中实现接口UITextFieldDelegate 关联控件与变量 注册控件委委托 实现接口方法textFieldShouldReturn以隐藏键盘 如果要实现textfield输入长度控…

scroll-view在小程序页面里实现滚动,uniapp项目

要实现红框中的区域进行滚动,scroll-view必须写高 <template><!-- 合同-待确认 --><view class"viewport"><!-- 上 --><view class"top-box"><!-- tab --><view class"tabs"><textv-for"(ite…

MySQL 从零开始:06 数据检索

文章目录 1、数据准备2、限制结果3、完全限定名4、排序检索 所谓数据检索&#xff0c;就是前面所讲的”增删改查“的”查“。 注&#xff1a;本文使用的“行”指数据表中的“记录”&#xff0c;“列”指数据表中的“字段”。 在第四节《表的增删改查》中已经介绍了 select 查询…

【elastic search】详解elastic search集群

目录 1.与集群有关的一些概念 2.集群搭建 3.集群搭建 4.kibana链接集群 5.选举流程 6.请求流程 7.master的作用 1.与集群有关的一些概念 数据分片&#xff1a; 数据分片&#xff08;shard&#xff09;&#xff0c;单台服务器的存储容量是有限的&#xff0c;把一份数据…

Gin CORS 跨域请求资源共享与中间件

Gin CORS 跨域请求资源共享与中间件 文章目录 Gin CORS 跨域请求资源共享与中间件一、同源策略1.1 什么是浏览器的同源策略&#xff1f;1.2 同源策略判依据1.3 跨域问题三种解决方案 二、CORS:跨域资源共享简介(后端技术)三 CORS基本流程1.CORS请求分类2.基本流程 四、CORS两种…

供应链+低代码,实现数字化【共赢链】转型新策略

在深入探讨之前&#xff0c;让我们首先明确供应链的基本定义。供应链可以被理解为一个由采购、生产、物流配送等环节组成的网状系统&#xff0c;它始于原材料的采购&#xff0c;经过生产加工&#xff0c;最终通过分销和零售环节到达消费者手中。 而数字化供应链&#xff0c;则是…

prometheus普罗米修斯持久化

1.安装普罗米修斯 按照以下步骤进行操作&#xff1a; 首先&#xff0c;打开普罗米修斯的官方网站&#xff08;https://prometheus.io&#xff09;。在网站顶部的菜单中&#xff0c;选择"Downloads"&#xff08;下载&#xff09;选项。在下载页面中&#xff0c;找到…

启英泰伦推出「离线自然说」,离线语音交互随意说,不需记忆词条

离线语音识别是指不需要依赖网络&#xff0c;在本地设备实现语音识别的过程&#xff0c;通常以端侧AI语音芯片作为载体来进行数据的采集、计算和决策。但是语音芯片的存储空间有限&#xff0c;通过传统的语音算法技术&#xff0c;最多也只能存储数百条词条&#xff0c;导致用户…

c语言学生管理系统

创建结构体里面包含学生的各种信息。 struct xs {int xh;char xm[20];int gs, yy, wl;double pj;struct xs* next; }; 创建菜单 void menu() {printf("\n************************************\n");printf("* 学生管理系统&#xff08;1.0&#xff0…
最新文章