直接就是上手Node.js的基础模块

148 阅读2分钟

js在浏览器和node的区别

  • 在浏览器中主要由 基础语法(es) bom dom组成
  • 在node中最大的区别是node中能能操作文件,而没有dom bom
  • nodejs是将谷歌的v8引擎搬到服务端 使得js能被服务器解析并可成为服务端语言
  • js擅长处理字符传,而node中大量处理的是2进制,Buffer就是node内置处理二进制的一个类,可以用它的toString()方法转成字符

fs模块

读取文件、增删改查文件

const fs = require("fs")
//该模块经常配和path模块一起使用、node中回调第一个参数一般是err、第二个是成功的返回值

fs.readFile(path,(err,data) => {}) // 读文件
//err,data返回的是buffer二进制 需要toString()转明文

fs.writeFile(path,"写入的内容",{encoding:"utf-8",flag:"a"},(err) => {})  //写文件
//第三个参数中a是在文件中追加内容  默认是w覆盖  第三个参数整个可以不写

fs.mkdir("创建的路径", (err)=>{})  //创建目录

fs.readdir(path,(err,res)=>{}) //res返回该目录下所有子集 返回数组

fs.stat(path,(err,res)=>{}) //其中res.isFile()判断是否为文件

fs.unlink(path,err=>{})  //删除文件
fs.rmdir(path,err=>{})  //删除文件夹  鸡肋的是文件夹中有东西就删不了

fs.rename(oldpath,newpath,err=>{})   //移动或重命名文件

流式读取数据

//fs模块的高级用法
fs.watchFile(path,(cur,pre)=>{})   //监听文件的改动
fs.unwatchFile(path)   //解除监听

let readStream = fs.createReadStream(prth)	//创建读取流
let writeStream = fs.createWriteStream(path) //创建写入流
readStream.on("close",(err)=>{})	//读取断开时触发的事件  相关事件还有"end","error"
writeStream.on("close",(err)=>{})	//写入断开时触发的事件  相关事件有"finish","error"

//流式读取+流写入例子
const rs = fs.createReadStream(__dirname + '/test/Until You.mp3');
const ws = fs.createWriteStream(__dirname + '/test/untiyou.mp3');
rs.pipe(ws);
rs.on('data', function (data) {
  console.log('数据可读')
});
rs.on('end', function () {
  console.log('文件读取完成');
  //ws.end('再见')
});

URL模块

const URL = require('url').URL
let u = "http://fy:123456@nodejs.cn:8080/api/url?aaa=bbb#123"
let a = new URL(u)

console.log(a)  //返回结果如下
URL {
  href: 'http://fy:123456@nodejs.cn:8080/api/url?aaa=bbb#123',
  origin: 'http://nodejs.cn:8080',
  protocol: 'http:',
  username: 'fy',
  password: '123456',
  host: 'nodejs.cn:8080',
  hostname: 'nodejs.cn',
  port: '8080',
  pathname: '/api/url',
  search: '?aaa=bbb',
  searchParams: URLSearchParams { 'aaa' => 'bbb' },
  hash: '#123'  //位置的标识符
}

crypto不可逆加密模块

//无论数据多长  加密后的都是固定长度
const crypto = require('crypto')
const pass = 'fy123456' 
const hash = crypto.createHash("md5")  //创建md5哈希对象  还有sha1,sha256 sha512
hash.update(pass)               //输入待加密的数据
let res = hash.digest("hex")    //输出16进制的哈希结果  还有一个是 base64 的哈希结果 一般不常用

console.log(res) //// md5  3863e14eee210c0c7cb8a7aaf8daf55d

http模块

const http = require("http")

http.createServer((request,response)=>{
    let {url, method, headers} = request //这里可以根据不同的请求响应不同的文件
    response.writeHead(200,{    //配置响应头
        "Content-Type":"text/plain;charset=utf-8" //纯文本
    })
    response.write("你好")  //响应体  可以返回读取的html文件
    response.end()   //发送响应报文
}).listen(8080,"127.0.0.1") //127.0.0.1代表本地