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');
});
推荐阅读
- 随便写写|随便写写 - 草稿
- 我的伯父
- 没有人能随随便便成功
- 我们都知道一片冰心在玉壶,其实古人这首诗写的”冰心“同样经典
- 余生说丨为什么你的文章写的不好(这两点构思技巧或许能够给你启发)
- 随便写写,完成任务?
- 【诗025】神秘的月季花——自认为写得最不好,却必须要写的
- 感受萍果树的生命力
- 写在前面的话
- 带你了解NodeJS事件循环