基于Express和MySQL的个人博客项目开发

该项目详述了如何使用Express和MySQL开发一个包含文章发布、删除、分页及登录功能的个人博客系统。首先介绍了项目初始化和依赖安装,接着讲解了登录页面的前端和后端实现,包括MD5加密用户密码。然后,详细阐述了博客首页的创建、文章内容页的路由设计以及文章的增删改功能。最后提到了文章分页的实现,通过LIMIT语句和URL查询字符串进行控制。
摘要由CSDN通过智能技术生成

项目说明
需求功能分析

开发步骤
1.快速生成一个项目
①npm install -g express-generator (打开cmd在NPM中安装Express项目生成器)
② express -e blog(生成ejs模板的Express博客项目)
③npm install (安装项目依赖)
项目目录
其中public中存放静态资源,routes中存放路由文件;view中存放ejs模板文件;在app.js文件中的内容有引入项目模块,使用中间件,使用路由以及处理404错误

④在app.js中添加监听器listen

// 监听器
app.listen(3000,function(){
   
    console.log('listening port 3000');
});

⑤使用NPM安装normalize.css库 用于同一各个浏览器的默认样式
npm install normalize.css

⑥通过node app 开启项目

设计和实现登录页面
前端部分
登录页面由表单组成,核心思想是利用用户提交的用户名和密码等信息与后端数据库中的信息进行对比,根据对比结果反馈给用户,信息匹配一致,将用户页面重定向至用户需要进入的页面,若信息匹配不一致,将错误信息反馈给用户;
①实现一个前端页面
1.在routes文件夹下的index.js 文件中添加登录页的路由(请求一个get方式的路由,并渲染模板引擎文件夹下login视图模板)

// 登录页
router.get('/login',(req,res,next)=>{
   
	res.render('login');//请求一个get方式的路由,并渲染模板引擎文件夹下login视图模板
});

2.重构登录页面(在views文件夹下新建login.ejs文件)

3.对这个页面进行样式开发(main.css 文件中写整个项目的文件)
登录页面
②后端部分
核心:将用户提交信息和数据库中的信息进行比较,从而得出结果
1: 在项目的根目录下新建一个config.js文件 进行数据库的配置

// 数据库的相关信息
const DB={
   
	host:"localhost",
	port:3306,
	user:'root',
	password:'',
	database:'blog'
};
module.exports=DB;

2:在项目的根目录下新建一个database.js 的文件 用于连接mysql

// 加载数据库驱动
const mysql=require('mysql');
const config=require('./config.js');

// 连接数据库
const database=mysql.createConnection({
   
	host:config.host,
	user:config.user,
	port:config.port,
	password:config.password,
	database:config.database
});

// 执行连接操作
database.connect();

module.exports=database;

3.由于在设计数据库时 用户的密码是通过md5加密后存储的,所以用户提交的数据也需要通过md5加密后才能对比
注:md5是一种不可逆的加密算法,只能用穷举枚举等暴力方法破解,如:e10adc3949ba59abbe56e057f20f883e 原密码是123456
在Node.js提供了crypto模块 crypto模块的目的是为了提供通用的加密和哈希算法
在route文件夹下的index.js中引入cypto 和database模块

const crypto=require('crypto');
const mysql=require('./../database');
// 登录信息验证
router.post('/login', (req, res, next)=> {
   
    var name = req.body.name;
    var password = req.body.password;
    var hash = crypto.createHash('md5');
    hash.update(password);
    password = hash.digest('hex');
    var query = 'SELECT * FROM author WHERE authorName=' + mysql.escape(name) + ' AND authorPassword=' + mysql.escape
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值