-
模块化:
-
系统模块;http,querystring,url
-
自定义模块
-
包管理器
-
-
Crypto 加密
Events 事件
Net 网络操作
OS 操作系统信息
Path 处理文件路径
-
自定义模块:
-
模块组成
-
npm
-
发布自己的模块
-
-
引入自己的模块-----------./
-
对外输出东西-----必须加给exports
-
Express
-
关于Express---保留了原生的功能,只不过添加了一些方法。依赖于中间件。非破坏式。
-
非侵入式:req,res
-
express在原生的基础上还多了res.send()
-
res.send()功能跟res.write()差不多,不过是改进了,可以传输字符
-
-
3中方法:可以接收到用户请求
-
.get('/',function(req,res){});
-
.post('/',function(req,res){});
-
.use('/',function(req,res){});以上两种请求都包括
-
-
Express的中间件就是类似于Jquery的插件。
-
express-static这个中间件专门帮忙处理静态文件
-
req.query---get---无需中间件
-
req.body----post---中间件(body-parser)
-
链式操作:
-
server.use(function(rq,res,next){});
-
server.get(function(rq,res,next){});
-
server.post(function(rq,res,next){});
-
next---下一步操作
-
next();
-
-
自己写中间件
-
server.use(function(req,res,next){
var str='';
req.on('data',function(data){
str+=data;
});
req.on('end',function(){
req.body=querystring.parse(str);
next();
})
});
-
-
cookie和session都是存数据的,但是cookie是存在浏览器中,session是存在服务端的。
-
session是基于cookie实现的。
-
cookie中会有一个session的ID,服务器利用session找到session文件,读取、写入。
-
隐患:session_id是用户看到的,----session劫持。
-
cookie---需要引入
读取----cookie.parser
发送-----
//发送cookie res.cookie('user','dys',{path:'/aaa',maxAge:30243600*1000}); res.send('ok');
-
cookie空间非常小、安全性特别差
-
(有秘钥)res.secret='字符串';
发送cookie-----res.cookie('user','dys',{path:'/',maxAge:毫秒,signed:true});
读取cookie-----server.use(cookieParser('秘钥'));server.use(function(){
req.cookies 未签名版
req.signedCookies 签名版
})
删除cookie----res.clearCookie('user');
-
-
session---需要引入
读取------cookie-session
显示的不是压缩也不是乱文而是签名
-
模板引擎--后台生成页面
-
jade--侵入式、强依赖
-
ejs---非侵入式---渲染
-
根据缩进,规定层级
-
属性放在()括号里,逗号分隔
-
写内容:a(href="") 官网----文字与标签之间用空格
-
<%=name %>可输出
-
<%= json.arr[0].name %>
-
body-parser-----解析post数据
-
multer----解析post文件
-
var obj=multer([dest:'upload/']);
-
server.use(obj.arr[]);
-
server.use(function (req,res){
req.files[0].originalname
req.filters[0].path
});
-
把扩展名加上
var newName=file.path+pathLib.parse(file.originalname).ext
-
-
-
consolidate---适配
-
server.set('view engine','html');
server.set('views','模板目录');
server.engine('html',consolidate.ejs);
server.use(function(req,res){
res.render('模板文件',数据)
})
-
-
route-----路由(把不同的目录对应不同的模块)---拆
-
创建router
var router=express.Router();
-
把router添加到server
server.use('/user',router);
-
router内部
router.get('/1.html');
-
router---子服务
-