随笔 - 326,  文章 - 0,  评论 - 0,  阅读 - 16万
  • ejs 页面
    作用,可以在页面当中编写 js 代码
  • 页面中
    页面的名称不是 html 后缀,而是 ejs 后缀
    比如:
    <%- errData %>
  • node中
    • 需要安装 ejs
      npm i ejs
    • 在node当中引入 ejs
      //引入ejs
      app.set("view engine","ejs");
      app.set("views","views");
      
    • ejs 的基本使用
      return res.render(errPath,{
        errData:"当前注册账号或密码不能为空!"
      })
      
  • 在登陆注册当中引入 ejs
    • 连接数据库
    const mongoose = require("mongoose");
    mongoose.connect("mongodb://localhost:27017/school",{
        useNewUrlParser: true,
        useUnifiedTopology: true
    });
    mongoose.connection.once("open",err=>{
        if(err){
            console.log(err);
            return;
        }
        console.log("database connection success!");
    })
    
    • 创建数据表映射对象
    const mongoose = require("mongoose");
    const studentSchema = mongoose.Schema({
        username:{
            type:String,
            unique:true,
            require:true
        },
        password:{
            type:String,
            require:true
        }
    })
    const studentSch = mongoose.model("students",studentSchema);
    module.exports = studentSch;
    
    • 操作数据库
    const express = require("express");
    const app = express();
    app.listen(8080);
    
    //引入path
    const path = require("path");
    
    //引入ejs
    app.set("view engine","ejs");
    app.set("views","views");
    
    
    
    //连接数据库
    require("./db/db")
    //获取数据库映射表
    const studentSchema = require("./model/students");
    //使用内置中间件加载静态资源
    app.use(express.static("./public"));
    
    //错误的页面路径
    const errPath = path.resolve(__dirname,"./public/err.ejs");
    /**
     * 注册路由
     */
    app.get("/register",async (req,res)=>{
        console.log(req.query);
        const {username,password} = req.query;
        //校验注册的信息是否为空!
        console.log(errPath);
        if(!username || !password){
            return res.render(errPath,{
                errData:"当前注册账号或密码不能为空!"
            })
        }
        //校验用户账号是否已经存在
        const isHasUser = await studentSchema.findOne({
            // username:username
            username
        })
        if(isHasUser){
            return res.render(errPath,{
                errData:"当前注册账号已存在"
            })
        }
        //正则校验账号密码
        const reg = /^[0-9a-zA-Z_]{6,16}$/;
        if(!reg.test(username || !reg.test(password))){
            return res.render(errPath,{
                errData:"当前注册账号或密码格式不正确!"
            })
        }
        //进行注册处理
        try {
            await studentSchema.create(req.query);
            res.redirect("/login.html")
        } catch (error) {
            return res.render(errPath,{
                errData:"服务器繁忙,请稍后重试[注册]"
            })
        }
    })
    app.get("/login",async (req,res)=>{
        const {username,password} = req.query;
        //非空校验
        if(!username || !password){
            res.render(errPath,{
                errData:"当前登录的账号或密码不能为空!"
            })
        }
        //正则判断
        const reg = /^[0-9a-zA-Z_]{6,16}$/;
        if(!reg.test(username || !reg.test(password))){
            return res.render(errPath,{
                errData:"当前登录账号或密码格式不正确!"
            })
        }
        //验证账号是否存在
        const isHasUser = studentSchema.findOne({
            username
        })
        if(!isHasUser){
            return res.render(errPath,{
                errData:"当前来登录的账号不存在"
            })
        }
        //进行登录处理,登录完毕之后跳转到主页
        const checkLoin = await studentSchema.findOne(req.query);
        if(checkLoin){
            res.redirect("/index.html");
        }else{
            res.render(errPath,{
                errData:"服务器繁忙,请稍后重试[登录]"
            })
        }
    })
    
    • 当前文件目录
posted on   文种玉  阅读(1046)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示