基于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 存储视图目录
设计相关页面(静态资源配置)
- 论坛主页面
- 注册页面
- 登陆页面
🔺模板继承(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