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

nodejs的http服务器模块

  1. nodejs搭建一个服务器, 浏览器访问服务器时, 服务器只是在终端打印浏览器的请求路径, 不会给客户端返回任何东西
//1.导入模块
const http =  require('http');

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

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

//3.开启服务器 
/**
* @description:
* @param {type} 第一个参数: port 端口号 (每一个应用程序对应一个编号,称之为端口号)
* @param {type} 第二个参数: hostname 主机名(ip地址:每一台电脑有一个唯一的ip地址) 只能监听本机ip和连接的局域网ip,监听其他ip服务启动不起来; 如果不写监听, 默认就会监听本机ip (localhost 127.0.0.1以及局域网ip)
* @param {type} 第三个参数: 开启回调
* @return: 
*/
server.listen(3000,'127.0.0.1',()=>{
    console.log('服务器开启成功');
});
  1. nodejs搭建一个服务器, 浏览器访问服务器时, 服务器在终端打印浏览器的请求路径, 同时给客户端返回json格式数据
// 02-http模块响应客户端数据
//1.导入模块
const http = require('http');

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

    res.writeHead(200,{"Content-Type":"text/html;charset=utf-8"}) // 指明返回数据的字符设置, 防止乱码
    res.end(JSON.stringify({name:'张三'})); // 返回json数据
    
    // 注意点 : 服务端只能响应两种数据类型 字符串和二进制; 如果想要返回对象,则需要转成JSON  (JS->JSON)

});

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

// 03根据浏览器的不同请求, nodejs服务响应不同数据

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

//2.创建服务器
let server = http.createServer((req,res)=>{
   
    if(req.url == '/'){             // (1)如果请求路径为 / ,则响应返回index  
        res.end('index');
    }else if(req.url == '/login'){  //(2)如果请求路径为/login,响应返回登录页  
        //防止中文乱码
        res.writeHead(200,{
            'Content-Type':'text/plain;charset=utf8'
        });
        res.end('这是登录页');
    }else{                          //(3)如果是其他请求,则返回404
        res.end('404 not found')
    };
    
});

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

// 04. 根据浏览器不同的请求, 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) => {
    
    if (req.url == '/') {
        //返回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');

});

注意:

     电脑和手机连接同一个wifi, 然后在电脑启动服务(使用默认ip), 这时手机也可以直接访问到电脑启动的服务, 手机访问的地址应该是**http://局域网ip:服务端口**
	(可以搭建node服务器,手机访问html文件, 检查在手机的布局有没有问题)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值