超级全面的nodejs笔记

NODEJS学习笔记

 

 

Node 学习 day1

  • 使用http模块创建一个简单的服务器

var http=require(“http”);

//引用模块

http.createServer(function(req,res){

//创建服务

                 res.end(“hello world”);

                 //向用户写入

}).listen(80);

//监听80端口

  • 文件系统fs
    1. 读取文件
      1. readFile(文件名,回调函数)
      2. 文件名:路径
      3. 回调函数:function(err,data){}
        1. err:错误汇报
        2. data:读取信息
    2. 写文件
      1. writeFile(文件名,写入的数据,回调函数)
      2. 文件名:文件路径
      3. 写入数据:写入的数据
      4. 回调函数:function(err){}
        1. err:写入错误。
    3. 修改文件名
      1. rename(原文件名,新文件名,回调函数);
      2. 回调函数:function(err){}
        1. err:返回错误。

Node 学习 day2

  • 请求方式

 

32k

1G

 

二、get数据拆分

    1. querystring模块
      1. querystring.parse(get数据)
      2. 将get数据转换成josn数据
    2. url模块(推荐)
      1. url.parse(地址,选项)
      2. 将http地址完全解析
      3. 选项:
        1. true:解析query数据
        2. false:不进行query解析

三、post数据处理

    1. GET与POST区别
      1. post数据很大:分段发送。1G
      2. get数据很小:一次发生。32K
    2. post处理
      1. req.on(标识,回调函数)
        1. 标识(字符串):
          1. ‘data’:多次接受数据。
          2. ‘end’:表示数据传输完成。
        2. 回调函数
          1. data:function(dat{}
            1. 注意:需要找个临时变量存储data。
          2. end:function(){}
            1. 注意:传输结束。

Node 学习 day3

一、常用模块

二、自定义模块

    1. 引入模块
      1. require(模块名)
      2. 模块名:默认访问系统库,引入自己库加上./
    2. 编写模块
      1. 输出数据关键字:
        1. exports.变量=值;
        2. module.exports={变量:值,变量:值};
    3. 调用模块
      1. 模块名.模块内的变量。
  • express模块(非侵入)
    1.  功能:
      1. 替代了http模块部分功能,并且增强http的部分功能。
      2. 加载页面更方便。
    2. 方法:
      1. 创建服务
        1. var server = express().listen(端口号);
      2. 请求并相应
        1. server.get(同下);
        2. server.post(同下);
        3. server.use(“请求路径”, function(req,res){  });
          1. res.send(数据),res.write(数据)的区别
            1. write只支持响应字符串和BUFFTER数据。
            2. send支持所有。
          2. req.query:表示表单返回的josn数据。
      3. 中间件(express插件)
        1. express-static读取静态文件。
          1. 下载:npm install express-static
          2. 使用:express-static(“包含网页的文件夹路径”);
          3. 返回:返回存在的网页存放完整位置。
        2. body-parser解释post文本数据
          1. 下载:npm install body-parser
          2. 使用:server.use(bodyparser({extended:布尔值, limit:数字}));
            1. extended:表示是否扩展。
            2. limit:表示限制post数据传输大小,单位b。
          3. 作用:处理post数据,并且以req.body返回到下一个use。
      4. 链式操作
        1. 作用:以流水线形式执行use
        2. 格式:

server.use(‘/’,function(req,res,next){

next();

});

server.use(‘/’,function(req,res,next){

console.log(“链式完成”);

});

        1. 注意:
          1. 路径必须一样。
          2. 如果想继续链式添加next(),不加表示不链。
      1. 自定义中间件
        1. 创建中间件文件
        2. 定义中间件函数
          1. module.exports={

变量名:function([形参表]){

    return function(req,res,next){

   

   

    next();

}

}

}

具体请看10讲

  • cookie与session
    1. 什么是cookie

cookie是用于存储网页(浏览器)的状态信息的(http不能确定网页的状态),大小为4K。

    1. 什么是session

session是依赖于cookie的和cookie功能差不多,但是他存在服务器,大小不限。

    1. cookie-parser操作
      1. 安装:npm install cookie-parser
      2. 使用:

server.use(cookie-parser(“签名字符串”));//建立中间件

server.use(“路径”,function(req,res){

   res.secret(“签名”);//可以省略

   res.cookie(“名字”,”值”,{//发送cookie

           path:在那个网页发送cookie,向上,

signed:逻辑值,//表示是否开启签名

maxAge:有效时间毫秒

});

})

读取返回的cookie值

req.cookies//表示无签名的cookie

req.signedCookies //表示签名的cookie

                                删除cookie

                                   res.clearCookie(‘名字’)

    1. cookie-session操作
      1. 安装 :npm I cookie-session
      2. 说明:依赖于cookie-parser
      3. 操作:
        1. 读写session

 

server.use(cookie-parser(“签名字符串”));//建立中间件

server.use(cookie-session({

   kes:[值]//加密值

name:名字,

maxAge:有效期

}));

server.use(“路径”,function(req,res){

req.session[‘名字’]=’值’//session读写操作

})

 

Node 学习 day4

  • 页面模板引擎
    1. 常用引擎
      1. ejs:非侵入
      2. jade:侵入
    2. 看视频学习。
  • post文件上传
    1. post上传方式:

enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。

默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。

描述

application/x-www-form-urlencoded

在发送前编码所有字符(默认)

multipart/form-data

不对字符编码。

在使用包含文件上传控件的表单时,必须使用该值。

text/plain

空格转换为 "+" 加号,但不对特殊字符编码。

 

 

 

 

 

    1. post接收方式
      1. 文本信息接收:
        1. 模块:body-parser
      2. 二进制接收:
        1. 模块:multer
        2. 用法:
          1. 定义multer变量
            1. var objmulter=multer({dest:”文件存储路径”});
          2. 设置接收方式
            1. server.use(objmulter.single(“指定上传的控件名称”));
            2. server.use(objmulter.any());//接收所有的
        3. any返回变量
          1. req.files
          2. 变量内容:
            1. 类型:数组
            2. fieldname:表示上传的控件名
            3. originalname:原来的名称
            4. encoding:编码
            5. mimetype:文件类型
            6. buffer:二进制文件内容
            7. size:大小
    2. 其他模块
      1. path解析文件路径
        1. 使用:
          1. var objpath=path.parser(“路径”);
        2. objpath返回值
          1. dir:文件路径
          2. base:文件名+扩展名
          3. ext:文件扩展名
          4. name:文件名

Node学习day5

  • consolidate模板引擎集合
    1. 下载:npm I consolidate
    2. 使 用:
      1. server.set(‘view engine’,’html’);//设置查看方式:html
      2. server.set(‘view’,’目录’);//设置模板引擎的位置
      3. server.engine(‘html’,consolidate.ejs);//设置编译的对象,使用consolidate.ejs将ejs文件编译成html。
    3. render渲染页面
      1. res.render(‘指定模板文件’,{指定模板文件使用的json值});
  • Router页面路由
    1. 下载 :npm I express
    2. 使用:
      1. var Router1=express.Router();//创建路由
      2. server.use(‘请求路径’,Router1)//添加路由;
      3. Router1.use(请求页面,function(req,res){});
  • MYSQL操作
    1. 下载:npm I mysql
    2. 连接:
      1. 单连接

var connect=mysql.createConnection{

                  host:主机ip,

                  post:主机端口,

                  user:登录用户,

                  password:密码,

                  database:默认打开的库

}

         connect.connect(function(err){});//监听是否连接成功

      1. 池连接

var poolconnect=mysql.createConnection{

           host:主机ip,

           post:主机端口,

           user:登录用户,

           password:密码,

           database:默认打开的库,

                          connectionLimit:连接的数量(默认10)

}

      1. 断开连接

poolconnect.end(function(err){//池连接断开

         console.log(“断开连接”,err);

});

----------------------------------------------------------------

connect.end(function(err){//断开单连接方法1.

         console.log(“断开连接”,err);

})

 

connect.destroy()//断开连接方法2

    1. pool事件

获得(acquire)

池将发出一个获得事件,当从池中获取连接时。在将连接传递给获取代码的回调之前,在对连接执行所有获取活动之后调用。

pool.on('acquire', function (connection) {

  console.log('Connection %d acquired', connection.threadId);

});

连接(connection)

池将发出一个连接在池中建立新连接时引发。如果需要在连接使用之前在其上设置会话变量,则可以侦听连接事件。

pool.on('connection', function (connection) {

  connection.query('SET SESSION auto_increment_increment=1')

});

排队(enqueue)

池将发出一个排队事件,当回调排队等待可用连接时。

pool.on('enqueue', function () {

  console.log('Waiting for available connection slot');

});

释放(release)

池将发出一个释放事件,当连接被释放回池时。在对连接执行了所有发布活动之后,就会调用这一点,因此在事件发生时,该连接将被列为空闲。

pool.on('release', function (connection) {

  console.log('Connection %d released', connection.threadId);

});

    1. sql语句执行
      1. 查询:

connect.query(“sql语句”,function(err,data){

                  //err错误

                  //data查询的返回结果

});

      1. 增加:

connect.query(“INSERT INTO `表名`(字段) values(?)”,[插入的数据],function(err){

});

      1. 其他依照以上的方式。

Node学习day6

  • url重定向
    1. res.redirect(“重定目录”);
  • MD5加密签名
    1. 下载加密库:npm I crypto
    2. 创建散列加密对象md5:
      1. var cryobj=crypto.createHash(‘md5’);
    3. 加密数据
      1. cryobj.update(数据);
    4. 返回加密结果
      1. var str=cryobj.digest(‘hex’);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值