基于Node.JS实现的论坛(登录注册、发表帖子以及修改个人信息)

本文记录了使用Node.js、Express和MongoDB搭建论坛的过程,包括登录注册、发表帖子和修改个人信息等功能。通过模板引擎art-template渲染页面,使用body-parser解析请求体,blueimp-md5进行密码加密,express-session处理用户会话。详细介绍了每个模块的设计思路和代码实现,如路由设计、数据库操作、表单提交和页面跳转等。
摘要由CSDN通过智能技术生成

基于B站周老师的node教程做出来的论坛,记录了一下过程,除了教程基本的登陆注册功能外,自己添加了帖子分页效果、发帖的功能以及修改个人信息,项目GitHub源码,如果对你的学习有帮助,望点个star支持下,自己也整理了学习Node过程中的笔记,里面有配套思维导图

主要技术如下

  • 使用Express框架搭建Node服务器,数据库采用MongoDB

  • 使用Bootstrap以及JQuery搭建页面

  • art-template模板引擎以及搭配express-art-template渲染前端页面

  • body-parse插件解析客户端发送过来的请求体

  • blueimp-md5进行用户密码加密

  • express-session存储关于用户会话(session)

目录结构

app.js 项目的入口文件
controllers
models 存储使用mongoose设计的数据模型
node_modules 第三方包
package.json 包描述文件
package-lock.json 第三方包版本锁定文件(npm5之后才有)
public 公共静态资源
routes 路由模块
views 存储视图目录

设计相关页面(静态资源配置)

  1. 论坛主页面
  2. 注册页面
  3. 登陆页面

🔺模板继承(ar-template)

​ 解决多页面布局类似问题,通用布局→模板引擎挖坑→孩子填坑(类似vue的插槽)

下载所需基础模块以及初始化(app.js)

想到什么下什么,后面需要什么再补什么

初始化思路如下

→安装,引入express mongoose

→开放静态资源public

→配置模板引擎(art-template)

→引入bootstrap、jquery(npm),开放art-template静态资源并使用

→引入body-parse(npm)

var express = require('express')
var path = require('path')
var bodyParser = require('body-parser')
var router = require('./router.js')

var app = express()

//开放静态资源
app.use("/node_modules", express.static("./node_modules/"))
app.use("/public", express.static("./public/"))

//配置模板引擎
app.engine('html', require("express-art-template"))
app.set('/views',path.join(__dirname, './views/'))

//引用中间件,配置post表单请求体中间件时一定要在挂载路由之前
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({
    extended: false }))
// parse application/json
app.use(bodyParser.json())

//挂载路由
app.use(router)

//开放端口
app.listen(3000, function(){
   
	console.log('server is running...')
})

设计路由

路径 方法 get参数 post参数 登陆权限 备注
/ get 渲染论坛首页
/login get 渲染登陆页面
/login post email、password 处理登录请求
/register(注册) get 渲染注册页面
/rgister post email、password、nickname 处理注册请求
/logout get 处理退出当前账户请求
var express = require('express')

var router = express.Router()

router.get('/', function(req, res) {
   
    res.render("index.html")
})

router.get('/login',function(req,res){
   
	res.render('login.html')
})

router.post('/login',function(req,res){
   
	console.log(req.body)
})

router.get('/register',function(req,res){
   
	res.render('register.html')
})

router.post('/register',function(req,res){
   

})

module.exports = router

配置中间件

安装body-parse,测试获取post请求

//引用中间件,配置post表单请求体中间件时一定要在挂载路由之前
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({
    extended: false }))
// parse application/json
app.use(bodyParser.json())

🔺这里页面采取异步请求AJAX,可以通过安装Postman进行post请求
在这里插入图片描述

数据库设计

创建models目录,设计处理各个数据表文件

User

//引用模块
var mongoose = require('mongoose')
//获取Schema框架
var Schema = mongoose.Schema
//设计表约束以及规范
var userSchema = new Schema({
   
    //邮箱
    email: {
   
        type: String,
        require: true
    },
    //昵称
    nickname: {
   
        type: String
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值