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'); });

    推荐阅读