一、cookie
1.设置服务端cookie
:
response.setHeader("Set-Cookie",["name=val,path=/,max-age=60,httpOnly...","name2=val2,path=/..."]); -- 原生写法
httpOnly:设置服务端的cookie是否能被客户端访问,false表示可以访问,true不能访问
1.安装cookie:npm install cookie -s
2.导入cookie:const cookie = require("cookie")
2.cookie创建
1.客户端
document.cookie = "name=val;path=/;max-age=0...";
document.cookie = "name2=val2";
2.服务端
response.setHeader("Set-Cookie",["name=val;path=/...","name2=val2;httpOnly..."]);
httpOnly:设置cookie是否能被客户端document.cookie获取,true表示只能在服务端使用
response.setHeader("Set-Cookie",[cookie.serialize("name",val,
{
path:"/",
httpOnly:false...
}),cookie.serialize()...])
3.cookie获取
1.客户端
document.cookie => name=val; name2=val2; ...
let cookies = Object.assign({},...document.cookie.split("; ").map(v=>{
let tmp = v.split("=") //[name,val]
return {
[tmp[0]]:tmp[1]
}
})); //{name:val,name2:val2...}
2.服务端
request.headers.cookie => name=val; name2=val2
//{name:val,name2:val2...}
let cookies = cookie.parse(request.headers.cookie);
4.cookie销毁
1.客户端
document.cookie = "name=;max-age=-1";
2.服务端
response.setHeader("Set-Cookie",["name=;max-age=-1"...]);
5.cookie
模块:服务端,将参数序列化成cookie
字符串或者将cookie
字符串转换为cookie
的键值对对象
一、art-template
1.模板遍历:
{{each list}}
索引:{{$index}} 值:{{$value}}
{{/each}}
{{each list v k}}
索引:{{k}} 值:{{v}}
{{/each}}
二、Express框架
1.基于
Node.js
,用于开发Web
应用程序的框架2.特性:1.使用中间件响应
HTTP
请求2.定义了路由表用于执行不同的
HTTP
请求动作3.可以通过向模板传递参数来动态渲染
HTML
页面4.
express-generator
:Express
项目生成器,是一个脚手架工具 -- 快速搭建一个基于Express
框架的项目框架
express-generator搭建项目
1.
$ npx express-generator
:直接搭建项目 --Node.js 8.2+
2.
$ npm i express-generator -g
:全局安装脚手架工具
$ express
:搭建项目安装依赖
1.进入项目目录
2.
$ npm i
:安装依赖运行项目
1.
$ npm start
:开启项目2.
http://localhost:3000
:预览项目
目录结构
bin/www:创建并开启web服务 -- 导入了app.js public:静态资源目录 routes:路由目录 -- ctrl views:模板页目录 -- tpl package.json:项目配置文件 package-lock.json:项目依赖包的版本依赖信息--保证项目中的包版本一致 app.js:入口文件
使用
application应用
1.
require("express")()
:express
框架导出一个顶层方法,通过这个方法可以创建一个基于express
框架的应用程序 --application
应用2.
app.set(name,value)
:设置一个全局变量,也可用于设置应用属性,可通过app.get(name)
获取
app.set("views",path.join()):设置模板目录 app.set("view engine","jade"):设置模板引擎
3.
app.use()
:挂载中间件到路径上
中间件:是一个方法(函数) function(request,response,next){ request:请求 response:应答 next():继续向下执行 } app.use(path,function1...):将中间件方法挂载到指定的路径上,如果没有path,默认为/,表示所有匹配路径,即所有的请求都会执行function1 内置中间件: 1.express.json():v4.16+ -- 转换提交类型为application/json数据 2.express.urlencoded({ extended: false }): 转换提交类型为application/x-www-form-urlencoded数据 3.express.static(path.join(__dirname, 'public')):托管静态资源 注意:public就是静态资源的目录,模板页中不再需要写入这个目录名
4.
app.engine()
:注册模板引擎
Request对象和Response对象
1.分别表示
HTTP
的请求及响应2.
Request
对象:
request.baseUrl:获取路由当前安装的URL路径 request.cookies:获取cookie request.originalUrl:获取原始请求URL request.hostname / request.ip:获取主机名/IP地址 request.params:获取路由的parameters request.path:请求的路径 request.route:获取当前匹配的路由 request.get():获取指定的HTTP请求头 获取请求数据: request.body:获取请求体 -- post请求数据,默认为undefined,必须通过中间件转换 request.query:获取URL的查询参数串 -- get参数
3.
Response
对象:
res.append():追加指定HTTP头 res.set()在res.append()后将重置之前设置的头 res.cookie(name,value [,option]):设置Cookie opition: domain / expires / httpOnly / maxAge / path / secure / signed res.clearCookie():清除Cookie res.download():传送指定路径的文件 res.set():设置HTTP头,传入object可以一次设置多个头 res.get():返回指定的HTTP头 res.status():设置HTTP状态码 res.type():设置Content-Type的MIME类型 res.jsonp():传送JSONP响应 res.redirect():设置响应的Location HTTP头,并且设置状态码302 res.send():传送HTTP响应 res.json():传送JSON响应 res.render(view,[locals],callback):渲染一个view,同时向callback传递渲染后的字符串 -- 响应一个模板页 res.sendFile(path [,options] [,fn]):传送指定路径的文件 -会自动根据文件extension设定Content-Type -- 响应一个文件
Router路由
1.一个关于路由和中间件的实例对象 -- 子路由
2.创建:
let express = require("express"); let router = express.Router(); //路由对象
3.
router.get/post/put...(path,function)
:匹配路由为path
的get/post/put
请求,匹配之后执行function
(中间件)4.
router.all()
:匹配所有的请求类型5.
router.use()
:挂载中间件更换模板引擎
1.安装模板引擎:
npm i express-art-template -s
2.注册模板引擎:
app.engine("后缀",模板引擎)
app.engine("art",require("express-art-template")); app.engine("html",require("express-art-template"));
3.加载模板:
response.render("path/*.art",{name:value...}) response.render("path/*.html",{name:value...})