一、加载静态资源(所有静态资源必须要在服务器响应才能看到)
1.什么是静态资源 例如 html css js 图片
2.如何加载?
需要引入文件系统模块fs,使用fs中的readFile方法
引入fs模块
let fs = require('fs')
语法格式: fs.readFile(参数1,参数2)
参数1: 要加载的静态资源
参数2:回调函数
例如:
fs.readFile('/index.html',(参数1,参数2)=>{
参数1: 错误 err
参数2: 记载成功的静态资源 data
})
//根据不同的路径加载不同的静态资源
let http = require('http');
//引入fs模块
let fs = require('fs');
let server = http.createServer((req,res)=>{
//根据不同的路径加载不同的静态资源
let url = req.url
if(url == '/index'&& req.method == 'GET'){
fs.readFile('./index.html',(err,data)=>{
if(err){
//能进入这个分支表示有错误
res.wtite('404');
res.end();
}else{
//能进入这个分支表示没有错误,将加载的数据返回给客户端
res.write(data);
res.end();
}
})
}
if(url == '/login'&& req.method == 'GET'){
fs.readFile('./login.html',(err,data)=>{
if(err){
//能进入这个分支表示有错误
res.wtite('404');
res.end();
}else{
//能进入这个分支表示没有错误,将加载的数据返回给客户端
res.write(data);
res.end();
}
})
}
})
server.listen(8090);
二、处理表单的提交
let http = require("http");
let fs = require("fs");
let urll = require("url");
let qs = require("querystringify");
let server = http.createServer((req,res)=>{
/*
使用文件系统进行加载html的静态资源(login.html)
在html文件中有表单
当表单提交之后,在指定的请求路径中获取表单中传递的信息
*/
//加载表单的静态资源(也就是加载一个html页面,里边写的是表单代码)
let url = req.url;
if(url == "/form" && req.method == "GET"){
fs.readFile("./form.html",(err,data)=>{
if(err){
res.write("404");
}else{
res.write(data);
}
res.end();
})
}
//处理表单的提交
if(url == "/dologin" && req.method == "POST"){
// console.log("你点击了登录按钮");
//接收你表单提交过来的信息 用户名 和 密码
// 如果需要接收表单的信息,我们需要使用一种监听的手段,监听表单中的数据
/*
req.addListener(data,function(){})
参数1:是data 如果参数为data那么就表示开始监听
参数2:是回调函数
*/
//声明一个空变量,用于存储每一次监听到的数据
let datas = "";
req.addListener("data",(chunk)=>{
datas += chunk;
})
req.addListener("end",()=>{
// username=root&pass=123456 => {xxx:xxx,xxx:xxx}
// let par = urll.parse(url,true); // 错误的写法!!!
// http://localhost:8090/dologin
console.log(datas);
let obj = qs.parse(datas);
console.log(obj);
let username = obj.username;
let pass = obj.pass;
// let pass = xxx;
console.log(username,pass);
})
res.end();
}
})
server.listen(8090);
三、查询字符串
查询字符串就是:xxx=xxx&xx=xx
如果需要解析指定的"查询字符串" 需要解析查询字符串(就是将查询字符串变成对象的过程)
需要一个模块qs(querystring)模块,我们需要使用这个模块中的parse方法
qs.parse(参数) 参数就是你要解析的查询字符串
但是有问题!!qs模块已经被弃用
解决方案:
1.删除这个警告
鼠标悬停到qs模块上,会出现提示,点击那个被标注的连接 不推荐!!
2.换一个模块
我们需要使用querystringify的模块
直接使用会报错,说这个模块没有找到,这个模块不是内置的,我们需要安装
npm 的使用
npm是安装模块和依赖的工具
1.安装模块:
在使用安装命令之前,需要先进行对npm初始化
npm init --yes 这个命令就是初始化npm
初始化之后会在当前的目录中生成一个package.json的文件 非常重要的文件(以后会详细介绍)
npm install 模块名
可以简写为
npm i 模块名
默然使用这种方式安装的模块一定是最新的版本
按照版本安装
npm i 模块名@版本号 例如 npm i [email protected]
如果你安装指定版本的时候,不清楚有哪个版本,可以直接 npm i 模块名@1
安装模块之后,会生成一个node_modules的目录,所有安装的模块都会在这个里边
npm是一个强大的模块安装工具:
npm可以解决依赖安装
什么是依赖安装:
Aok -> B ok -> C ok -> D ok
npm 安装 A ->
2.卸载模块
npm uninstall 模块名
切换下载源:
npm config set registry https://registry.npm.taobao.org
查看是否切换成功:
npm config get registry
npm的官方网站:https://www.npmjs.com/
标签:node,npm,fs,day02,req,let,模块,res
From: https://www.cnblogs.com/chestnut-wm/p/16621430.html