npm
npm内置模块
1.http
使用方法:
1.导入模块 const http = require(“http”);
2.创建服务器对象 const server = http.createServer((request,response) => { })
request 是存储发送请求的所有信息的对象
response 是服务器响应返回的所有信息的对象
3.开启服务器 server.listen(“端口号”,ip地址,callback);
1.地址可以省略 端口号不行 默认地址是127.0.0.1
2.需要设置请求头 避免出现中文乱码的情况
3.修改了js代码之后,一定要重启服务器
// 导入模块
const http = require("http");
// 创建http服务
const server = http.createServer((request,response) => {
console.log(1111);
console.log(request);
console.log(request.url);
console.log(request.method);
// 1.设置响应头服务器为了告诉浏览器 我返回给你的数据用utf-8来解析
response.setHeader("content-type","text/html;charset=utf-8");
// response.end("how are you?");
response.end("刚好遇见你");
})
// 开启服务器
// server.listen("80","127.0.0.1",() => {
// console.log("start");
// })
// 地址可以省略 但是端口号不行 地址不填 默认地址是127.0.0.1
server.listen("80",() => {
console.log("start");
})
2.fs
fs.readFile()
// 导入模块 require("模块名") 模块名是nodejs内部规定好的 不能动
// 左边保存的变量可以修改 但是通常情况下和模块名保持一致
const fs = require('fs');
// 参数1:需要被读取文件的路径
// 参数2:可选参数 我们这里给的是编码格式
// 参数3:回调函数 里面有两个参数 err表示读取失败是返回的信息 data表示读取成功时返回的信息
// fs.readFile("./20200721-node/05-赋得古原草送别.txt","utf-8",(err,data) => {
// // console.log(err);
// // console.log(data);
// if(!err){
// console.log(data);
// } else {
// console.log("文件获取失败");
// }
// })
// console.log("底部的代码"); //证明异步
// nodejs里面 如果方法以Sync就说明是同步的方法
var novel = fs.readFileSync("./20200721-node/05-text.txt","utf-8");
console.log(novel);
console.log("底部的代码"); //证明同步
fs.writeFile()
// 导入fs模块
const fs = require("fs");
// 参数1:要写入的路径
// 参数2:写入的数据
// 参数3:回调函数 有一个参数是 err 表示写入状态 成功/失败
fs.writeFile("./20200721-node/07-被写入.txt","海客谈瀛洲,烟涛微茫信难求;越人语天姥,云霞明灭或可睹。.....",err => {console.log(err);});
console.log("底部的代码"); // 证明异步
3.url
get请求的数据 url.parse().query //url模块
post请求的数据 querystring.parse() //querystring模块
post请求接收数据 request.on(“data” , data => {})
数据接受完毕就触发 request.on(“end”,() => {})
//导入http模块
const http = require("http");
const url = require("url");
const querystring = require("querystring");
//创建服务器对象
const server = http.createServer((request,response) => {
// console.log(request.method); //get //获取请求类型
// response.end(request.method);
// // console.log(request.url); ///?name=%E7%8E%8B%E9%BA%BB%E5%AD%90&skill=%E6%89%93%E9%85%B1%E6%B2%B9 //获取路径
// // console.log(url.parse(request.url,true)); //Url {} //获取url对象
// const getdata = url.parse(request.url,true).query;
// console.log(getdata); //[Object: null prototype] { name: '王麻子', skill: '打酱油' } //获取url对象的query
// console.log(getdata.name); //王麻子
// console.log(getdata.skill); //打酱油
// console.log(getdata.age); //18
const reqMed = request.method;
if(reqMed === "GET"){
const reqUrl = request.url;
//引入ur1模块调用parse来 解析url
const getdata = url.parse(request.url,true).query;
console.log(getdata);
response.end(getdata.name);
}else if(reqMed === "POST"){
// const reqUrl = Request.url;
// //使用获取get请求数据的方法post请求的数据 是获取不到的 因为它压根没进url
// const getdata = url.parse(request.url,true).query;
// console.log(getdata);
// post请求传递的数据可能比较大 不会一次性传递完毕 分段传输 所以我们要使用字符串来接受数据
let postStr = "";
// data事件 表示正在传输数据
request.on("data",data => {
// console.log(data);
// console.log(data.toString());
// console.log(decodeURl(data.toString()));
postStr += data;
})
//end事件表示数据传输完毕 没有参数
request.on("end",() => {
// post请求传递的数据不是url 只是单纯的key=value&key1=value1这种类型的字符串,我们可以直接使用querystring.parse来解析
const postData = querystring.parse(postStr);
console.log(postData);
response.end(postData.article);
})
}
})
//开启服务器
server.listen('8848',() => {
console.log("服务器已开启");
})
4.path
path.join() 拼接路径
__dirname 当前文件所在文件夹的绝对路径
__filname 当前文件的绝对路径
//导入模块
const path = require("path");
const fs = require("fs");
const pathName = path.join("name","info","assets","index.html");
console.log(pathName);
//在使用路径的地方 使用绝对路径
const txtPath = path.join(__dirname,"novels","./20200722/05-test.txt");
console.log(txtPath);
//读取文件
fs.readFile(txtPath,"utf-8",(err,data) => {
if(!err){
console.log(data);
}else{
console.log(err);
}
})
第三方模块
1.用法
1.npm init -y 自动配置需要的信息
npm init 手动配置
npm init 初始化设置过后 当前的终端目录下 多了一个package.json
2.要是用某个第三方模块 npm i 模块名
node-modules 是所有当前模块需要的依赖包
package-lock.json 是存储当前项目所有的包的信息 包括下载地址 版本号
安装成功 +模块名 added
3.拷贝示例代码
//npm init -y
//npm i server
// 将服务器包括在您的文件中
const server = require('server');
const { get, post } = server.router;
// 处理对URL“/”(http://localhost:3000/)的请求
server([
get('/', ctx => 'Hello world!')
]);
例如mysql配置数据库信息 操作数据库
//npm init -y
//npm i mysql
//导入mysql模块
var mysql = require('mysql');
//创建数据库链接对象 配置相关的信息
var connection = mysql.createConnection({
host: 'localhost', //主机名
user: 'root', //用户名
password: 'root', //密码
database: 'test' //数据库名
});
//创建数据库链接
connection.connect();
// 操作数据库
// 1.查询数据库数据 select * from students
connection.query('select * from students', function (error, results, fields) {
if (error) throw error;
console.log(results);
});
// 2.插入数据 insert into 数据表名(属性名) value(属性值)
// connection.query('insert into students(name,age,score) value("张三",19,59)', function (error, results, fields) {
// if (error) throw error;
// console.log(results);
// });
// 3.1删除 根据某一个id删除数据
// connection.query('delete from students where id=8', function (error, results, fields) {
// if (error) throw error;
// console.log(results);
// });
//3.2删除 根据id删除多个数据
// connection.query('delete from students where id in(9,10,11)', function (error, results, fields) {
// if (error) throw error;
// console.log(results);
// });
//4.修改数据 英文逗号隔开 修改的属性
// connection.query('update students set name="张贵富",score=59,age=86 where id=12', function (error, results, fields) {
// if (error) throw error;
// console.log(results);
// });
//关闭数据库链接
connection.end();