初遇Express(小demo)

2023-10-10 19:30
文章标签 demo express 初遇

本文主要是介绍初遇Express(小demo),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Express_demo
此网站实现了简单登陆功能


我的目录:
我的目录


这个项目比较简单,我讲一讲一些重要功能的实现和我一些觉得需要注意的点吧【可爱脸】
1.关于Jade的回车格式问题。
我在编写Jade的时候报了这样的错:Invalid indentation,you can use tabs or spaces but not both(不要tab和空格一起使用)。
解决:在代码编辑器中设置tab替换空格。我用的webstorm,在webstorm中设置方法如下:preference->Code Style->jade->Tabs and Indents->勾选Use Tab charactor。
【BTW】:webstorm 的Jade监测功能超级赞!!!

2、关于安装导入Bootstrap的问题,我使用的是bower

npm install -g bower
bower install bootstrap

我当时是用window 8 命令行敲的,但是并不可以! 报错是git的问题
所以采用PLAN B打开 git bash吧【英俊脸】

3.提一下Grunt,毕竟前端好帮手
【Grunt自动监视重启项目】

4.当我们可以在/login页使用Ajax提交表单,验证跳转页面登陆到/home 页。但是! 我们直接在浏览器 输localhost:3000/home ,也是能访问到home页面的。这样的网站是不安全的。
所以,express-session模块就出现了。

var session = require('express-session');

修改后的index.js页面。

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');router.get('/', function(req, res, next) {res.render('index', { title: '首页' });
});router.get('/error',function(req,res){res.render('error');
});router.get('/login',function(req,res){res.render('login',{title:'登陆页'});
});router.post('/login',function(req,res){var user={'username':'admin','password':'admin'}console.log(req.body.username);if(req.body.username==user.username&&req.body.password==user.password){req.session.user = user;res.send(200);}else{req.session.error = "用户名或密码错误"res.send(404);}});
router.get('/wrong',function(req,res){res.render('wrong');
});router.get('/logout', function(req, res){req.session.user = null;req.session.error = null;res.redirect('/');
});router.get('/home',function(req,res){if(req.session.user){res.render('home',{title:'主页面'});}else{req.session.error = "请先登录";res.redirect('wrong');}
});module.exports = router;

这篇关于初遇Express(小demo)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/182583

相关文章

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

linux 内核提权总结(demo+exp分析) -- 任意读写(四)

hijack_modprobe_path篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     原理同hijack_prctl, 当用户执行错误格式的elf文件时内核调用call_usermod

linux 内核提权总结(demo+exp分析) -- 任意读写(三)

hijack_prctl篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   prctl函数: 用户态函数,可用于定制进程参数,非常适合和内核进行交互 用户态执行prctl函数后触发prctl系统

linux 内核提权总结(demo+exp分析) -- 任意读写(二)

hijack_vdso篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm     vdso: 内核实现的一个动态库,存在于内核,然后映射到用户态空间,可由用户态直接调用 内核中的vdso如果被修改

linux 内核提权总结(demo+exp分析) -- 任意读写(一)

cred篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   每个线程在内核中都对应一个线程结构块thread_infothread_info中存在task_struct类型结构体 struct t

linux 内核提权总结(demo+exp分析) -- ROP(二)

ret2usr CR4篇 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   smep: smep是内核的一种保护措施, 使得内核不可执行用户态代码 内核通过CR4寄存器的第20位来控制smep,

linux 内核提权总结(demo+exp分析) -- ROP(一)

基础ROP篇(linux 5.0.21) 本文转自网络文章,内容均为非盈利,版权归原作者所有。 转载此文章仅为个人收藏,分享知识,如有侵权,马上删除。 原文作者:jmpcall 专栏地址:https://zhuanlan.kanxue.com/user-815036.htm   内核提权与用户态攻击的区别 攻击流程 用户态攻击: 执行 system("/bin/sh") 获得shel

实例demo理解面向接口思想

浅显的理解面向接口编程 Android开发的语言是java,至少目前是,所以理解面向接口的思想是有必要的。下面通过一个简单的例子来理解。具体的概括我也不知道怎么说。 例子: 现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。已知要实现U盘、MP3播放器、移动硬盘三种移动存储设备,要求计算机能同这三种设备进行数据交换,并且以后可能会有新的第三方的

类codepen的实现可拖拽窗口demo

首先说下思想 flex或者其他布局方式,实现左右分割布局,主盒子宽度100%,左右布局中包含一个分割条(可在布局容器中,也可以单独定义)为分隔条绑定鼠标点击事件,为document绑定鼠标移动事件和鼠标放开事件,通过监听鼠标移动事件和上一个状态保存下来的鼠标位置作对比,判断当前鼠标移动方向(往左还是往右)然后计算当前鼠标位置和鼠标点击位置的距离,来计算左右容器的变化,然后通过dom的方式设置宽度

Nodejs的Express框架使用总结

初始安装express,你也可以通过编辑器的shell安装依赖,比如vs # 创建并切换到 myapp 目录mkdir myappcd myapp# 初始化 package.json 文件npm init -y# 安装 express 到项目中npm i express 新建一个基础的接口 // 0. 加载 Expressconst express = require('expre