Node.js常用内置模块

常用的内置模块(path,fs,url,querystring,)

Node.js中提供了一些原生的模块,我们称之为内置模块。此外,也可以通过NPM命令安装第三方模块,安装完毕后使用方式和内置模块没有什么不同。
Node.js中的原生模块直接通过require就能获得,参考Node.js API文档来使用这些原生模块。

fs模块(主要是操作文件和文件夹)

fs 模块以 POSIX 标准函数的方式提供了与文件系统进行交互的API,fs中的每个方法都分同步和异步两种方式调用。通过fs模块可以获取一个目录结构,及其子目录或目录树下文件的特征,甚至可以读写、复制或者删除文件。

操作文件:

在.js的文件中可以提前引入模块和封装好的回调函数

var fs=require('fs')
var path=require('path')
const handleErr=function(str){
return function(err){
console.log(err?str+'失败!':str+'成功!')
}
}

创建文件:

fs.writeFile('文件名', '内容', handleError('创建文件'))

删除文件:
此处应注意只能删除空的文件,

fs.unlink('文件名', handleError('删除文件'))

修改文件:

fs.writeFile或者fs.appendFile

重命名文件:

fs.rename('文件名', '新名字', handleError('重命名成功'))

读取文件:

fs.readFile(path.resolve('文件路径'), { encoding: 'utf8'/*编码格式*/ }, function (err, data) {
     if (err) {
         console.error(err)
     }
     console.log(data)
})
操作目录:

创建目录:

fs.mkdir(path.resolve('目录名'), handleError('创建目录'))

删除目录:

fs.rmdir(path.resolve('目录名'), handleError('删除目录'))

重命名目录:

fs.rename(path.resolve('目录名'),path.resolve('新目录名'), handleError('重命名目录'))

查找目录的子目录:

fs.rmdir(path.resolve('dist'), handleError('删除目录'))
fs.readdir(path.resolve(''))

利用删除目录和递归进行目录的删除:

function removeDirRecusily(dirPath) {
    //查找目录是否存在
    try {
        //如果当前的代码报错,会把错误抛出,继续执行后面的代码
        fs.accessSync(dirPath)//判断dirPath是否是一个空的目录
        const files = fs.readdirSync(dirPath, { withFileTypes: true })//输出的是对象格式,能够区分文件和目录
        if (files.length === 0) {
            fs.rmdirSync(dirPath)//判断如果是空目录直接删除
        } else {
      //遍历目录
            files.forEach(function (file) {
                var filePath = path.resolve(dirPath, file.name)
                if (file.isFile()) {
                //如果是文件的话,就直接删除
                    fs.unlinkSync(filePath)
                } else if (file.isDirectory()) {
              //递归删除内部的子目录
                    removeDirRecusily(filePath)
                }
            })
            fs.rmdirSync(dirPath)
        }
    } catch (e) {
        console.error(e)
    }
}

path内置模块(主要是提供操作路径与获取路径的方法)

在.js文件中提前引入依赖:

var path = require('path')
console.log(__dirname)
console.log(__filename)

获取完整文件路径的文件名字:

console.log(path.basename('/Users/Documents/xiaoming/xiaomingming/新建.txt'))

获取文件所在的完整路径:

console.log(path.dirname('/Users/Documents/xiaoming/xiaomingming/新建.txt'))

文件的扩展名:

console.log(path.extname(__filename))

join用来拼接路径:

console.log(path.join('Documents', '/users', 'xiaoming', '..', './', '新建.tx'))

将路径或路径片段的序列解析为绝对路径。:

  console.log(path.resolve('Documents', '/users', 'xiaoming', '..', './', '新建.tx'))

规则:
1. 给定的路径序列从右到左进行处理,每个后续的 path 前置,直到构造出一个绝对路径。
2. 如果在处理完所有给定的 path 片段之后还未生成绝对路径,则再加上当前工作目录。
3. 生成的路径已规范化,并且除非将路径解析为根目录,否则将删除尾部斜杠。

url模块(url操作方法)

在.js文件中提前引入依赖

var url = require('url')

url模块主要处理URL(统一资源定位符),URL的格式构成:
协议+认证+主机+端口+路径+查询字符串+哈希值。

url模块的详解

url模块主要提供了两个模块:
url.format():负责把一个url的json对象转换成合法的url地址。
url.parse():负责把一个url地址转换成一个url的json对象。

var urlString = url.format({
    protocol: 'https',
    hostname: 'm.taobao.com',
    pathname: '/iphone/11dp',
    query: {
        page: 1,
        format: 'json'
    },
    hash: 'fddfsdf'
})
// 把 url obj 转换成 url string
console.log(url.parse(urlString))
// resolve可以拼凑路径
console.log(url.resolve(urlString, '/多普达/dopod.js'))

querystring模块(主要是查询url后面的字符串)

在.js文件中提前引入依赖

var querystring = require('querystring')

通过url.parse转换的url对象中的query对象是一个字符串,如果想进一步拿到查询字符串的键值对,需要再通过querystring来转换。
querystring.stringify():可以把查询字符串对象转换成字符串。querystring.stringify默认会对非ASCII字符进行百分比编码,即内部调用querystring.escape() 方法。

querystring.parse():可以把查询字符串转换成对象。querystring.parse默认会对经过百分比编码的字符进行解码操作,即内部调用了querystring.unescape()

// 把查询字符串转换成对象
console.log(querystring.parse('type=iphone11&num=70&ipod=true'))
var qs = querystring.stringify({
    type: 'iphone',
    num: 140,
    ipod: true,
    itunes: '    sss  '
}, '赠送', '!==', { encodeURIComponent: true })//把特殊的字符转为%形式的
console.log(qs)

Express

搭建一个Express的服务器
  1. 创建一个目录express-demo
  2. npm init - y把express-demo初始化成一个npm工程;
  3. 创建一个app.js
  4. npm install --save express安装express依赖;
  5. 在app.js里面编写:
var express = require('express')
var app = express()
// 接收来自客户端访问网站根路径的请求
app.get('/', function (req, res, next) {
    res.send('测试信息接受成功!')
})
// 监听3000端口,启动服务器
app.listen(3000, function (err) {
    if (err) {
        console.error(err)
    } else {
        console.log('express服务器启动成功')
    }
})

完成后在终端运行一下,在浏览器输入自己的ip地址后面加上:3000即可访问,简单的服务器完成

你可能感兴趣的:(Node.js常用内置模块)