首页 > 其他分享 >前端歌谣-第六十五课-express之服务端渲染和客户端渲染

前端歌谣-第六十五课-express之服务端渲染和客户端渲染

时间:2024-01-20 13:32:10浏览次数:23  
标签:req console log 渲染 res app express 第六十五

前言

我是歌谣 微信公众号关注前端小歌谣一起学习前端知识 今天继续给大家讲解服务端渲染和客户端渲染静态资源的讲解

案列

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>我是主页</title>
</head>
<body>
    <div>
        我是主页
    </div>
    <div class="list">

    </div>
    <script>
        fetch("/home").then(res=>res.json()).then(res=>{
            console.log(res)
            render(res)
        })
        function render(data){
            var list=data.map(item=>`<li>${item}</li>`)
            console.log(list)
            var oul=document.querySelector(".list")
            oul.innerHTML=list.join("")
        }
    </script>
</body>
</html>

indexrouter.js

const express = require("express")
const router = express.Router()

router.get("/login",(req,res)=>{
    
    res.send("get-success")
})
router.get("/home",(req,res)=>{
    
    res.send(["111","222","33333"])
})
router.post("/login",(req,res)=>{
    console.log(req.body)
    const {username,password}=req.body
    if(username=="geyao"&&password=="123456"){
        res.send({ok:"1"})
    }else{
        res.send({ok:"0"})
    }
   
})
module.exports=router

index01.js

const express = require("express")
const app = express()
const IndexRouter=require("./router/indexRouter")
//配置解析
app.use(express.static("public"))
app.use(express.urlencoded({extended:false}))
app.use(express.json())
//应用
app.use(function(req,res,next){
    console.log("验证token")
    next()
})

app.use(function(req,res,next){
    console.log("验证token")
    next()
})

app.use("/",IndexRouter)

app.use((req,res)=>{
    res.status(404).send("丢了")
})

app.listen(3000, () => {
    console.log("server start")
})

login.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>我是登录</title>
</head>

<body>
    <div>用户名:<input id="username" />
    </div>
    <div>密码:<input type="password" id="password" />
    </div>
    <div>
        <button id="login">登录</button>
    </div>
    <div>
        <button id="loginpost">登录-post</button>
    </div>
</body>
<script>
    var oLogin=document.querySelector("#login")
    var oLoginPost=document.querySelector("#loginpost")
    var oUsername=document.querySelector("#username")
    var oPassword=document.querySelector("#password")
    oLogin.onclick=()=>{
        console.log(oUsername.value,oPassword.value)
        fetch(`/login?username=${oUsername.value}&password=${oPassword.value}`)
        .then(res=>res.text()).then(res=>{
            console.log(res)

        })
    }
    oLoginPost.onclick=()=>{
        console.log(oUsername.value,oPassword.value)
        fetch(`/login`,{
            method:"POST",
            body:JSON.stringify({
                username:oUsername.value,
                password:oPassword.value
            }),
            headers:{
                "Content-Type":"application/json"
            }
        }).then(res=>res.json()).then(res=>{
            console.log(res,"res")
            if(res["ok"]=="1"){
                location.href="/index.html"
            }else{
                console.log("用户名密码不匹配")
            }
        })
    }
</script>
</html>

运行结果

前端歌谣-第六十五课-express之服务端渲染和客户端渲染_用户名

前端歌谣-第六十五课-express之服务端渲染和客户端渲染_用户名_02

案例优化

login.ejs

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>登录</div>
    <h1><%=geyao%></h1>
</body>
</html>

indexRoute.js

const express = require("express")
const router = express.Router()

router.get("/login",(req,res)=>{
    res.render("login",{geyao:"geyao"})
    // res.send("get-success")
})
router.get("/home",(req,res)=>{
    
     res.send(["111","222","33333"])
})
router.post("/login",(req,res)=>{
    console.log(req.body)
    const {username,password}=req.body
    if(username=="geyao"&&password=="123456"){
        res.send({ok:"1"})
    }else{
        res.send({ok:"0"})
    }
   
})
module.exports=router

index01.js

const express = require("express")
const app = express()
const IndexRouter=require("./router/indexRouter")
//配置模板
app.set("views","./views")
app.set("view engine","ejs")
//配置解析
app.use(express.static("public"))
app.use(express.urlencoded({extended:false}))
app.use(express.json())
//应用
app.use(function(req,res,next){
    console.log("验证token")
    next()
})

