引入antd组件样式_个人作品:一个技术栈koa2+ mysql+react + antd的个人博客

63164d83c3f40898747409bac8d01523.png

前言

此项目是个人博客,有前端界面+后台管理系统;目的是当做react和node的练手项目,同时还可以了解到服务器nginx部署web站点以及备案和域名的基本操作流程。

项目预览地址

https://www.lxsblog.cn​www.lxsblog.cn

GitHub地址

LinWeb/blog​github.com
88d1e42532db365e106f803974b71464.png

体验地址

- 博客主页

林大大的博客​39.105.133.130:8088

- 后台管理系统,管理员账号密码:admin/admin

林大大的博客​39.105.133.130:8088

界面截图

- 博客主页

47a529855d35afd6a1d59912f558b050.png

- 后台系统主页

a6238b8f18dc5107df3130a5bff8c7ce.png

技术栈

- 前端技术栈

react + antd + react-router + react-redux + axios

- 后端技术栈

koa2 + koa-router + mysql + sequelize

项目结构详解

97960e9d97e91fa736c461cbe6b4d64b.png

项目运行

- 配置数据库

安装mysql,新建一个名称叫“**blog**”的数据库

- 安装依赖

项目根目录和根目录的app目录下分别安装

npm install

- 启动项目

项目根目录和根目录的app目录下分别启动

npm start

后台模块

- 文章

- 文章列表

- 文章详情

- 标签筛选

- 分类筛选

- 新增文章

- 删除文章

- 更新文章

- 标签

- 标签列表

- 分类

- 分类列表

- 评论

- 评论列表

- 新增评论

- 删除评论

- 回复

- 新增回复

- 删除回复

- 用户

- 注册用户

- 用户登录

- 用户列表

- 删除用户

- 更新用户

- 校验用户名是否已注册过

项目优化

目前,已优化了一部分,首次加载需要3,4秒的时间,由于目前租的云服务器的宽带只有1M。

到现在做的优化有以下几点:

* antd做按需加载

* highlight.js高亮依赖包只引入需要的模块

* 前端webpack+nginx 使用GZIP压缩,不采用koa后端压缩,减少I/O的消耗

* webpack配置splitChunks切割模块代码,生成多个模块js文件

* 采用自定义高阶组件bundle.js+import(''),按需动态加载组件

持续优化中~

项目总结

- 开始做这个项目的时候,先明确项目的需求,然后设计好数据表,考虑到数据表的联系

- 因为项目是使用sequelize操作mysql,所以要提前了解开发文档,不然会走很多坑

- 个人来说,使用react的一个缺点是对数据监听方面没有vue用起来顺畅

- 使用antd这个react组件库,带来了界面设计方面的便利,自己只是再做一些样式的优化即可

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java ObjectOutputStream writeLong()方法与示例

ObjectOutputStream类writeLong()方法 (ObjectOutputStream Class writeLong() method) writeLong() method is available in java.io package. writeLong()方法在java.io包中可用。 writeLong() method is used to write the given 8 bytes long value. writeLong()方法用于写…

浅谈Jfinal急速开发框架

2019独角兽企业重金招聘Python工程师标准>>> 使用Jfinal一段时间了,记得当初14年吧,为了建立一个简单的门户网站,想找个轻量型的急速开发框架,然后搜到Jfinal,然后用了一段时间后,确实不错, 现在吧,随着时间的推移,作者对JFinal的版本迭代也是一直在努力,一直朝着优…

make 怎么降级_Ubuntu 中将 make 的版本降低

最新的 Ubuntu 版本使用的是 make 版本是 4.0.在编译 Android4.4 源码包时,由于 make 版本过高,命令提示行会提示编译 Android4.4 源码包需要 make 的版本为 3.81 或 3.82.build/core/main.mk:42: ****************************************************…

Java ObjectOutputStream writeChar()方法与示例

ObjectOutputStream类writeChar()方法 (ObjectOutputStream Class writeChar() method) writeChar() method is available in java.io package. writeChar()方法在java.io包中可用。 writeChar() method is used to write 2 bytes of a character value. writeChar()方法用于写…

虚拟机的管理

我们采用虚拟机的原因是什么呢,很简单就俩字: 节能 1. 管理虚拟机的命令: virt-manager开启虚拟机管理器virsh list显示正在运行的虚拟机virsh list --all查看所有虚拟机virsh start desktop打开虚拟机virsh shutdown desktop正常关闭虚拟机…

mybatis对java自定义注解的使用——入门篇

