2.创建一个基本的node.js

一.创建一个基本的node.js

  1. 导入http模块(http是基于http传输协议的一个服务器模块)
let http = require('http');
  1. 创建一个服务器createServer
let server = http.createServer(function(request,response){
	console.log('服务器已经响应');
	response.end('服务器已经响应');//结束语句,必须要写
});
  1. request–请求对象
    存储web浏览器向web服务器发送的请求对象,该对象中存储一些请求信息比如,请求的URL,请求的参数,请求的方式,请求的headers等.
  2. response–响应对象
    用来实现web服务器向web浏览器响应数据的操作,该对象中存储响应过程中对应的数据比如响应的状态码,响应的内容,响应的headers等.
  3. 设置服务器的监听端口号
server.listen(8000);//listen:监听

二.回调函数

函数A和函数B,其中函数B作为函数A的参数被传入到函数A内部.但是在函数A执行过程中通过调用函数B程序此时进入到函数B中执行,次过程产生一个回调过程,此时函数B被称为回调函数.

三.url模块和path模块

  1. url模块
    node中内置的URL网址的解析模块
  2. path模块
    node中内置的专门用来完成对路径的处理
  3. 获取当前网络请求的请求方式
    GET POST PUT DELETE PATCH
  4. 将字符串类型的网址解析成对象类型-parse(url,bool)完成网址解析
    参数二是一个布尔类型的变量用来决定网址中参数的返回类型,默认为false(参数以字符串格式返回),true(参数以对象格式返回)
  5. 对网址中路径部分做解析
let http = require('http');
//url模块--node中内置的url网址的解析模块
let url = require('url');
//path模块--node中内置的专门用来完成对路径的处理
let path = require('path');

let server = http.createServer(function (request, response) {
    //获取当前网络请求的请求方式(GET, POST, PUT, DELETE, PATCH)
    console.log(request.method);
    //获取web端请求过程中传输的网址和参数
    let url_path = request.url;
    //将字符串类型的网址解析成对象类型--parse(url, bool):完成网址解析,参数2是一个布尔类型的变量用来决定网址中参数的返回类型,默认为false(参数以字符串格式返回),true(参数以对象格式返回)
    let url_obj = url.parse(url_path, true);
    //对网址中路径部分做解析
    console.log(path.parse(url_obj.pathname));
    response.end();
});
server.listen(8000);

微信公众号:免费前端资料

四.url模块和path模块–路径的获取

  1. 获取当前文件的上一级文件夹的绝对路径—_dirname(两个)
  2. 获取当前文件的绝对路径—__filename
  3. 解析指定的路径—path.parse(__filename)
  4. 判断当前给定的路径是否是绝对路径—path.isAbsolute(‘路径’)
    如果是返回true,否则返回false.
  5. 路径拼接,将给定的多个字符串变量按照顺序拼接成一个完整的路径
    path.join(‘变量1’,‘变量2’,‘变量3.txt’);
  6. 按照指定格式完成路径的拼接
    path_obj={
    dir(目录):’ ‘,
    base(基于):’ ',
    }
    path.format(path_obj);
  7. 网址模块–完成对网址数据的操作
    网址按照指定的格式进行拼接
    {
    hostname(主机名字):‘www.taobao.com’,
    protocol(协议):‘https’,
    search(搜索):’?name=衣服’,
    pathname(路径名字):’/result’,
    }
//path模块和url模块
let path = require('path');
//获取当前文件的上一级文件夹的绝对路径
console.log(__dirname);
//获取当前文件的绝对路径
console.log(__filename);
//解析指定的路径
console.log(path.parse(__filename));
//判断当前给定的路径是否是绝对路径,如果是返回true,否则返回false
console.log(path.isAbsolute('./node3.js'));
//路径拼接,将给定的多个字符串变量按照顺序拼接成一个完整的路径
console.log(path.join('aa', 'bb', 'aa.txt'));
//按照指定的格式完成路径的拼接
path_obj = {
    dir:'C:\\aa\\b\\img',
    base:'aa.txt'
}
console.log(path.format(path_obj));

