nodejs有很多自己内置的模块
其中最常用的有五个模块
fs :文件操作
http :网络操作
path :路径操作
querystring :查询参数解析
url :url解析
我们先来学习path 路径操作
常用的有以下几个
console.log(_dirname)//获取当前执行文件的绝对路径,不包括文件名
console.log(_filename)//获取当前执行文件的绝对路径,包括文件名
path.extname(_filename)//获取文件扩展名
path.basename(_filename)//获取文件名
path.dirname(_filename)//获取指定文件当前所在路径
path.parse(_filename)//把路径解析成一个对象(所在盘符,所在路径,文件名后缀)
需要注意的是由于js没有二进制类型,只有字符串数据类型,所以我们可能用buffer来转换数据类型,buffer是用ASCLL码来转换的,我们不必深究,只需记得,看到buffer的对象,使用toString()函数转换即可
然后是fs文件操作
不过我们先学一个小知识,同步和异步
用一个导图来表示
同步既为一步一步的执行
异步即为遇到阻塞我们可以先运行非阻塞的程序,等待阻塞消失或运行完毕。以fs来说既为不用等待读取完毕,就可以继续执行下面的代码。但通常我们会在异步函数中加上回调函数,作用为自己阻塞运行完了招呼线程过来执行。
回调函数
fs.readFile(filePath,"utf-8",(err,res)=>{//这里的utf-8是解码方式,我们就可以不用toString()来转换了
if(err){
console.log(err)
return
}
console.log(res)
})
好的那现在我们来学习fs文件操作
fs.readFile("文件路径名") //读取文件内容
fs.writeFile("文件路径名","写入的内容","解码方式",(err,data)=>{回调函数})//覆盖写入文件
fs.renameSync("旧文件名","新文件名");//修改文件名
fs.readdirSync(_dirname)//读取当前路径文件名列表数组
现在是http模块
//创建服务器
const server = http.createServer((requset,response)=>{
//requset 请求对象 // response 响应对象
//每接受导一次请求就来执行一次这里的代码
res.setHeader( 'Content-Type', 'text/plain; charset=utf-8')//设置响应头."text/plain"是响应类型,"charset=utf-8"是响应编码
let reqUrl = request.url //获取请求路径 (请求报文中第一行的第二个信息)
//比如如果请求是127.0.0.1:8080/123
那么获取到的就是/123
let reqMenthod = request.method //获取的请求方式 Get Post
requset.on("data",(postData)=>{
//收到请求时执行data这个方法
console.log(postData.toString())
})
})
//调用服务器对象的监听方法,让服务器监听浏览器的请求
server.listen(端口,(error)=>{
})
url 模块
url.pars(url,true);//获取get请求对象
npm和yarn
NPM是随同NodeJS一起安装的包管理工具
作用:
允许用户从NPM服务器下载别人编写的第三方包到本地使用。
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
yarn是由fasebook团队推出的新一代包管理工具,相比于npm更加快捷高效。
npm和yarn命令行区别

模块化问题
node不支持es6语法,但支持commonjs语法,我们可以通过第三方工具把es6转换为commonjs
安装工具:
安装工具
yarn g1oba1 add babe1-c1i browserify 或者npm instal1 babe1-c1i browserify -g
在自己项目执行
yarn add babe1-preset-es2015 或者 npm insta11 babel-preset-es2015 --save-dev
在根目录新建 .babelrc 文件
{
"presets":[
"es2015"
]
}
工具安装好后执行
babel src -d lib
然后正常 node 主文件即可