a随便写的nodejs学习笔记(2)

nodejs的http服务器模块

// 01-http模块搭建服务器
//1.导入模块   (安装phpstudy)
const http =  require('http');

//2.创建服务器     (打开phpstudy)
/* 
req :request 请求对象 (负责存储浏览器的请求信息)
res : response 响应对象 (负责响应数据的对象)
*/
let server =  http.createServer((req,res)=>{
    //服务端每收到一个客户端请求都会执行一次该回调函数,这个函数会执行多次

    //req : 请求对象
    //req.url:获取客户端请求的路径
    console.log(decodeURI(req.url));
    //如果请求路径有中文,则浏览器会进行URI编码(直接体验就是, 在终端中打印的请求路径乱码)
});

//3.开启服务器   (监听ip和端口 : 点击了phpstudy的启动按钮)
/**
* @description:
* @param {type} 第一个参数: port 端口号 (每一个应用程序对应一个编号,称之为端口号)
* @param {type} 第二个参数: hostname 主机名(ip地址:每一台电脑有一个唯一的ip地址)
* @param {type} 第三个参数: 开启回调
* @return: 
*/
server.listen(3000,'127.0.0.1',()=>{
    console.log('服务器开启成功');
});

// 可以监听局域网的ip,设定指定端口,这样电脑浏览器和手机浏览器(前提都连接同一个局域网,可以是同一个wifi)都可以连接到这里的服务器
// 作用: 搭建node服务器,手机访问html文件, 检查在手机的布局有没有蹦
// 注意点:(以下都以连接同一个路由为前提)
// 1. 监听的ip可以通过cmd输入ipconfig /all获取, ipv4地址(首选既是), 或是在控制面板中查看无线网络连接-->详细地址-->ipv4地址
// 有时候ip是会变化的,不能正常访问的时候注意即可
// 2. 只能监听本机ip和连接的局域网ip,监听其他ip启动不起来的
// 3. 最后一点,如果不写监听的ip,默认就会监听本机ip和连接的局域网的ip,即 localhost 127.0.0.1 局域网ip


// 02-http模块响应客户端数据
//1.导入模块
const http = require('http');

//2.创建服务器
let server = http.createServer((req,res)=>{
    //req:request请求对象
    console.log(req.url);
    //res : response响应对象

	// 在返回的时候,指明字符设置, 否则返回的数据是乱码
    res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"}) 

    /* 注意点 : 服务端只能响应两种数据类型 字符串和二进制  */
    //如果后台想要返回对象,则需要转成JSON  (JS->JSON)
    res.end(JSON.stringify({name:'张三'}));
});

//3.开启服务器
//第一个参数:端口号  第二个参数:ip地址,不传默认为电脑当前ip  第三个参数:开启回调
server.listen(3000,()=>{
    console.log('success');
    
});


// 03-http根据不同路径响应不同数据
//1.导入模块
const http = require('http');

//2.创建服务器
let server = http.createServer((req,res)=>{
    console.log(req.url);//请求 路径

    //(1)如果请求路径为 / ,则响应返回index  
    //(2)如果请求路径为/login,响应返回登录页  
    //(3)如果是其他请求,则返回404
    if(req.url == '/'){
        res.end('index');
    }else if(req.url == '/login'){
        //中文乱码 : 设置响应头  (服务器告诉浏览器,我给你的数据是什么格式)
        res.writeHead(200,{
            'Content-Type':'text/plain;charset=utf8'
        });
        res.end('这是登录页');
    }else{
        res.end('404 not found')
    };
    
});

//3.开启服务器
server.listen(3000,()=>{
    console.log('success');
});


// 04-http模块响应客户端html文件(注意, 要事先在nodejs文件的同一级文件目录下新建下面涉及到的几个html文件, 里边随便写点内容)
/* 
需求
(1)如果路径是  /  : 返回index.html
(2)如果路径是  /login  : 返回login.html
(3)如果路径是  /list  : 返回list.html
(4)如果路径是  错误路径  : 返回404.html

*/

//1.导入模块
const http = require('http');
const fs = require('fs');
const path = require('path');

//2.创建服务器
let server = http.createServer((req, res) => {
    //1.请求
    if (req.url == '/') {
        //2.处理
        //返回index.html : fs模块读取文件返回
        //细节:如果是文件,则直接响应二进制(浏览器能自动识别)
        fs.readFile(path.join(__dirname, 'index.html'), (err, data) => {
            if (err) {
                throw err;
            } else {
                //3.响应
                res.end(data);
            }
        })
    } else if (req.url == '/login') {
        //返回login.html
        fs.readFile(path.join(__dirname, 'login.html'), (err, data) => {
            if (err) {
                throw err;
            } else {
                //3.响应
                res.end(data);
            }
        })
    } else if (req.url == '/list') {
        //返回list.html
        fs.readFile(path.join(__dirname, 'list.html'), (err, data) => {
            if (err) {
                throw err;
            } else {
                //3.响应
                res.end(data);
            }
        })
    } else {
        //返回404.html
        fs.readFile(path.join(__dirname, '404.html'), (err, data) => {
            if (err) {
                throw err;
            } else {
                //3.响应
                res.end(data);
            }
        })
    }
});

//3.开启服务器
server.listen(3000, () => {
    console.log('success');

});


你可能感兴趣的:(a随便写的nodejs学习笔记(2))