博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node(4)express 框架 EJS模板,cookie, session的学习
阅读量:5129 次
发布时间:2019-06-13

本文共 4162 字,大约阅读时间需要 13 分钟。

一、EJS

概述:前端咱们使用过的一个模板套路,是underscore的套路。接下来EJS它属于后台工程师人的模板。

 官网地址

特点:

Control flow with <% %>             流程控制语句用的是<% %>   :例如if   for循环等等

Escaped output with <%= %> (escape function configurable)     如果有赋值的操作(输出)你可以用<%= 变量名%>

//需要的模块 express  app.jsvar express = require("express");var app = express();//设置模板引擎app.set("view engine","ejs");//这个是修改默认的文件夹的目录名字app.set("views","template");app.get("/",function  (req,res) {       //这里需要注意的事情:不需要拼接路径      res.render("shouye",{            "gaoxing":"高兴",            "dongxi":"iphoneX",            "qian":2,             "ouxiang":["赵本山大叔","刘德华","成龙"]       })});app.listen(3000);
//template  shouye.ejs    

我今天好<%=gaoxing%>啊,我买了一个<%=dongxi%>,花了我<%=qian%>啊

    <% for(var i = 0 ;i < ouxiang.length ;i++) {
    %>
  • <%= ouxiang[i]%>
  • <% } %>

提示:①不需要引入EJS模块,因此就不需要require(“EJS”);

      ②设置视图的模板引擎为ejs,app.set(“view engine” ,”ejs”),设置完模板引擎,自动回搜索views文件夹中的模板。

      ③如果需要重新设置views文件夹的名称app.set(“views”,”template”);

      ④已经学习过的res.send  end json jsonp redirect ,今天又学习了一个render

      ⑤res.render(“shouye”),直接加上模板的名称,不需要拼接路径也不需要有ejs尾缀,渲染的数据用第二个参数json传递

二、cookie (cookie-parser)

概述:HTTP协议(应用层FTP)而且还是短轮询链接,发起一次请求之后,就断开连接了;

 Cookie它主要做的事情,是让服务器知道谁访问了我,知道谁是谁。

注意:这里面的信物就是咱们今天学习的cookie(饼干)cookie的下发是服务器下发;在node的学习当中有一个模块叫做它对于cookie进行了封装。

注意:cookie是由服务器下发,用的是报文头下发,报文当中多了一个选项 set-cookie = “XXXXXXX”,

当你浏览器再次访问服务器的时候,用的是上行请求的报文头装载cookie在上去。

//app.jsvar express = require("express");//解析cookie的时候,需要他解析var cookieParser = require('cookie-parser');var app = express();app.use(cookieParser());//设置模板引擎app.set("view engine","ejs");//中间件app.get("/",function  (req,res) {     res.render("shouye",{        "arr":req.cookies.visited||[]     });});//接受的是浏览器反问的时候给咱们的城市的信息app.get("/:city",function  (req,res) {     var city = req.params.city;  //这是第一次访问咱们这个中间件的时候,因为cookie还没有因此就没有visited的属性,因此走if分支      if(!req.cookies.visited){          var arr = [city];      }else{  //第二次访问这个中间件的时候,namecookie已经有了,因此在网cookie当中数组当中添加新的数据          var arr = req.cookies.visited;          if(arr.indexOf(city)==-1){              arr.push(city);          }      }     res.cookie("visited",arr,{maxAge:1000*60*60*24});     res.send("

你要去的地方是"+city+"

");})app.listen(3000);
//template   shouye.ejs 模板页面    
<% for(var i = 0; i< arr.length;i++) {
%>

<%= arr[i]%>

<% } %>

三、session(express-session)

概述:每一次用户登录的时候,服务器会给客户端下发一个乱码(session),而每一次浏览器在反问的时候,带着乱码在上去,对比的活是服务器在做。服务器当中的某一部分的内存在进行对比,它(服务器)就知道你是谁?谁来了。

上面的这些操作相当于 setCookie cookie已经这只好了;

但是很好的一件事情,是express,它对外暴露了一个模块,这个模块对session进行了封装,我们直接使用,这个模块的名字 express-session

案例描述:有一个form表单,有用户名和密码(123456),每个人登录之后页面显示你的用户名;

//app.jsvar express = require("express");var formidable = require("formidable");//express-session 模块的引用var session = require('express-session');var app = express();//下面的东西不需要理解,因为人家让你这么写的app.set('trust proxy', 1) ;app.use(session({  secret: 'jiachenghao',  resave: false,  saveUninitialized: true,  cookie: {maxAge:86400} cookie这个选项什么都可以没有但是必须要有时间的设置}));//设置模板引擎app.set("view engine","ejs")app.get("/",function  (req,res) {      res.render("index",{          login:req.session.login,          yonghuming:req.session.yonghuming      });});//post请求用formidableapp.post("/login",function  (req,res) {    var form = new formidable.IncomingForm();    form.parse(req,function  (err,fields) {        if(fields.mima=="123456"){            req.session.login = true;            req.session.yonghuming = fields.yonghuming;            //重定向:又进入主页面是发起一次请求            res.redirect("/")        }    })})

app.listen(3000);

//template  shouye.ejs  模板页面<% if(!login) {
%>

用户名:

密码  :

<% }else{
%>

欢迎你进入你的首页<%=yonghuming%>

<% }%>

转载于:https://www.cnblogs.com/smivico/p/8213716.html

你可能感兴趣的文章
Python - 字符编码篇
查看>>
什么是分布式系统 一个分布式系统需要什么结构
查看>>
代理目的是监听,监听的目标是代理方法的参数
查看>>
CSS之定位,relative/absolute/fixed的用法
查看>>
php中一个"异类"语法: $a && $b = $c; 【转载】
查看>>
Rsync的配置与使用
查看>>
django模板中关于过滤器的使用
查看>>
Let the Balloon Rise HDU水题
查看>>
4401: 优美数
查看>>
Codeforces Gym101522 C.Cheering-字符串 (La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017)...
查看>>
计蒜客 30996.Lpl and Energy-saving Lamps-线段树(区间满足条件最靠左的值) (ACM-ICPC 2018 南京赛区网络预赛 G)...
查看>>
翻译 有助于程序命名
查看>>
斐波那契
查看>>
填格子3*N的方框使用2*1的矩形进行填充
查看>>
为什么需要数据结构
查看>>
简单选择排序
查看>>
前端小工具
查看>>
linux开机启动程序加载的shell script
查看>>
jq分页插件(jquery.pagination.js)只有上一页下一页和跳转
查看>>
数据结构与算法-----快速排序
查看>>