转自;https://www.cnblogs.com/sonofelice/p/4980161.html 1. 最近在学习spring和ibatis框架。 以前在天猫实习时做过的一个小项目用到的mybatis,在其使用过程中,不加思索的用了比较原始的一种持久化方式: 在一个包中写一个DAO的接…

Java BigDecimal toBigIntegerExact()方法(带示例)

BigDecimal类的toBigIntegerExact()方法 (BigDecimal Class toBigIntegerExact() method) toBigIntegerExact() method is available in java.math package. toBigIntegerExact()方法在java.math包中可用。 toBigIntegerExact() method is used to convert this BigDecimal int…

Linux中的软件管理

1. 使用已有的网络安装资源安装软件 cd /etc/yum.repos.d/ (移动到yum源指向的文件配置目录下) vim westos.repo (新建文件,yum下后缀必须为.repo) 编辑这个文件里面写 [redhat] (软件仓库名称) namefirefox &#x…

楚留香ai人脸识别_戴口罩居然也能人脸识别?这些AI黑科技真的藏不住了.........

当人工智能遇见影像技术,将会释放出多少意想不到的巨大能量?「喔图知图实验室」瞄准当下的影像痛点,持续发力升级AI黑科技,带来两大必杀技——人脸识别再度升级、AI智能旋转校正。戴口罩也能识别——人脸识别升级戴口罩人脸识别如…

android--------Popupwindow的使用

2019独角兽企业重金招聘Python工程师标准>>> PopupWindow在Android.widget包下,项目中经常会使用到PopupWindow做菜单选项, PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮…

使用JavaScript中的示例的escape()函数

While transferring the data over the network or sometimes while saving data to the database, we need to encode the data. The function escape() is a predefined function in JavaScript, which encodes the given string. 在通过网络传输数据或有时将数据保存到数据库…

安装虚拟机的脚本

1. 先安装生成自动安装脚本的工具 yum install system-config-kickstart -y 2. 打开这个软件 system-config-kickstart 基本设置:更改时区为上海,设置root用户密码 2)设置安装方法为网络安装,将共享的镜像文件地址正确填写 3&…

小小小游戏

写着玩 FlappyBird 视频:https://pan.baidu.com/s/1sljIR5z 游戏:https://pan.baidu.com/s/1ge8j7Ej 项目:https://pan.baidu.com/s/1eSysxpw Breakout 视频:https://pan.baidu.com/s/1gfhv4hd 项目:https://pan.baidu.com/s/1hs8xPly QBert 视频:https://pan.baidu.com/s/1s…

go在方法中修改结构体的值_[Go]结构体及其方法

结构体类型可以包含若干字段,每个字段通常都需要有确切的名字和类型。也可以不包含任何字段,这样并不是没有意义的,因为还可以为这些类型关联上一些方法,这里可以把方法看作事函数的特殊版本。函数事独立的程序实体,可…

to_number用法示例_Number()函数以及JavaScript中的示例

to_number用法示例Number()函数 (Number() function) Number() function is a predefined global function in JavaScript, it used to convert an object to the number. If the function is not able to convert the object in a number – it returns "NaN". (Rea…

系统延时任务及定时任务

1. 系统延时任务&#xff1a; at相关命令 at time 设定任务执行时间at> rm -fr /mnt/* 任务动作at> <EOT> <<ctrld 执行任务at的命令&#xff1a; -l ##查看任务列表-c …

cpn tools查看运行时间_Jmeter在Linux下的运行测试

一、JMeterApache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。1.1、JMeter的作用能够对HTTP和FTP服务器进行压力和性能测试&#xff0c; 也可以对任何数据库进行同样…

css div滚动_如何使用CSS创建可垂直滚动的div?

css div滚动Introduction: 介绍&#xff1a; Dealing with divs has become a regularity and divs are used for many purposes like to structure our code and to segregate our various sections of codes. Besides, we are also aware of many properties that we can im…

Linux中磁盘分区的管理

1. 本地存储设备的识别 fdisk -l真实存在的设备cat /proc/partitions系统识别的设备blkid系统可使用的设备df系统正在挂载的设备 真实存在的设备不一定可识别&#xff0c;识别到的的设备不一定可使用 2. 设备的挂载和卸载 1&#xff09;设备名称 /dev/xdx …

python中时间的加减_python日期加减

python中关于时间和日期函数的常用计算总结 python中关于时间和日期函数有time和datatime 1.获取当前时间的两种方法: import datetime,time now = time.strftime("%Y-%m-%d %H:%M:%S") print now now = datetime.datetime.now()... 文章 技术小胖子 2017-11-08 848…