更新node笔记1

  1. 模块化:

    • 系统模块;http,querystring,url

    • 自定义模块

    • 包管理器

  2. Crypto 加密

    Events 事件

    Net 网络操作

    OS 操作系统信息

    Path 处理文件路径

  3. 自定义模块:

    • 模块组成

    • npm

    • 发布自己的模块

  • 引入自己的模块-----------./

    • 对外输出东西-----必须加给exports

Express

  1. 关于Express---保留了原生的功能,只不过添加了一些方法。依赖于中间件。非破坏式。

    • 非侵入式:req,res

    • express在原生的基础上还多了res.send()

    • res.send()功能跟res.write()差不多,不过是改进了,可以传输字符

  2. 3中方法:可以接收到用户请求

    • .get('/',function(req,res){});

    • .post('/',function(req,res){});

    • .use('/',function(req,res){});以上两种请求都包括

  3. Express的中间件就是类似于Jquery的插件。

  • express-static这个中间件专门帮忙处理静态文件

  • req.query---get---无需中间件

  • req.body----post---中间件(body-parser)

  1. 链式操作:

    • server.use(function(rq,res,next){});

    • server.get(function(rq,res,next){});

    • server.post(function(rq,res,next){});

    • next---下一步操作

    • next();

  2. 自己写中间件

    • 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();

      })

      });

  1. 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

      显示的不是压缩也不是乱文而是签名

       

模板引擎--后台生成页面

  1. jade--侵入式、强依赖

  2. 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

  3. consolidate---适配

    • server.set('view engine','html');

      server.set('views','模板目录');

      server.engine('html',consolidate.ejs);

     

    server.use(function(req,res){

    res.render('模板文件',数据)

    })

  4. route-----路由(把不同的目录对应不同的模块)---拆

    • 创建router

      var router=express.Router();

    • 把router添加到server

      server.use('/user',router);

    • router内部

      router.get('/1.html');

      router.post('/1.html');

    • router---子服务

原文地址:https://www.cnblogs.com/dys6/p/11336725.html