1. nodejs
node js 是运行与服务端的js,是事件驱动I/O;集成谷歌的V8引擎
node js开发服务端
2. 模块
node js的模块 模块的导入和导出 使用CommonJs规范
- 内置模块(node js 原生提供)可以直接使用
- 第三方模块(需要先下载安装然后使用)
- 自定义模块(类似于es6的模块,需要定义模块,进行模块的导入和导出)
2.1 模块的导入require()
1.导入内置模块
const http = require('http')
2.导入第三方模块
npm install 模块名 --save
const 变量名 = require('模块名') 变量名尽量和模块名保持一致
3, 导入自定义模块
定义模块
通过 module.exports = {} 导出模块
通过 exports.key = value 导出模块
引入模块
const 变量名 = require('./模块文件名')
js和node js 的区别
js: 运行在浏览器中的脚本语言
- 缺点:不能直接操作电脑上的文件
node js : 运行在服务器端的js
- nodejs 的fs文件系统。 可以对电脑上的文件进行操作(增删改查)
node js常见的命令行操作
- cd 文件夹名 进入文件夹
- cd … 返回上一级
- mkdir 文件夹名 常见文件夹
命令的历史记录:
通过 上下箭头 可以查看历史记录
3.搭建服务器
// 引用创建http的模板
var http = require('http');
//开始搭建服务器
http.createServer(function (req, res) {
//设置中文乱码
res.writeHead(200,{'Content-type':'text/plain;charset=utf-8'})
//在页面输出内容
res.write(' 一去二三里 ');
//结束
res.end();
}).listen(3000, () => { //设置端口,并添加服务器开启后的响应
console.log('开启');
});
4. 文件系统
//对txt 的增删改查
//1.添加文件模块
const fs = require("fs");
//2.读取
fs.readFile("./text.txt", (err, result) => {
if (err) {
console.log(err);
return
}
console.log(result.toString());
})
//3.修改,文件名不对,会新建进行填写,覆盖填写
fs.writeFile("./text1.txt","一去二三里",(err)=>{
console.log(err);
})
//4.添加,文件名不对,会新建进行填写,追加填写
fs.appendFile("./text2.txt",'hello world',(err)=>{
console.log(err);
})
// 5.删除,
fs.unlink("./text1.txt",(err)=>{
console.log(err);
})
// 6.重命名
fs.rename("./and", "and.txt", (err) => {
console.log(err);
})
5.读流 写流 管道流
//先写入数据
const fs = require('fs');
for (let i = 0; i < 100000; i++) {
fs.appendFile('./and.txt', `我是写入数据啊${i}\n`, (err) => {
})
}
// 创建一个读流
const readeStream = fs.createReadStream('./and.txt');
var num = 0;
//监听 事件的改变
readeStream.on('data', (chunk) => {
num++;
console.log(num);
})
// 监听事件的结束
readeStream.on('end',()=>{
console.log('结束');
})
//监听 读流失败的事件 error
readeStream.on('error',()=>{
console.log('duang失败了');
})
// 创建一个写流
const writeStream = fs.createWriteStream('./aa.txt');
//写入数据
writeStream.write('这里是写入数据', 'utf8');
//写入结束
writeStream.end();
//反馈状态
writeStream.on('finish', () => {
console.log('写入完成');
})
//管道流 pipe()
//创建一个读流
const readeStream = fs.createReadStream('./and.txt');
//创建一个写流
const writeStream = fs.createWriteStream('./aa.txt');
//通过管道流进行传输
readeStream.pipe(writeStream);