NodeJs Express框架
NodeJs Express框架
Echoexpress ejs cookie
是封装好的npm包
1.简介及使用
1.1 安装
必须先有 npm 然后 npm init 创建好包后 在安装express
2.路由
将信息从端点传递到客户端
由源 传递到目的地叫做路由
1 | const express=require('express'); |
html 表单部分
1 | <!DOCTYPE html> |
2.1内网渗透
2.2 express query 方法
query 返回的是一个 集成了请求信息的对象(请求方法,请求的url http协议的版本 请求头信息等等)
1 | const express=require('express'); |
request.rarans.id
获取url中路径的参数
1
2
3
4
5
6//url中需要我们填写占位符
app.get('/:id.index',(request,response)=>{
let id=request.params.id;
response.send(`${id}`)
})request.get()
获取请求头中指定的key对应的value
2.3 响应的设置
response.statusCode=404; 响应状态字符串
response.statusMessage=’dddddd’;响应状态字符串
response.setHeader(‘ddd’,’one’);响应头
response.write(‘dddd’);响应体
设置响应体以后就不能设置响应头了
2.4 静态资源服务
配置网站的根目录
**网站的根目录一般存放的是 html css js 视频和音频 图片等 这种不经常改变的一些东西,对于内容要频繁变化的 会设置路由规则 **
如果客户端对服务端发送请求的话 首先会到根目录下寻找与之对应的文件 如果在网站的根目录没有找到与之匹配的文件的话 就会根据路由规则 从路由里面寻找,如果路由和根目录都同时存在某个文件的话 会优先使用根目录的文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22//app.use(express.static(__dirname+'/public'));
//这个是配置网站根目录的语句是不可以变的
const express=require('express');
const app=express();
app.use(express.static(__dirname+'/public'));
app.get('/index',(request,response)=>{
//输出请求信息对象
console.log(request.query);
//输入请求信息对象的text的值
console.log(request.query.text);
response.send('index 界面')
})
app.listen(80,function(){
console.log('cg');
} )
//如果客户端发送请求找文件的话 首先会从public 根目录下面找 ,找不到在根据路由规则接着寻找
2.5 中间件
把需要重复做的事情,写成一个函数,哪里需要哪里搬
一般分为路由中间件和全局中间件
先声明中间件 在要使用的地方调用就可以了
中间件的使用设置
1,安装
2,在代码中引用中间件
3,app.use 或者再 路由中进行制定设置
4,可选(在指定的语法中使用指定的语法操作)
不会就看文档
1 | // 中间件就是 函数 |
2.6 时间处理插件(moment)http://momentjs.cn/ 官网地址
通过npm来安装
1 | const moment=require('moment'); |
2.7静态资源服务中间件
短时间内不会变更的资源 叫静态资源
内容和时长会发生改变的 叫动态资源(首页 列表 等等)
1 | const express=require('express'); |
2.8 路由器
把一些路由的代码 进行单独的抽离 放在一个单独的文件里面进行管理
**被单独管理的路由代码 **
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//1. 引入 express 包
const express = require('express');
//2. 创建路由器对象 router 是一个微型的 app 对象
const router = express.Router()
//3. 修改路由
router.get('/home', (request, response) => {
response.send('home 页面');
});
router.get('/home.html', (request, response) => {
response.send('<h1>home.html</h1>')
})
router.get('/videos', (request, response) => {
//数据处理 读取数据库 读取文件
response.send('电影列表页');
});
router.get('/x/cover/:id.html', (request, response) => {
//获取id
let id = request.params.id;
//获取 电影的信息 JSON
// 与 HTML 结构拼接 形成最终的 HTML (响应体)
});
//4. 暴露router对象
module.exports = router;- 需要引入路由的文件
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// 安装 express
// 引入 express 包
const express = require('express');
// 创建应用对象
const app = express();
//
const router = require('./routes/router');
const adminRouter = require('./routes/admin');
//配置网站的根目录
// app.use(express.static(__dirname+ '/public'));
//设置
app.use(router);
app.use(adminRouter);
//1. 创建一个 routes 文件夹
//2. 创建单独的文件 router.js
//3. 修改 router.js 中代码(四步)
//4. 主文件中引入 router.js
//5. app.use 设置中间件
// 监听端口 启动服务
app.listen(80, () => {
console.log('服务已经启动.. 端口 80 监听中....');
});
3.ejs
**是一个模板引擎 **
作用:实现用户的界面与数据相分离 对前端来讲 就是为了分离html页面和数据的
安装
1
yarn add ejs
引入ejs
1
const ejs=require('ejs');
调用方法
ejs.render(‘字符串’,数据对象)
1
2
3
4
5
6let str='<h1><%=name%></h1>';
//-----------------ejs 只认知<h1><%=name%> 这种语法
const data={name='张三'};
const result=ejs.render(str,data);js操作前端数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18// ejs 模板引擎 一种技术 并不是 JS 独有的
//1. 安装 ejs
//2. 引入 ejs
const ejs = require('ejs');
const fs = require('fs');
//3. 调用方法
/**
* str 要编译的字符串
* data 数据对象
*/
// 一. 变量的拼接
let str = fs.readFileSync('./dome.html').toString();
let data = {
msg: '为荣耀而生,为荣誉而死',
title: 'H5200826'
};
const result = ejs.render(str, data);1
2
3
4
5
6
7
8
9
10<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<h1><%= tiele %></h1> /前端界面一定要写ejs可以识别的这一行
</body>
</html>数据的遍历
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22const ejs = require('ejs');
const fs = require('fs');
// let str = `
// <ul>
// <% for(let i=0;i<songs.length;i++){ %>
// <li><%= songs[i] %></li>
// <% } %>
// </ul>
// `
let str = fs.readFileSync('./歌曲列表.html').toString();
let data = {
songs: [
'甜蜜蜜',
'笨小孩',
'常回家看看',
'难忘今宵',
'好运来'
]
};
let result = ejs.render(str, data);
console.log(result);1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>歌曲列表</title>
<style>
body{
background:#ace;
}
</style>
</head>
<body>
<h2>歌曲列表</h2>
<ul>
<% for(let i=0;i<songs.length;i++){ %>
<li><%= songs[i] %></li>
<% } %>
</ul>
</body>
</html>服务器端
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
31const ejs = require('ejs');
const fs = require('fs');
const express=require('express');
const app=express();
// let str = `
// <ul>
// <% for(let i=0;i<songs.length;i++){ %>
// <li><%= songs[i] %></li>
// <% } %>
// </ul>
// `
app.get('/gequ',(request,response)=>{
let str = fs.readFileSync('./歌曲列表.html').toString();
let data = {
songs: [
'甜蜜蜜',
'笨小孩',
'常回家看看',
'难忘今宵',
'好运来'
]
};
let result=ejs.render(str,data);
response.send(result);
})
app.listen(80,()=>{
console.log('80端口监听中-----------');
})1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>歌曲列表</title>
<style>
body{
background:#ace;
}
</style>
</head>
<body>
<h2>歌曲列表</h2>
<ul>
<% for(let i=0;i<songs.length;i++){ %>
<li><%= songs[i] %></li>
<% } %>
</ul>
</body>
</html>
4.会话控制cookie
http只会响应每一个请求 但是无法判断请求是谁发出的,这次来了下次就不认识了 无法识别客户端
cookie 本质是存在于浏览器端的一个文本,每次向服务器发送请求的时候都会附带cookie,cookief附带在http请求的请求头中,是键值对的结构。
- 浏览器查看cookie的内容
cookie 虽然存在浏览器端,但是存在安全风险,所以不能直接查看
发送cookie的时候只会发送当前域名下的的cookie
- cookie不能直接查看的原因
**cookie 是可以说是用户的一个标识 如果被其他的应用程序或者人拿到你的cookie 就可以肆无忌惮的向服务器发送请,你的账户就可能被操作,造成你个人的损失 **
- cookie是怎么来的
cookie是由服务器响应回来的,在响应报完的响应头返回回来的。 浏览器会对响应报文做解析保存到浏览器。
- 域名与顶级域名
巴拉巴拉.com 是顶级域名
www.巴拉巴拉.con 是二级域名 - set-cookie 中的path 是设置cookie中生效的路径的
如果生效的路径是 /inde 那么 他在其他的地方的响应都是无效的
但是在绝大多数的情况下 cookie 的路径都是 ‘/‘
- cookie 是具有时效性的
带有时效性的cookie 关闭浏览器不会销毁此cookie 但是时间到了 就会自动销毁
不带时效性的cookie 不关闭浏览器它就一直存在 但是关闭浏览器就自动销毁了
4.1cookie 的使用
npm 里面找cookie -parser 然后三步走 安装 声明 调用
1 | // cookie-parser |
1 | session |
session的使用
1 | const express = require('express'); |