app.use(function(req,res,next){
    console.log("验证token")
    next()
})

app.use("/",IndexRouter)

app.use((req,res)=>{
    res.status(404).send("丢了")
})

app.listen(3000, () => {
    console.log("server start")
})

运行结果

前端歌谣-第六十五课-express之服务端渲染和客户端渲染_json_03

标签:req,console,log,渲染,res,app,express,第六十五
From: https://blog.51cto.com/geyaoisnice/9345482

相关文章

  • hyperexpress框架/使用uwebsockets.js核心
    import{scheduleJob}from'node-schedule';//定时任务functionsetupScheduledTasks(){//每6秒执行一次setInterval(()=>{taskEverySixSeconds();},6000);//每33分钟执行一次setInterval(()=>{taskEve......
  • c4d阿诺德怎么渲染高清图片
    c4d作为也可热门建模工具,该渲染器支持多种渲染器使用,很多人在选择阿诺德渲染器是出现了高清图片无法渲染的问题,阿诺德可提供逼真的光影效果和物理材质,那么怎么利永阿诺德渲染高清的图片呢,一起来简单看看吧。c4d阿诺德怎么渲染高清图片1、调整输出设置:在渲染设置中找到"输出"(O......
  • 个人小型渲染农场搭建需要准备什么?
    ​渲染农场是指具备一定计算机资源平台,这类平台通常拥有庞大渲染机器,并且需要足够的资金,还要有专业人员进行维护。个人小型渲染农场的搭建,第一要点就是需要资金,这样能购买足够的硬件、渲染软件、3d建模软件、配置网络等。一、渲染农场搭建分析在搭建小型渲染农场的时候,需要明......
  • Java实现基于GDAL将单波段影像转为三波段影像-唯一值渲染
    在处理遥感影像的渲染时,经常需要处理单波段影像。单波段影像没有任何颜色,只有一个波段的值。渲染时只能采用色带拉伸、离散颜色、唯一值渲染这几种方式。直接将单波段影像转成三波段的影像,并将三个波段转为颜色对应的rgb值,这样可以加速渲染、切片的过程。这里我有一张单波段影像,需......
  • 第29节: Vue3 列表渲染
    在UniApp中使用Vue3框架时,你可以使用列表渲染语法来动态地渲染一个列表。下面是一个示例,演示了如何在UniApp中使用Vue3框架使用列表渲染:<template><view><button@click="addItem">AddItem</button><ul><liv-for="(item,index)initems":......
  • 第28节: Vue3 条件渲染
    在UniApp中使用Vue3框架时,你可以使用条件渲染来根据条件动态地显示或隐藏元素。下面是一个示例,演示了如何在UniApp中使用Vue3框架使用条件渲染:<template><view><button@click="toggleActive">ToggleActive</button><pv-if="isActive">Thisisactive</p......
  • 前端歌谣-第陆拾叁课-express获取请求参数
    前言我是歌谣微信公众号关注前端小歌谣一起学习前端知识今天继续给大家讲解获取express获取请求采参数的讲解案例index.jsconstexpress=require("express")constapp=express()constIndexRouter=require("./router/indexRouter")//应用app.use(function(req,res,next)......
  • 前端歌谣-第六十四课-express之静态资源
    前言我是歌谣微信公众号关注前端小歌谣一起学习前端知识今天继续给大家讲解获取express获取静态资源的讲解案列constexpress=require("express")constapp=express()constIndexRouter=require("./router/indexRouter")//配置解析app.use(express.static("public"))app......
  • 电影动画用云渲染好吗?有什么优势
    动画电影的创作是一个将声音和图像融合以产生视觉故事的过程,电影通常是由一系列静止图像构成,其中每一幅静止图像称为一帧。动画电影的流畅度依赖于每秒播放的帧数,常见的帧率有25、60、90或120帧每秒等,具体取决于制片方的选择和制作标准。这些影片通常具有高分辨率,以及对细节的......
  • WidgetsBinding.instance.addPostFrameCallback widget首次渲染完成执行其他操作
    使用场景Flutter中的界面组件(控件)只要一帧就能绘制渲染在屏幕上,当然,这一帧Flutter做了很多事,包括Build、Layout和Painting阶段。而 addPostFrameCallback 就是在每一帧绘制完成后再回调执行一些自己的方法。这个机制的使用场景非常多。比如组件渲染完后做一些操作,像开......