//网址模块--完成对网址数据的操作
let url = require('url');
let url_path = 'https://www.jd.com/?cu=true&utm_source=baidu-pinzhuan&utm_medium=cpc&utm_campaign=t_288551095_baidupinzhuan&utm_term=0f3d30c8dba7459bb52f2eb5eba8ac7d_0_e752be6098f2454da3f201f242ab04fe';

//网址解析
let url_obj = url.parse(url_path, true);
console.log(url_obj);
//网址按照指定的格式进行拼接
url_obj = {
    hostname:'www.taobao.com',
    protocol:'https:',
    search:'?name=男士护肤',
    pathname:'/search/result',
}
console.log(url.format(url_obj));

在这里插入图片描述

五.request对象–向前端响应数据

  1. 设置服务器向前端返回数据的数据报头(headers)
response.writeHead(statusCode,headers);
- 参数一:状态码; 参数二:数据报头

- 数据报头:
- {Content-type(内容类型):'text/html;charset=utf-8'};
  1. 向前端响应数据
    response.write(chunk);
  2. 代表本次请求结束的标志
    response.end();
let http=require('http');
http.createServer(function (request,response) {
    //1.设置服务器向前端返回数据的数据报头(headers)
    //statusCode状态码
    response.writeHead(200,{'Content-type':'text/html;charset=utf-8'});
    //2.向前端响应数据  chunk:流
    response.write('<h1>你好</h1>');
    //3.代表本次请求结束的标志
    response.end();
}).listen(8001);

六.buffer二进制数据流

  1. 新建Buffer对象
    Buffer()已经被废弃,因为它的安全性和私密性不是很好.
    Buffer.alloc()直接以安全的方式分配
    Buffer.allocUnsafe()不安全的方式分配
    Buffer.from()根据给定的地址分配
let buf = new Buffer.alloc(100);
  1. 将数据写入到缓冲区
buf.write(string,encoding);//encoding:编码 默认utf-8

返回值为字节数,一个汉字三个字节,一个英文一个字节,最大返回上边设置的100.

  1. 二进制数据转化为字符串
let fs = require('fs');
//createReadStream创建一个可读的文件流
let reasStream = fs.createReadStream(path,options);
//options:{highWaterMark:11}读取数据流中最大读取量为11个字节
  1. 设置二进制转化过程中的编码格式
readStream.setEncoding('utf-8');//读取流在读取过程中的编码格式
readStream.on('data',function(chunk){//数据存在时读取
    console.log(chunk.toString());
});
  1. 判断二进制流是否支持指定的编码格式
Buffer.isEncoding('win1251');
  1. 整体代码
//Buffer中一个元素代表一个字节
//是一个二进制缓冲区(文件操作的时候有用)Buffer
//1.新建Buffer对象
let buf=new Buffer.alloc(100);//最大100个字节,一个汉字三个字节,一个英文一个字节
//2.将数据写入到缓冲区
let result=buf.write('你好');
console.log(buf);//返回字节长度
//3.二进制数据转化为字符串
let fs=require('fs');
//异步读取
let readStream = fs.createReadStream('./content.txt',{highWaterMark:11});
//设置二进制数据转化过程中的编码格式
readStream.setEncoding('utf-8');//读取流在读取时按照中文读取
readStream.on('data',function(chunk){
   console.log(chunk.toString());
});//由数据触发执行事件
let buf1 = new Buffer.alloc(300);
//4.判断二进制流是否支持指定的编码格式
console.log(Buffer.isEncoding('utf-8'));
let conv=require('iconv-lite/lib/index');
let len = buf1.write('nihao','utf-8');
console.log('---------------------------------');
//encode编码decode解码
buf1 = conv.encode(buf1,'gb2312');
buf1=conv.decode(buf1,'utf-8');
console.log(buf1.toString());

七.单词

  1. require:需求
  2. create:创建
  3. server:服务器
  4. createServer:创建服务器
  5. request:请求对象
  6. response:响应对象
  7. listen:监听
  8. path:路径
  9. parse:解析
  10. dir:目录
  11. file:文件
  12. absolute: 绝对路径
  13. join:参加,结合
  14. base:基于
  15. format:格式
  16. hostname:主机名字
  17. protocol:协议
  18. search:搜索
  19. patnname:路径名字
  20. chunk:大块
  21. alloc:分配
  22. unsafe:不安全的
  23. buffer:缓冲区
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值