美文网首页
Node.js常用的内置模块

Node.js常用的内置模块

作者: 前端小码农呀 | 来源:发表于2019-11-12 21:39 被阅读0次

    常用的内置模块(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常用的内置模块

          本文链接:https://www.haomeiwen.com/subject/izgqictx.html