nodejs基础学习
文章目录
node初识
node.js是基于JavaScript的运行环境,使用的是google v8的引擎
使用事件驱动和异步的非阻塞I/O模型
前端学习会比较方便,因为语言语法是一样的,只是api不一样,面向的功能不一样,对于前段来说可以简单的去定义接口api
nodejs安装
可以参考菜鸟教程的nodejs安装,个人觉得写得很详细了,而且电脑已经安装过就不实操了
https://www.runoob.com/nodejs/nodejs-install-setup.html
nodejs REPL交互解释器
在命令行中输入node之后会打开交互解释器
类似浏览器的控制台的使用
下划线_
可以方便的复制上一条输出
另外.help里面还有很多方法
nodejs编辑器和npm
直接在vscode中创建js文件,正常执行即可,也可以用vscode的插件
node demo1.js
npm一般是包括在nodejs中的,是我们对项目依赖包的快速下载
记得安装淘宝镜像源
npm install XXX -g
全局安装
npm install XXX --save
依赖到项目
下面试一下express
新建demo01.js
// 使用express和npm
// npm install express --save
let express=require('express')
let app=express()
app.get('/',(req,res)=>{
res.send('hello')
})
app.listen(8000,()=>{
console.log("启动",'http://localhost:8000')
})
在命令行运行
node demo01.js
node的模块运行机制
commonjs
文件即模块
通过require引入exports导出的模块
新建demo02
也可以这样导出
不过还是推荐用module.exports
的形式优先级要高一些而且两种同时用会乱掉
nodejs模块路径
在require中使用相对路径引用自己写的文件
如果没有相对路径会优先找当前目录下的node_modules,逐级往上找
nodejs的包
就是我们node_modules中的一个目录形成的模块,配置信息一般在package.json
npm init
用来自定初始化包
nodejs的文件系统
nodejs是服务器语言,所以一定可以使用file
即node中的fs
模块
const fs = require('fs')
新建demo03
同步写
下面先使用同步的方式来写入一个文件(等待写入完成才会有下一步)
const fs =require('fs')
//同步打开文件
let fd=fs.openSync('./test1.txt','w')
console.log(fd)
//写入内容
let str ='hello\n'
fs.writeFileSync(fd,str)
//退出文件
fs.closeSync(fd)
异步写
下面来试试异步的文件写入
const fs =require('fs')
//异步打开,使用回调函数
fs.open('text2.txt','w',(err,fd)=>{
fs.writeFile(fd,'hello2',(err)=>{
if(err){
console.log(err)
}
fs.close(fd,(err)=>{
if(err){
console.log(err)
}
console.log('关闭完成')
})
})
})
console.log('index2')
下面是同步和异步的区别
同步和异步是相对于操作结果来说,会不会等待结果返回
阻塞就是在等待时你不可以去干其他的事情,非阻塞就是在同样的情况下,可以同时去干其他的事情。阻塞和非阻塞是相对于线程是否被阻塞。
文件流写
文件还可以使用流写入
异步读
读出来的是buffer二进制数据的形式,转化成字符串就行了
下面尝试把一张图片读入再写入
异步读写文件
新建index5.js,引入test.png
流读写文件
使用pipe管道来读写流
let fs=require('fs')
let rs=fs.createReadStream('./test.png')
let ws=fs.createWriteStream('./test_p.png')
//创建管道,读取流入到管道到写出流
rs.pipe(ws)
console.log('index7')
和上面index6的效果一样但是简便很多,用到pipe管道函数
通过node删除文件、读取文件目录
同样是使用fs
文件系统
删除文件用unlink,读取目录用readdir
创建删除目录
let fs